Eki
14
2012

PHP Kullanıcı Girişi

Daha önceki yazımızda PHP ile kullanıcı girişi kontrolü yapmıştık. Uygulamada kullanıcı adı ve şifre ayar.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 da uyeler 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.php adı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.


 
Uygulamayı ve kaynak kodlarını indirmek için tıklayınız..!
 

Benzer Yazılar

Yazar Hakkında:

Öğr. Gör. Murat YAZICI, Artvin Çoruh Üniversitesi, Artvin Meslek Yüksekokulu, Bilgisayar Teknolojileri Bölümü

10 Yorum + Yorum Yaz

  • teşekkürler ne çok karışık nede çok basit

  • teşekkürler ellerine sağlık

  • (yeni öğreniyorum )
    admin.php sayfasındaki include(“ayar.php”); ne için gerekli ?
    admin.php session kontrolü yapıp duruma göre sonuç gösterdik
    veritabanı bağlantısı şartmı ?

    • Evet ayar.php dosyası veritabanına bağlanmak için şart.
      admin.php sayfasındaki session kontrolü kullanıcı bu sayfayı adres satırına direkt yazarak mı ulaşmaya çalışmış, yoksa login.php sayfasında gerçekten doğru kullanıcı adı ve şifreyi yazarak mı gelmiş bunun kontrolü için yapılıyor.
      Zaten SESSION["login"] = “true” değerini login.php sayfasının 13.satırında yetkilendirme işlemi sonrasında alıyor.

  • Ellerine saglık ustam tam aradıgım

  • Kullanıcı kayıt ve girişe kadar hiçbir sıkıntım yok sorunum şu ki kullanıcı giriş yaptıktan sonra index.php sayfasında ismini nasıl göstericem? Bir de bağlantılı olarak diğer sorun şu index.php sayfasından üyemiz giriş yaptı tekrar aynı index.php sayfasına yönlendirmede sorun yaşıyorum index2.php sayfasına yönlendirmekte etik açıdan doğru değil diye düşünüyorum bu sorunu nasıl çözebilirim.

  • çok ihtiyacım vardı ellerine emeğine sağlık, çok güzel anlatmışsın

  • Öncelikle paylastıgınız bu guzel bılgıler ıcın tesekkurler.
    Benım en cok merak ettıgım konu şu;

    kullanıcılar aynı baglantıya gırdıgı halde örnegın http://www.site.com/profil.php adresine gırdıgı halde her kullanıcının karsısına farklı bılgılerın gelmesı. Bunu nasıl saglayabılırız ? Sayfa ıcerısınde kullanıcı kontrolu yapılıyor ve ona gore bır sayfa cıkarılıyor. Bunu nasıl yapabılırız ?

  • Süper Teşekkürler.

  • Çok teşekkür ederim çok işime yaradı :)