Anasayfa > Programlama > PHP > PHP + MySQL + Apache Kullanilarak KullaniciAdi ve Sifre Sorgulamasi

PHP + MySQL + Apache Kullanilarak KullaniciAdi ve Sifre Sorgulamasi




Once verilerin saklanacagi MySQL tablosunu yaratalim:

SQL:

  1.   
  2.   # phpMyAdmin MySQL-Dump
  3.   
  4.   # version 2.2.3
  5.   
  6.   # http://phpwizard.net/phpMyAdmin/ 
  7.   
  8.   # http://phpmyadmin.sourceforge.net/ (download page)
  9.   
  10.   #
  11.   
  12.   # Host: localhost
  13.   
  14.   # Generation Time: Jun 12, 2003 at 04:56 AM
  15.   
  16.   # Server version: 3.23.49
  17.   
  18.   # PHP Version: 4.1.2
  19.   
  20.   # Database : `sceylani_veritabani`
  21.   
  22.   # --------------------------------------------------------
  23.   
  24.   
  25.   #
  26.   
  27.   # Table structure for table `site_kullanicilari`
  28.   
  29.   #
  30.   
  31.   
  32.   DROP TABLE IF EXISTS site_kullanicilari;
  33.   
  34.   CREATE TABLE site_kullanicilari ( 
  35.   
  36.   k_id int(12) NOT NULL auto_increment,
  37.   
  38.   k_adi varchar(32) NOT NULL default '',
  39.   
  40.   k_sifresi varchar(255) NOT NULL default '',
  41.   
  42.   k_eposta varchar(255) NOT NULL default '',
  43.   
  44.   k_ger_adi varchar(255) NOT NULL default '',
  45.   
  46.   k_ger_soyadi varchar(255) NOT NULL default '',
  47.   
  48.   k_yasi date NOT NULL default '0000-00-00',
  49.   
  50.   k_meslegi varchar(64) NOT NULL default '',
  51.   
  52.   k_webadresi varchar(255) NOT NULL default '',
  53.   
  54.   k_ilgialanlari varchar(255) NOT NULL default '',
  55.   
  56.   k_icq int(16) NOT NULL default '0',
  57.   
  58.   k_sonerisim timestamp(14) NOT NULL,
  59.   
  60.   PRIMARY KEY  (k_id),
  61.   
  62.   UNIQUE KEY k_adi (k_adi) 
  63.   
  64.   ) TYPE=MyISAM;


Bu SQL sorgusunu MySQL sunucusu uzerinde uygulayiniz.

Asagida yer alan kucuk program ile istemciye HTTP 401 basligi gonderilerek istemcinin bir kucuk
pencerede kullanici adi ve sifresinin soruldugu menusunun acilmasi saglanmis ve bu sekilde elde
edilen bilgi MySQL uzerinde sorgulanarak istemcinin kimlik dogrulamasi yapilmistir...

Sizde deneme yapmadan once tablonuzda bir kac kullanici yaratmayi unutmayiniz!

Program : Iki ana dosyadan olusuyor.Birincisi MySQL baglanti kutuphanesi db_genel_gelismis.inc ve
kimlik_dogrula.php.

db_genel_gelismis.inc

Onemli : Bu kutuphanede yukaridaki tablonun yaratildigi veritabani ismi,kullanici adi ve sifreniz
bolumleri dogru bir sekilde girilmelidir.

PHP:

  1.   
  2.   <?php 
  3.   
  4.   //
  5.   
  6.   // 06-01-2003 08:14 PM
  7.   
  8.   // PHP ve Apache kullanilarak kullanici kimliginin dogrulanmasi:
  9.   
  10.   // Turk-php.com 2003
  11.   
  12.   // Serkan Ceylani(serkan@turk-php.com)
  13.   
  14.   //
  15.   
  16.   //
  17.   
  18.   // MySQL Baglanti kutuphanemiz:
  19.   
  20.   
  21.   $dbhost             = 'localhost';
  22.   
  23.   $dbkuladi           = '';
  24.   
  25.   $dbkulsifre         = '';
  26.   
  27.   $default_veritabani = '';
  28.   
  29.   
  30.   // BU NOKTADAN SONRA BIR SEYI DEGISTIRMEYINIZ!
  31.   
  32.   
  33.   $MYSQL_ERRNO = '';
  34.   
  35.   $MYSQL_ERROR = '';
  36.   
  37.   
  38.   function db_baglan($db_ismi='') { 
  39.   
  40.   
  41.   global $dbhost,$dbkuladi , $dbkulsifre, $default_veritabani;
  42.   
  43.   global $MYSQL_ERRNO, $MYSQL_ERROR;
  44.   
  45.   
  46.   $link_id = mysql_connect($dbhost,$dbkuladi, $dbkulsifre);
  47.   
  48.   if(!$link_id) { 
  49.   
  50.   $MYSQL_ERRNO = 0;
  51.   
  52.   $MYSQL_ERROR = "Baglanti hatasi olustu.Sunucu adi :  $dbhost.";
  53.   
  54.   return 0;
  55.   
  56.   }   else if(empty($dbismi) && !mysql_select_db($default_veritabani)) { 
  57.   
  58.   $MYSQL_ERRNO = mysql_errno();
  59.   
  60.   $MYSQL_ERROR = mysql_error();
  61.   
  62.   return 0;
  63.   
  64.   }   else if (!empty($db_ismi) && !mysql_select_db($db_ismi)) { 
  65.   
  66.   $MYSQL_ERRNO = mysql_errno();
  67.   
  68.   $MYSQL_ERROR = mysql_error();
  69.   
  70.   return 0;
  71.   
  72.   }   else 
  73.   
  74.   return $link_id;
  75.   
  76.   } 
  77.   
  78.   
  79.   function sql_hatasi() { 
  80.   
  81.   global $MYSQL_ERRNO, $MYSQL_ERROR;
  82.   
  83.   if(empty($MYSQL_ERROR)) { 
  84.   
  85.   $MYSQL_ERRNO = mysql_errno();
  86.   
  87.   $MYSQL_ERROR = mysql_error();
  88.   
  89.   } 
  90.   
  91.   return "$MYSQL_ERRNO: $MYSQL_ERROR";
  92.   
  93.   } 
  94.   
  95.   
  96.   
  97.   ?>


