Sadece giriş metodunu aşağıdaki gibi değiş, tüm kodları paylaşmıyorum, giriş metodunu paylaşıyorum. Değişiklik yaptığım tek yer sorgu ve binding işlemi. PDO kullanırken binding işlemi yapacaksanız "?" kullanmayın, doğrudan binding key kullanın aşağıdaki gibi. Soru işaretini tek parametreli basit sorgularda kolaya kaçmak için kullanabilirsiniz. Onun dışında okuma zorluğu ve karmaşadan başka bir şey değil. Ayrıca binding işleminin yapıldığı if/else bloğunu da sadeleştirdim.
public function giris($kul_mail,$kul_sifre,$beni_hatirla) {
try {
global $rec;
if (!$rec->dogrulama()) {
throw new Exception(ses('hata'));
}
$sorgu=$this->db->prepare("SELECT * FROM kullanicilar WHERE (kul_mail=:kullanici or kul_tel=:kullanici or kul_adi=:kullanici) AND kul_sifre=:parola");
$bind = ['kullanici' => $kul_mail, 'parola' => sifreleme($kul_sifre)];
if (isset($_COOKIE['ebtoturum'])) {
$liste=json_decode($_COOKIE['ebtoturum']);
$cozulen=openssl_decrypt($liste->kul_sifre, "AES-128-ECB", "sifre_coz");
if ($_POST['kul_sifre']==$liste->kul_sifre) {
$bind['parola'] = sifreleme($cozulen);
}
}
$sorgu->execute($bind);
if ($sorgu->rowCount()!=0) {
$kullanici=$sorgu->fetch(PDO::FETCH_ASSOC);
if ($kullanici['kul_durum']==0) {
throw new Exception("Bu Kullanıcının Oturum Açması Engellenmiştir", 1);
}
foreach ($kullanici as $key => $value) {
$_SESSION[$key]=$value;
}
if ($kullanici['auth_onay']==0) {
$_SESSION['guvenlik']=true;
}
$_SESSION["kul_tamisim"]=$_SESSION["kul_isim"]." ".$_SESSION["kul_soyisim"];
if (empty($beni_hatirla)) {
@setcookie("ebtoturum",json_encode(@$kullanicilar),strtotime("-10 day"),"/");
} elseif (isset($beni_hatirla)) {
if (empty($_COOKIE['ebtoturum'])) {
$yenisifre=openssl_encrypt($kul_sifre, "AES-128-ECB", "sifre_coz");
} else {
$liste=json_decode($_COOKIE['ebtoturum']);
if ($_POST['kul_sifre']==$liste->kul_sifre) {
$yenisifre=$liste->kul_sifre;
} else {
$yenisifre=openssl_encrypt($kul_sifre, "AES-128-ECB", "sifre_coz");
}
}
$kullanicilar=
[
"kul_mail" => $kul_mail,
"kul_sifre" => $yenisifre
];
setcookie("ebtoturum",json_encode($kullanicilar),strtotime("+10 day"),"/");
}
$this->direktguncelle("kullanicilar", "kul_id", ses("kul_id"), ['son_giris' => date("Y-m-d H:i:s"), 'ip_adresi' => $_SERVER['REMOTE_ADDR']]);
return TRUE;
} else {
throw new Exception("Lütfen Bilgilerinizi Kontrol Edin", 1);
}
} catch (Exception $e) {
$_SESSION['hata']=$e->getMessage();
return FALSE;
}
}