Giriş
Merhaba, bu yazımızda php ile oturum işlemlerini yapacağız. Yazımız bir kaç bölümden oluşacaktır. Form sayfası nasıl oluşturulur, veritabanı bağlantısı nasıl yapılır, veri tabanında sorgu nasıl yapılır, google recaptcha nedir, güvenlik açıklarının nasıl önüne geçebiliriz gibi sorunları çözüme kavuşturacağız.O halde başlayalım.
phpMyAdmin ile Veritabanı Bağlantısı
baglan.php ismindeki dosyamıza veritabanı bilgilerimizi ekleyeceğiz.Kullanıcı adı, şifre ve veritabanı adını kendinize uygun bir şekilde doldurduktan sonra form sayfamıza geçebiliriz. Bu oluşturduğumuz dosyayı projemize dahil ederek veri tabanı bağlantısını sağlayacağız.
Form Sayfası
Form sayfamızda email ve şifre girilmesi için 2 input ve giriş butonumuz olacaktır. Bu inputlara ve butona uygun name oluşturarak daha sonra giriş kısmında kullanacağız. Bunun öncesinde daha önce oluşturduğumuz baglan.php adlı dosyayı form sayfamıza dahil etmeliyiz. Eğer etmezsek veritabanı bilgilerine hiçbir zaman ulaşamayacağımız için gerekli sorguları yapsak da başarılı olamayız. Dahil etmek için de require() fonksiyonunda yararlanacağız.
POST İşlemleri ve Hata Uyarıları
Öncelikle daha sonradan kolaylık olsun diye post edilen yani kullanıcı tarafından iletilen email ve sifre bilgilerini birer değişkene atayalım. Formda oluşabilecek hatalar için de durumu false olan bir hata değişkeni ve hatalarımızı ekleyebileceğimiz bir hata dizisi oluşturalım. Email veya şifre alanın boş bırakılması hataları oluştuğunda hatalar adındaki dizimize ekleyelim ve hata durumuzu true olarak değiştirelim.
Hataların Form Sayfasında Göstermek
Şimdi ise post edilen kullanıcı bilgilerin veritabanınında olup olmadığının kontrolünü sağlayalım. Eğer girilen kullanıcı bilgileri veri tabanında bulunamadıysa bunu da hata dizimize ekleyeceğiz.Bu kontroller giriş butonuna tıklandıktan sonra olacağı için ilk koşulumuz butona tıklanmasıdır.İkinci koşulumuz ise daha önce hatalar dizisinin boş olmasıdır yani herhangi bir hata bulunmamasıdır.Eğer hata var ise bu hataları count() fonksiyonu ile sayıp kaç adet hata bulunduğunu ve hataları foreach döngüsü kullanarak ekranda göstermesini sağlamalıyız.
Session Oluşturma ve Yönlendirme
Herhangi bir hatanın olmadığı durumda ise kullanıcının girdiği bilgileri sorgulatıp giriş başarılı ise giriş yapan kişinin bilgilerini tutmak için bir session oluşturup id sini atayabiliriz.Bunları sağladıktan sonra header() fonksiyonu ile kullanıcı istenilen sayfaya yönlendirilebilir.Giriş başarısız ise hatalar dizisine atayıp hatayı ekranda gösterebiliriz.
Giriş İsteği
Durumların kontrolünü yaptıktan sonra giriş isteği kontrolünü sağladığımızda php kodlarımız;
Oturum Başlatma ve Form Sayfası Son Hali
Giriş yapan kişiye session oluşturabilmemiz için ise kod bloğumuzun yukarısına session_start() fonksiyonu çağırmamız gerekmektedir. Bu koşulu da sağladıktan sonra form sayfamızın son hali aşağıdaki gibi olmaktadır.
Yönlendirilen panel.php Sayfası
Sonuç
Veri tabanı bağlantısını oluşturduk, form sayfasında herhangi bir hata var ise sayfamızda bu hataları gösterdik. Hata yoksa kullanıcı giriş isteğini aldık. Kullanıcı bilgilerini veri tabanında sorgulatıp doğru ise kullanıcının yönlendirilmesini gerçekleştirdik.
Yazımızın devamı için lütfen tıklayınız.
Merhaba, bu yazımızda php ile oturum işlemlerini yapacağız. Yazımız bir kaç bölümden oluşacaktır. Form sayfası nasıl oluşturulur, veritabanı bağlantısı nasıl yapılır, veri tabanında sorgu nasıl yapılır, google recaptcha nedir, güvenlik açıklarının nasıl önüne geçebiliriz gibi sorunları çözüme kavuşturacağız.O halde başlayalım.
phpMyAdmin ile Veritabanı Bağlantısı
baglan.php ismindeki dosyamıza veritabanı bilgilerimizi ekleyeceğiz.Kullanıcı adı, şifre ve veritabanı adını kendinize uygun bir şekilde doldurduktan sonra form sayfamıza geçebiliriz. Bu oluşturduğumuz dosyayı projemize dahil ederek veri tabanı bağlantısını sağlayacağız.
Kod:
<?php
$sunucu="localhost";
$kullanici_adi="------";
$sifre="------";
$veritabani="------";
mysqli_query("SET NAMES UTF8");
$baglan= mysqli_connect($sunucu,$kullanici_adi,$sifre,$veritabani);
if(!$baglan)
{
die("Baglanti Hatasi: " . mysqli_connect_error());
}
?>
Form sayfamızda email ve şifre girilmesi için 2 input ve giriş butonumuz olacaktır. Bu inputlara ve butona uygun name oluşturarak daha sonra giriş kısmında kullanacağız. Bunun öncesinde daha önce oluşturduğumuz baglan.php adlı dosyayı form sayfamıza dahil etmeliyiz. Eğer etmezsek veritabanı bilgilerine hiçbir zaman ulaşamayacağımız için gerekli sorguları yapsak da başarılı olamayız. Dahil etmek için de require() fonksiyonunda yararlanacağız.
Kod:
<!DOCTYPE html>
<?php
require("baglan.php");
?>
<html>
<head>
<**** http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Giriş Yap</title>
</head>
<body>
<form method="POST" action="">
Email <input type="email" name="email" ></input><br><br>
Sifre <input type="password" name="sifre" ></input><br><br>
<button type="submit" name="giris_yap" >Giriş</button><br><br>
</form>
</body>
</html>
Öncelikle daha sonradan kolaylık olsun diye post edilen yani kullanıcı tarafından iletilen email ve sifre bilgilerini birer değişkene atayalım. Formda oluşabilecek hatalar için de durumu false olan bir hata değişkeni ve hatalarımızı ekleyebileceğimiz bir hata dizisi oluşturalım. Email veya şifre alanın boş bırakılması hataları oluştuğunda hatalar adındaki dizimize ekleyelim ve hata durumuzu true olarak değiştirelim.
Kod:
$email=$_POST["email"];
$sifre=$_POST["sifre"];
$hata=false;
$hatalar=array();
if(empty($email)){
$hata = true;
$hatalar[] = 'Email alanı boş bırakılamaz.';
}
if(empty($sifre)) {
$hata = true;
$hatalar[] = 'Şifre alanı boş bırakılamaz.';
}
Şimdi ise post edilen kullanıcı bilgilerin veritabanınında olup olmadığının kontrolünü sağlayalım. Eğer girilen kullanıcı bilgileri veri tabanında bulunamadıysa bunu da hata dizimize ekleyeceğiz.Bu kontroller giriş butonuna tıklandıktan sonra olacağı için ilk koşulumuz butona tıklanmasıdır.İkinci koşulumuz ise daha önce hatalar dizisinin boş olmasıdır yani herhangi bir hata bulunmamasıdır.Eğer hata var ise bu hataları count() fonksiyonu ile sayıp kaç adet hata bulunduğunu ve hataları foreach döngüsü kullanarak ekranda göstermesini sağlamalıyız.
Kod:
if ($hata)
{
$toplamhata = count($hatalar);
echo '<div class="alert alert-danger" role="alert">' . $toplamhata . ' Hata bulundu. Lütfen bu hataları giderin ve tekrar deneyin.</div>';
foreach ($hatalar as $hatalarr)
{
echo '<div class="alert alert-warning" role="alert">' . $hatalarr . '</div>';
}
}
Herhangi bir hatanın olmadığı durumda ise kullanıcının girdiği bilgileri sorgulatıp giriş başarılı ise giriş yapan kişinin bilgilerini tutmak için bir session oluşturup id sini atayabiliriz.Bunları sağladıktan sonra header() fonksiyonu ile kullanıcı istenilen sayfaya yönlendirilebilir.Giriş başarısız ise hatalar dizisine atayıp hatayı ekranda gösterebiliriz.
Kod:
if(!$hata)
{
$sorgu="select * from users where email='$email' and sifre='$sifre' ";
$sonuc=$baglan->query($sorgu);
$giris=$sonuc->fetch_assoc();
if($giris)
{
$_SESSION["id"]=$giris["id"];
header("********:panel.php");
}
else
{
$hata = true;
$hatalar[] ='Hatalı giriş.Üyelik bulunamadı.';
}
}
Durumların kontrolünü yaptıktan sonra giriş isteği kontrolünü sağladığımızda php kodlarımız;
Kod:
if(isset($_POST["giris_yap"]))
{
if(!$hata)
{
$sorgu="select * from users where email='$email' and sifre='$sifre' ";
$sonuc=$baglan->query($sorgu);
$giris=$sonuc->fetch_assoc();
if($giris)
{
$_SESSION["id"]=$giris["id"];
header("********:panel.php");
}
else
{
$hata = true;
$hatalar[] ='Hatalı giriş.Üyelik bulunamadı.';
}
}
if ($hata)
{
$toplamhata = count($hatalar);
echo '<div class="alert alert-danger" role="alert">' . $toplamhata . ' Hata bulundu. Lütfen bu hataları giderin ve tekrar deneyin.</div>';
foreach ($hatalar as $hatalarr)
{
echo '<div class="alert alert-warning" role="alert">' . $hatalarr . '</div>';
}
}
}
Giriş yapan kişiye session oluşturabilmemiz için ise kod bloğumuzun yukarısına session_start() fonksiyonu çağırmamız gerekmektedir. Bu koşulu da sağladıktan sonra form sayfamızın son hali aşağıdaki gibi olmaktadır.
Kod:
<!DOCTYPE html>
<?php
session_start();
require("baglan.php");
?>
<html>
<head>
<**** http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Giriş Yap</title>
</head>
<body>
<form method="POST" action="">
Email <input type="email" name="email" ></input><br><br>
Sifre <input type="password" name="sifre" ></input><br><br>
<button type="submit" name="giris_yap" >Giriş</button><br><br>
</form>
<?php
$email=$_POST["email"];
$sifre=$_POST["sifre"];
$hata=false;
$hatalar=array();
if(empty($email)){
$hata = true;
$hatalar[] = 'Email alanı boş bırakılamaz.';
}
if(empty($sifre)) {
$hata = true;
$hatalar[] = 'Şifre alanı boş bırakılamaz.';
}
if(isset($_POST["giris_yap"]))
{
if(!$hata)
{
$sorgu="select * from users where email='$email' and sifre='$sifre' ";
$sonuc=$baglan->query($sorgu);
$giris=$sonuc->fetch_assoc();
if($giris)
{
$_SESSION["id"]=$giris["id"];
header("********:panel.php");
}
else
{
$hata = true;
$hatalar[] ='Hatalı giriş.Üyelik bulunamadı.';
}
}
if ($hata)
{
$toplamhata = count($hatalar);
echo '<div class="alert alert-danger" role="alert">' . $toplamhata . ' Hata bulundu. Lütfen bu hataları giderin ve tekrar deneyin.</div>';
foreach ($hatalar as $hatalarr)
{
echo '<div class="alert alert-warning" role="alert">' . $hatalarr . '</div>';
}
}
}
?>
</body>
</html>
Yönlendirilen panel.php Sayfası
Kod:
<!DOCTYPE html>
<?php
session_start();
require("baglan.php");
?>
<html>
<head>
<**** http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Panel</title>
</head>
<body>
<h2>Panel sayfasına hoş geldiniz.</h2>
</body>
</html>
Veri tabanı bağlantısını oluşturduk, form sayfasında herhangi bir hata var ise sayfamızda bu hataları gösterdik. Hata yoksa kullanıcı giriş isteğini aldık. Kullanıcı bilgilerini veri tabanında sorgulatıp doğru ise kullanıcının yönlendirilmesini gerçekleştirdik.
Yazımızın devamı için lütfen tıklayınız.