kimlik_dogrula.php

PHP:

  1.   
  2.   <?php 
  3.   
  4.   include ("mysql/db_genel_gelismis.inc");
  5.   
  6.   
  7.   function kimligi_dogrula($kullanici,$sifre) { 
  8.   
  9.   
  10.   //MySQL Baglantimiz,
  11.   
  12.   $link_id = db_baglan();
  13.   
  14.   //Bazi guvenlik tedbirleri,
  15.   
  16.   $g_kullanici = strtr(addslashes($kullanici),array('_'=>'\_','%'=>'\%'));
  17.   
  18.   
  19.   $r = mysql_query("SELECT k_sifresi,k_sonerisim FROM site_kullanicilari WHERE k_adi
  20.   
  21.   LIKE '$g_kullanici'") or die("Gecersiz Sorgu : " . mysql_error());
  22.   
  23.   
  24.   if (mysql_num_rows($r) == 1) { 
  25.   
  26.   
  27.   $ob = mysql_fetch_object($r);
  28.   
  29.   
  30.   if ($ob->k_sifresi == $sifre){ 
  31.   
  32.   
  33.   $zaman = time();
  34.   
  35.   
  36.   if (($zaman - $ob->k_sonerisim) > (15 * 60)) { 
  37.   
  38.   
  39.   return false;
  40.   
  41.   
  42.   } else { 
  43.   
  44.   
  45.   mysql_query("UPDATE site_kullanicilari SET k_sonerisim=NOW() WHERE k_adi
  46.   
  47.   
  48.   LIKE '$g_kullanici'")  or die("Gecersiz Sorgu : " . mysql_error());
  49.   
  50.   
  51.   return true;
  52.   
  53.   
  54.   } 
  55.   
  56.   
  57.   } else { 
  58.   
  59.   
  60.   return false;
  61.   
  62.   } 
  63.   
  64.   } 
  65.   
  66.   } 
  67.   
  68.   if (! kimligi_dogrula($_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW'])) { 
  69.   
  70.   header('WWW-Authenticate: Basic realm="Web Sitesi"');
  71.   
  72.   header('HTTP/1.0 401 Unauthorized');
  73.   
  74.   
  75.   echo "Gecerli bir kullaniciadi/sifre ikilisi girmelisiniz!";
  76.   
  77.   
  78.   exit;
  79.   
  80.   
  81.   } else { 
  82.   
  83.   
  84.   echo "Giris Tamamlandi!";
  85.   
  86.   
  87.   } 
  88.   
  89.   
  90.   ?>


Ornekler icin asagidaki linkleri kullanabilirsiniz:

Giris yapabilmek icin Kullanici adi:admin ve Sifre:sifre giriniz,

http://turk-php.com/ornekler/kimlik_dogrula.php

Kaynak kodlarini goruntulemek icin asagidaki linki kullanabilirsiniz:

http://www.turk-php.com/kodgoster/http://www.turk-php.com/ornekler/kimlik_dogrula.php


Basarilar,
Serkan

Yayın Tarihi 07/21/03

Program:
http://turk-php.com/ornekler/kimlik_dogrula.php

Bu makale hakkında ek bilgi eklemek için buraya tıklayınız

Bu makalenin yazar yada kaynağını bildirmek için tıklayınız.

Digg this Post! Add Post to del.icio.us Bookmark Post in Technorati Furl this Post!
Eklenme tarihi: 3-2-2006  Okunma: 1939

Bu Makaleye Verilen Puan:    Bu makaleye puan verilmemiş.
Bu Makaleye Puan Ver  

Bölüm Başlık Kullanıcı Yorumları


Bu makaleye yorum gönderilmemiş, ilk yorumu sen gönder !
Reklam Netinternet
Bazı hakları saklıdır: İçeriğin editör ve yazarlarımız tarafından oluşturulan kısımları ve site tasarımının hakkı saklıdır.  Bu sayfa en iyi 1280x1024 ve 1024x768 çözünürlükte izlenir.
Powered by BilgiPortal v2.2
Emlak Yorumlar Müzik estetik