Herkese selamlar. Bir önceki konumuzda PHP İle üye kaydı alıp, bu verilerin veritabanında tutulmasına bakmıştık. 2.bölümde ise üye giriş mantığına bakacağız. Hemen başlayalım! :)

Diğer Bölümler:

PHP İle Sıfırdan Üyelik Sistemi Kodluyoruz! - Bölüm 1

PHP İle Sıfırdan Üyelik Sistemi Kodluyoruz! - Bölüm 2

PHP İle Sıfırdan Üyelik Sistemi Kodluyoruz! - Bölüm 3

PHP İle Sıfırdan Üyelik Sistemi Kodluyoruz! - Bölüm 4

PHP İle Sıfırdan Üyelik Sistemi Kodluyoruz! - Bölüm 5 Final

Adım 10 - Kayıt Sonrası Login Sayfasına Yönlendirme

Bir önceki konumuzda, üye kaydı sonrasında, kaydın başarıyla oluşması ve bildirimini göstermiştik. Şimdi ise, kayıt başarıyla tamamlanırsa, üyeyi, yeni hazırlayacağımız login.php sayfasına yönlendireceğiz. Bunun için register.php dosyamızda bir takım değişiklikler yapıyoruz.



register.php dosyamızda yaptığımız tek değişiklik, eğer üye kaydı başarıyla tamamlanırsa:

header("location: register.php?type=success");



olan kısmı;

header("location: login.php?type=success");



yaptık. Yani kayıt başarılıysa yeni üyemiz login.php sayfasına yönlenecek. Eğer kayıt başarısız ise register.php'de kalacak ve hatasını ekrana yazdırmış olacağız. Şimdi geldi login.php sayfamızı hazırlamaya.

Adım 11 - Üye Girişi (Login) Sayfasının HTML Kısmının Hazırlanması

Bu kısımda ekleyeceğimiz form için yine bootstrap'ın snippetlerinden yararlanacağım. İlk etapta ana dizinimde login.php adında bir sayfa oluşturup, content alanımı yani header ve footer dosyalarımı dahil ediyorum. Ardından sayfamın HTML formatındaki form kısmını hazırlıyorum.



Sayfa görüntüsü:





Harika! Giriş formum hazır. Şimdi sıra geldi PHP kodlarımızı yazmaya ve giriş formunu işlevli hale getirmeye.

Adım 12 - Üye Girişi (Login) Sayfasının PHP Kısmının Hazırlanması

Sıra geldi üye girişinin hazırlanmasına. Bu kısımda ise üye, kullanıcı adı ve şifresiyle giriş yaptığı zaman, üyenin girmiş olduğu username ve md5 formatında password'ü, veritabanından birlikte kontrol ettiriyoruz. Burada dikkat etmeniz gereken, kontrolü sağlarken mutlaka WHERE yoluna hem username hem de password'ü dahil etmeniz. Çünkü aynı password'e sahip kullanıcılar varsa md5'leri aynı olabilir ve yanlışlıkla başka kullanıcının hesabına girebilir. Bu yüzden ikisini tek sorguda kontrol ediyoruz.

PHP Kodları


if ($_GET["type"] == 'success') {
$basarili = '

';
}

if ($_POST) {

$kullaniciadi = $_POST['username'];
$password = $_POST['passwordlogin'];
$passwordsecurity = md5($password);

$uyekontrol = "SELECT username, password FROM users WHERE username = '$kullaniciadi' AND password = '$passwordsecurity'";
$uyekontrolet = $conn->query($uyekontrol);
$uyesaydir = $uyekontrolet->rowCount();

if ($uyesaydir > 0) {
echo '';
$girisbasarili = '';
} else {
header("location: login.php?type=error");
}
}


HTML Kodları






echo $basarili;
if ($_GET["type"] == 'error') {
echo '';
}
?>
















Bu işlemde ne yaptığımıza kısaca değinelim.


if ($_GET["type"] == 'success') {
$basarili = '

';
}



Bunu yazmamızdaki sebep, register.php de üyeliğini başarıyla oluşturan kullanıcıları, hatırlarsanız login.php?type=success linkine yönlendirdik. Burada ise, eğer get ile gönderilmiş yani urlde tanımlı type = success görürsen, $basarili değişkenine Kaydınız Başarıyla Oluşturuldu! Şimdi Giriş Yapabilirsiniz! şeklinde bir uyarı ekledik ve bunu da formun üzerine echo ile yazdırdık.


if ($_POST) {
$kullaniciadi = $_POST['username'];
$password = $_POST['passwordlogin'];
$passwordsecurity = md5($password);



Bu kısımda tıpkı registerde olduğu gibi giriş formunda POST edilen inputları tanımladık. Parolayı tekrardan md5 olarak tanıtmamızın sebebi , veritabanına md5 formatında kaydettiğimiz için. Aksi halde yazılan parolayı olduğu gibi doğrulamaya çalışacak hiçbir zaman eşleşmeyecektir.


$uyekontrol = "SELECT username, password FROM users WHERE username = '$kullaniciadi' AND password = '$passwordsecurity'";
$uyekontrolet = $conn->query($uyekontrol);
$uyesaydir = $uyekontrolet->rowCount();



Bu kısımda üyenin bilgilerini doğru girip girmediğini kontrol etmek için hem username hem de password sütununu seçerek, üyenin girdiği username ve password'ü veritabanında sorgulattık ve bulunan satırları saydırdık.


if ($uyesaydir > 0) {
echo '';
$girisbasarili = '

';
} else {
header("location: login.php?type=error");
}



Son olarak, eğer gerçekten bu username ve password'ü içeren bir satır varsa, bir style echo ederek giriş formunu gizledik ve ardından Hoşgeldiniz Sayın . $kullaniciadi diyerek üyeye hoş geldiniz uyarısı yazdırdık ve kullanıcı adını ekledik. Eğer bilgiler yanlış ise linkimizin sonuna type=error tanımlamasını yaptık.

Formun İçindeki PHP:


if ($_GET["type"] == 'error') {
echo '

';
}



Formun içinde ise, eğer get ile gönderilmiş bir type = error varsa Kullanıcı Adı veya Şifreniz Yanlış! şeklinde bir uyarı yazdırdık.

Not: Bu tür uygulamalarda hatanın neyden kaynaklandığını yazdırabilir, kullanıcı adını ve şifreyi ayrı ayrı sorgulatıp örn: ''Kullanıcı Adınız Yanlış'' // ''Şifreniz Yanlış'' // ''Böyle Bir Üye Bulunamadı'' şeklinde sonuçlar yazdırabilirsiniz. Burada anlattıklarım en basit haliyle mantığını kavramamıza yöneliktir.

Not 2: Yukarıda kullandığım echo '