Giriş yaparken veritabanınndan kullanıcı bilgileri almak
Herkese iyi günler. Kullanıcının giriş yaptığı zaman çalıştırdığım kendimce yapmış olduğum sistemcik budur. Session a girerken yazmış olduğu e postayı atıyorum lakin bana ad, soyad, id' de lazım. Bunu giriş yapan kullanıcıların verilerini veritabanınndan nasıl çekebilirim? Veritabanında kayıt olurken ad,soyadı kaydediyorum. Burada onları alıp session kaydetmek istiyorum. Buraya kadar kendi bilgimce geldim lakin onu nasıl yaparım kafamda kuramıyorum. Kısacası $_SESSION["userEmail"] = $userEmail; yazan yerde giriş yapan kullanıcıya ait ad, soyad ve id sini veritabanından çekip session a kaydetmek istiyorum.
<?php
session_start();
require_once 'connection.php';
if ($_POST) {
$userEmail = htmlspecialchars(trim($_POST['userEmail']));
$userPassword = htmlspecialchars(trim(md5($_POST['userPassword'])));
if (empty($userEmail) || empty($userPassword)) {
echo "Boş bırakmayın";
} else {
if (filter_var($userEmail, FILTER_VALIDATE_EMAIL)) {
$query = $db->prepare("SELECT * FROM users WHERE userEmail = ? AND userPassword = ?");
$query->execute(array($userEmail, $userPassword));
if ($query->rowCount()) {
$_SESSION["userEmail"] = $userEmail;
header('Location: ../mail/');
} else {
echo "Böyle bir kullanıcı yok";
}
} else {
echo "$userEmail geçerli bir eposta değil.";
}
}
} else {
echo "POST MALASEF YOK";
die();
}
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (3)
query koduna fetch
eklersen array tipinde sorgu sonucunu döndürür. Bir session anahtarı oluşturup dönen tüm bilgileri tutabilirsin.
$query = $db->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$query->execute([$userEmail, $userPassword]);
$user = $query->fetch();
$user
değişkeni ilgili kullanıcının tüm veritabanı kayıtlarını döndürmeli. Bu değerli aşağıdaki gibi bir session anahtarına yazıp kullanabilirsin.
$_SESSION['user'] = $user;
echo $_SESSION['user']['id'];