PHP fərqi

Shukur_23

Məhşur istifadəçi
Silver istifadeci
salam,

PHP:
 if(isset($_POST["button"])){ #isset


$login=$_POST["login"];


$pass=$_POST["pass"    ];


$req=$conn->query("select pass from users where login='$login'")->fetch_assoc();


if(password_verify($pass,$req["pass"])){


echo "ok";
exit;


}
else {
echo "sehv oldu";
}


} #isset
echo '<form method="POST" action="">';


echo 'Login: <input type="text" name="login"><br>';


[B]echo[/B] 'Sifre: <input type="text" name="pass"><br>';


[B]echo[/B] '<input type="submit" name="button" value="DaxiL oL"><br>';


Bu yuxardakı kimi mysqla sorğu göndərəndə niyə işləyir? $req hissəsinə nəzər yetirin




Amma bu cür yazanda işləmir fərq nədi xaiş izah edin

PHP:
if(isset($_POST["button"])){ #isset

$login=$_POST["login"];

$pass=$_POST["pass"    ];


$req=$conn->query("select * from users where login='$login' and pass='$pass'")->fetch_assoc();

if(password_verify($pass,$req["pass"])){

echo "ok";
exit;

}
else {
echo "sehv oldu";
}

} #isset
echo '<form method="POST" action="">';

echo 'Login: <input type="text" name="login"><br>';

[B]echo[/B] 'Sifre: <input type="text" name="pass"><br>';

[B]echo[/B] '<input type="submit" name="button" value="DaxiL oL"><br>';
 
Sonuncu dəfə moderator tərəfindən redaktə edilib:
Ekrana bir xəta verirsə deyərsən, amma çox böyük ehtimalla basadan məlumat alanda problem yaşayırsan password verify dan yuxarida print_r($req); yaz ekrana baxaq gorek her ikisinde bize hansi melumati getirir
 
Ekrana bir xəta verirsə deyərsən, amma çox böyük ehtimalla basadan məlumat alanda problem yaşayırsan password verify dan yuxarida print_r($req); yaz ekrana baxaq gorek her ikisinde bize hansi melumati getirir
Yoxlatmışam fərqi var ancaq dərindən anlaya bilmirəm
 
Sql sorğusunda birində
"Select * from users" yazmısan birində isə
"Select pass from users"

* (ulduz) - bu o deməkdir ki əmr verirsən ki get users tablesində bütün columnları seç və göndərdiyim parametrləri yoxla

2 cidə isə yalnız pass adlı columnu seçdiyin üçün sənin parametr olaraq göndərdiyin login və parolu 1 sütunda yəni "pass" - da axtarır və connect baş tutmur
 
Sql sorğusunda birində
"Select * from users" yazmısan birində isə
"Select pass from users"

* (ulduz) - bu o deməkdir ki əmr verirsən ki get users tablesində bütün columnları seç və göndərdiyim parametrləri yoxla

2 cidə isə yalnız pass adlı columnu seçdiyin üçün sənin parametr olaraq göndərdiyin login və parolu 1 sütunda yəni "pass" - da axtarır və connect baş tutmur
Qaqa birinci select pass from users where login='$login' iwleyir ancaq select * from users where login='$login' and pass='$pass' yazanda password_verify iwlemir, pass columnda iwleyir
 
Ekrana bir xəta verirsə deyərsən, amma çox böyük ehtimalla basadan məlumat alanda problem yaşayırsan password verify dan yuxarida print_r($req); yaz ekrana baxaq gorek her ikisinde bize hansi melumati getirir
$req i print edende bazada ki melumatlar cixir, forma esasen
 
Salam umumiyyetnen pdo istifade ele. Prepeare ile ele. Sql injeksiyasi da problem olmuyajax.
 
Xetani at baxaq yene de bu koda sql error verir phpde hecne gorsenmirse
 
Asagidaki php kodunu oz kodunuza gore uygunlasdira bilersiniz, ugurlar.

PHP:
$stmt = $conn->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("s", $_POST['email']);
$stmt->execute();
$user = $stmt->get_result()->fetch_assoc();

if ($user && password_verify($_POST['pass'], $user['pass']))
{
    // credentials are OK, add user in a session etc...;
} else {
    // login failed;
}
 
Son redaktə:
PHP:
if(isset($_POST["button"])) {
    $login = $_POST["login"];
    $pass = $_POST["pass"];

    // İstifadəçinin qeydini verilənlər bazasından çıxarırıq
    $req = $conn->query("SELECT * FROM users WHERE login='$login'")->fetch_assoc();

    // Verilənlər bazasındakı parolun istifadəçinin daxil etdiyi parola uyğun olub olmadığını yoxlayırıq.
    if($req && password_verify($pass, $req["pass"])) {
        echo "Giriş uğurlu!";
        exit;
    } else {
        echo "İstifadəçi adı və ya parol səhvdir!";
    }
}

echo '<form method="POST" action="">';
echo 'Login: <input type="text" name="login"><br>';
echo 'Sifre: <input type="password" name="pass"><br>';
echo '<input type="submit" name="button" value="Daxil oL"><br>';


/*

Yuxarıdakı kodda verilənlər bazasındakı parol istifadəçinin password_verify() funksiyasından istifadə edərək daxil etdiyi parolla müqayisə edilir. Həmçinin, parol sahəsi verilənlər bazasında saxlandıqda onun password_hash() funksiyasından istifadə etməklə şifrələndiyi güman edilir.

Həmçinin, giriş teqində type atributu kimi “mətn” əvəzinə “parol”dan istifadə parolun oxunmasının qarşısını alır və daha təhlükəsiz istifadəni təmin edir.

*/
 
Geri
Üst
Mövzu aç