Daha önceki yazımızda PHP ile kullanıcı girişi kontrolü yapmıştık. Uygulamada kullanıcı adı ve şifreayar.php adındaki bir dosyada tutulmaktaydı. Fakat, profesyonel web uygulamalarında kullanıcı bilgileri dosyada değil de veritabanı (database) dediğimiz yapılarda tutulur. Gelin şimdi bu kontrolün veritabanına bağlanarak nasıl yapıldığını inceleyelim:
Önce ayar.php adında bir dosya oluşturarak veritabanına bağlanmak için gerekli kodları yazalım:
ayar.php
<?php $host="localhost"; $db="mydb"; $user="murat"; $pass="123456"; $conn=@mysql_connect($host,$user,$pass) or die("Mysql Baglanamadi"); mysql_select_db($db,$conn) or die("Veritabanina Baglanilamadi"); mysql_set_charset('latin5',$conn); ?>
Bu uygulama için mydb adında bir veritabanı oluşturularak bu veritabanına erişme yetkisine sahip kullanıcı adı murat olan, şifresi de 123456 olan bir kullanıcı tanımlanmıştır. mydb veritabanında dauyeler adında bir tablo oluşturularak içerisinde sırasıyla id, username ve password sütunları oluşturulmuştur.
Şimdi kullanıcıdan kullanıcı adı ve şifresini girmesi için bir form yapalım. Bunun için index.php dosyasını oluşturuyoruz.
index.php
<form action="login.php" method="POST"> <table align="center"> <tr> <td>Kullanici Adi</td> <td>:</td> <td><input type="text" name="kadi"></td> </tr> <tr> <td>Sifre</td> <td>:</td> <td><input type="password" name="sifre"></td> </tr> <tr> <td></td> <td></td> <td><input type="submit" value="Giris"></td> </tr> </table> </form>
Burada 1 adet kullanıcı adı kutusu,1 adet şifre kutusu ve giriş butonu oluşturduk. Şimdi giriş butonuna tıklandığında girilen kullanıcı adı ve şifrenin doğru olup olmadığını test eden login.phpadında bir dosya oluşturuyoruz.
login.php
<?php include("ayar.php"); ob_start(); session_start(); $kadi = $_POST['kadi']; $sifre = $_POST['sifre']; $sql_check = mysql_query("select * from uyeler where username='".$kadi."' and password='".$sifre."' ") or die(mysql_error()); if(mysql_num_rows($sql_check)) { $_SESSION["login"] = "true"; $_SESSION["user"] = $kadi; $_SESSION["pass"] = $sifre; header("Location:admin.php"); } else { if($kadi=="" or $sifre=="") { echo "<center>Lutfen kullanici adi ya da sifreyi bos birakmayiniz..! <a href=javascript:history.back(-1)>Geri Don</a></center>"; } else { echo "<center>Kullanici Adi/Sifre Yanlis.<br><a href=javascript:history.back(-1)>Geri Don</a></center>"; } } ob_end_flush(); ?>
Eğer girilen kullanıcı adı ve şifre doğru ise admin.php sayfasına yönlendiriyoruz, yanlış ise kullanıcı adı/şifre yanlış şeklinde ekranda hata mesajı yazdırıyoruz. Şimdi gelelim admin sayfamıza. Bunun için admin.php adında dosya oluşturuyoruz.
admin.php
<?php include("ayar.php"); ob_start(); session_start(); if(!isset($_SESSION["login"])){ header("Location:index.php"); } else { echo "<center>Admin sayfasina hosgeldiniz..! "; echo "<a href=logout.php>Guvenli cikis</a></center>"; } ?>
Eğer kullanıcı siteye giriş yapmadan adres çubuğuna direkt admin.php yazarsa bu sayfaya erişemeyecek ve index.php giriş sayfasına yönlendirilecektir. Son olarak siteden çıkış yaparken yazmamız gereken koda. Bunun için de logout.php adında bir sayfa oluşturuyoruz.
logout.php
<?php session_start(); ob_start(); session_destroy(); echo "<center>Cikis Yaptiniz. Ana Sayfaya Yonlendiriliyorsunuz.</center>"; header("Refresh: 2; url=index.php"); ob_end_flush(); ?>
Çıkış linkine tıkladığımız zaman oturum bilgileri sonlandırılır ve 2 sn sonra anasayfaya yönlendirilme işlemi yapılır.
Birde videolu yapımını izleyelim