İzinsiz İşlem Tespit Edildi.
Merhaba arkadaşlar. Admin paneline giriş yapmak istediğimde izinsiz işlem tespit edildi hatası alıyorum.
if (isset($_SESSION["guvenlik"]["kullanici_giris"]) == "") {
exit("izinsiz işlem tespit edildi.");
}
hata veren kodlar burada. kodları silince de sayfaya tekrar döngü atıyor.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (4)
Emin değilim ama sanırım sorun şurada olabilir:
$_SESSION["kullanici_giris"]
değerine "yes"
veya "no"
değerlerinden birini atıyorsunuz. Yani $_SESSION
'a "kullanici_giris"
key'i atıyorsunuz.
Ama kontrolü yaparken $_SESSION["guvenlik"]["kullanici_giris"]
şeklinde kontrol ediyorsunuz. Yani $_SESSION
'ın "guvenlik"
key'inin "kullanici_giris"
key'ine bakıyorsunuz.
Algoritmanızı bilmiyorum ama gözünüzden kaçmış olabilir.
$_SESSION["kullanici_giris"] = "yes";
ve $_SESSION["kullanici_giris"] = "no";
yazan yerleri
$_SESSION["guvenlik"]["kullanici_giris"] = "yes";
ve $_SESSION["guvenlik"]["kullanici_giris"] = "no";
olarak düzeltmeniz gerekiyor olabilir.
if (isset($_POST["kullanici_giris"])) {
if (isset($_SESSION["guvenlik"]["kullanici_giris"]) == "") {
exit("izinsiz işlem tespit edildi.");
}
$kadi = $_POST["kadi"];
$sifre = $_POST["sifre"];
$son_giris = tr_tarih("Y-m-d H:i:s");
if (empty($kadi) || empty($sifre)) {
$_SESSION["kullanici_giris"] = "bos";
header("Location:../" . yonetim . "/giris.html");
exit;
}
$varmi = $db->prepare("SELECT * FROM kullanici WHERE BINARY kadi = ? AND sifre = ?");
$varmi->execute([$kadi, $sifre]);
if ($varmi->rowCount()) {
$KSonuc = $varmi->fetch(PDO::FETCH_ASSOC);
$sorgu = $db->prepare("UPDATE kullanici SET\r\n\t\t\t\tson_giris = ?\r\n\t\t\t\tWHERE id = ?");
$guncelle = $sorgu->execute([$son_giris, $KSonuc["id"]]);
$_SESSION["Yonetim_Id"] = $KSonuc["id"];
$_SESSION["Yonetim_Kadi"] = $KSonuc["kadi"];
$_SESSION["Yonetim_Adi"] = $KSonuc["isim"];
$_SESSION["Yonetim_Sifre"] = $KSonuc["sifre"];
$_SESSION["rutbe"] = $KSonuc["rutbe"];
if (isset($_POST["beni_hatirla"])) {
setcookie("Yonetim_Kadi", $KSonuc["kadi"], strtotime("+1 day"), "/", NULL, NULL, true);
setcookie("Yonetim_Sifre", $KSonuc["sifre"], strtotime("+1 day"), "/", NULL, NULL, true);
} else {
setcookie("Yonetim_Kadi", $KSonuc["kadi"], strtotime("-1 day"), "/", NULL, NULL, true);
setcookie("Yonetim_Sifre", $KSonuc["sifre"], strtotime("-1 day"), "/", NULL, NULL, true);
}
$_SESSION["kullanici_giris"] = "yes";
header("Location:../" . yonetim . "/index.html");
exit;
}
$_SESSION["kullanici_giris"] = "no";
header("Location:../" . yonetim . "/giris.html");
exit;
}
kullanıcı giriş kodlarım bu şekilde. Sorgu dönüyor fakat izinsiz giriş hatası veriyor.
Ayrıca giriş.php de de şu şekilde kod var. Kullanıcı adı ve şifreyi ne yazarsam yazayım izinsiz giriş hatası veriyor.
$_SESSION["guvenlik"] = ["kullanici_giris" => kod()];
isset()
fonksiyonu true veya false döner ve sadece değişkenin varlığını ve varsa değerinin null olup olmadığını kontrol eder.
Ayrıca ""
ifadesi de if içinde false kabul edilir. Çünkü ""
ifadesi PHP tarafından 0 elemanlı bir dizi olarak algılanır. Zaten elemanı olmayan bir array de PHP'de if içinde false kabul edilir.
Kodunuzu, yorumlayıcının anladığı şekilde adım adım bakacak olursak,
$_SESSION["guvenlik"]["kullanici_giris"]
değişkeninde null haricinde bir değer varsa:
if (isset($_SESSION["guvenlik"]["kullanici_giris"]) == "") { exit("izinsiz işlem tespit edildi."); }
if(true == "") { exit("izinsiz işlem tespit edildi."); }
if(true == false) { exit("izinsiz işlem tespit edildi."); }
if(false) { exit("izinsiz işlem tespit edildi."); }
- koşul sağlanmadığı için if bloğu atlandı.
Veya $_SESSION["guvenlik"]["kullanici_giris"]
değişkeninde null haricinde bir yoksa veya bu değişken hiç oluşturulmamışsa:
if (isset($_SESSION["guvenlik"]["kullanici_giris"]) == "") { exit("izinsiz işlem tespit edildi."); }
if(false == "") { exit("izinsiz işlem tespit edildi."); }
if(false == false) { exit("izinsiz işlem tespit edildi."); }
if(true) { exit("izinsiz işlem tespit edildi."); }
- koşul sağlandığı için if bloğuna girildi ve
exit
ile yorumlama durduruldu.
Yani aslında kodlar istediğiniz işi yapıyor gibi görünüyor. Büyük ihtimalle siz bi'yerlerde $_SESSION["guvenlik"]["kullanici_giris"]
değişkenine "" değeri atıyorsunuz. Yani session'ı oluşturuyorsunuz ama içine "" değeri atıyorsunuz. isset()
fonksiyonu "" değeri de olsa bu durumda true
döner. Yani isset()
e göre değişken oluşturulmuştur ve değeri de sonuçta değer null
değildir.
Eğer tek sorun buradaysa büyük ihtimalle paylaştığınız kodun yerine şunu yazarsanız sorun ortadan kalkacaktır:
// session hiç oluşturulmamışsa durdur. Oluşturulmuş ama değeri "" ise yine durdur:
if (!isset($_SESSION["guvenlik"]["kullanici_giris"])) exit("izinsiz işlem tespit edildi.");
if ($_SESSION["guvenlik"]["kullanici_giris"]=="") exit("izinsiz işlem tespit edildi.");