Sorun Giderme 'tanımsız değişken' hatası

6 Cevap php

Ben şu hatayı Undefined variable: password on line 33 bu sorunu nasıl düzeltirim elde tutmak? Yani bu hata gösteren duracaktır.

İşte php kodudur.

$first_name = mysqli_real_escape_string($mysqli, $purifier->purify(htmlentities(strip_tags($_POST['first_name']))));
$password1 = mysqli_real_escape_string($mysqli, $purifier->purify(strip_tags($_POST['password1'])));
$password2 = mysqli_real_escape_string($mysqli, $purifier->purify(strip_tags($_POST['password2'])));




// Check for a password and match against the confirmed password:
if ($password1 == $password2) {
    $sha512 = hash('sha512', $password1);
    $password = mysqli_real_escape_string($mysqli, $sha512);
} else {
    echo '<p class="error">Your password did not match the confirmed password!</p>';
}



//If the table is not found add it to the database
if (mysqli_num_rows($dbc) == 0) {
        $mysqli = mysqli_connect("localhost", "root", "", "sitename");
        $dbc = mysqli_query($mysqli,"INSERT INTO users (user_id, first_name, password) 
                                     VALUES ('$user_id', '$first_name', '$password')");
}



//If the table is in the database update each field when needed
if ($dbc == TRUE) {
        $dbc = mysqli_query($mysqli,"UPDATE users 
                                     SET first_name = '$first_name', password = '$password' 
                                     WHERE user_id = '$user_id'");

        echo '<p class="changes-saved">Your changes have been saved!</p>';

}

6 Cevap

Bir değer $password atanan tek bir yer var

if ($password1 == $password2) {
    $sha512 = hash('sha512', $password1);
    $password = mysqli_real_escape_string($mysqli, $sha512);
}

Yani, koşul yerine getirilmediği takdirde hiçbir $password olacaktır. Ve bu durumda zaten UPDATE sorgusu gerçekleştirmek için mantıklı değil.

En az tanımlar

$password = '';

daha sonra DBC çeki değiştirmek

if ($dbc == TRUE && $password != ''){

Gördüğünüz gibi, veritabanı ekleme ilk if() doğru veya yanlış olup olmadığını yapılır. O ($ password1 ve $ password2 uymuyor) yanlış ise, $ parola tanımlı olmayacaktır.

Bu durum başarısız olursa:

 if ($password1 == $password2) {

$password hatlardan birinde bir hata yükseltme, tanımlı olsun olmaz daha sonra kullanılır.

Sen $ parola bir ELSE deyimi ile bir HATA zam yok = ...... çizgi çok orada bir hata var, açıkça ve tanımlanır değil. Üst düzey açıklamasında ise gayet iyi, ama hata $ parola bildirim hattı üzerinde. Bunun nasıl çalıştığını görmek musunuz?