v2.5.2
Giriş yap

İzinsiz İşlem Tespit Edildi.

ynscnr55
445 defa görüntülendi ve 3 kişi tarafından değerlendirildi

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.

Cevap yaz
Cevaplar (4)
ebykdrms
902 gün önce

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.

ynscnr55
903 gün önce
    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()];
ebykdrms
903 gün önce

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.");
kartal
903 gün önce

Giriş yaptırdığın sorgunun altında kontrol et kullanıcı doğrulamasından geçiyormu muhtemelen hatan var.