SHA fonksiyon sorunları

2 Cevap php

Benim login.php bu php kodu var

if (isset($_POST['logIn'])) {
    $errmsg = "";
    $logname = mysqli_real_escape_string($dbc, trim($_POST['usernameIn']));
    $logpassword = mysqli_real_escape_string($dbc, trim($_POST['passwordIn']));

    $query = "SELECT user_id, username FROM members WHERE username = '$logname' AND password = SHA('$logpassword')";
    $data = mysqli_query($dbc, $query);

    if (mysqli_num_rows($data) == 1) {
        $row = mysqli_fetch_array($data);
        setcookie('user_id', $row['user_id'], time() + (60 * 60 * 24 * 30)); //expires after 30 days
        setcookie('username', $row['username'], time() + (60 * 60 * 24 * 30));
        $home = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/index.php';
        header('Location: ' . $home);
    }
    else {
        $errmsg = '<p class="errormsg">Username or password is incorrect.</p>';
    }
}

Ve nedense, o zaman başka açıklamada $ errmsg ayarı biter. Ben doğru olduğunu ve veritabanında bulunan bilgileri (kullanıcı adı, şifre) giriyorum eminim.

Ben bu sorguyu kullanarak benim değerleri (bir kayıt komut dosyası) eklemek:

$query = "INSERT INTO members (username, password, email) VALUES ('$username', SHA('$password'), '$email')";

Herkes bu komut ile sorun görüyor? Teşekkürler!

2 Cevap

Ben senin kodunda herhangi bir önemli hataları fark yok ama ben bunu hata ayıklama yardımcı olmak için bir dizi öneri var:

  1. Tekrar kullanıcı adınızı ve şifrenizi kontrol edin. onlar hala kaçtı sonra veritabanında ne maç sağlamak için sağ sorgudan önce bu iki echo.
  2. Sorgu dizesi yankı ve phpmyadmin veya kabukta çalıştırın.
  3. Değerleri GET POST olarak gönderilen ve değil ediliyor emin olun.
  4. Değişim if (mysqli_num_rows($data) == 1) { if (mysqli_num_rows($data) > 0) { durumunda iki satır aynı kullanıcı adı ve şifre olması

Ayrıca PHP ile onu yapabilirsiniz:

VALUES ('$username', '".sha1($password)."', '$email')";

Bu durumda onu kaçmak kullanmak gerekmez.