php не может войти - PullRequest
       12

php не может войти

0 голосов
/ 29 октября 2011

У меня есть этот набор кодов

$user = htmlentities($_POST['user']);
$pass = htmlentities($_POST['pass']);

function sha512($str) { return hash("sha512", $str); }
$pass = sha512($pass);

$tzlogin = sprintf("SELECT * FROM users WHERE user='%s' AND pass='%s'",
mysql_real_escape_string($user), mysql_real_escape_string($pass));

$tzlogged = mysql_query($tzlogin, $config) or die(mysql_error());

if (mysql_num_rows($tzlogged) == 0){
    header (sprintf("Location: ./login.php?status=error"));
} else {
    if (isset($_POST['tz-remember'])){
        $query = mysql_query("SELECT uid FROM users WHERE user='".$user."'", $config);
        $id = mysql_fetch_row($query);
        foreach($id as $uid){
            setcookie('uid', $uid, time() + 60*60*24*30*11, '/', '.localhost');
        }
        header (sprintf("Location: ./index.php"));
    } else {
        $query = mysql_query("SELECT uid FROM users WHERE user='".$user."'", $config);
        $id = mysql_fetch_row($query);
        foreach($id as $uid){
            $_SESSION['uid'] = $uid;
        }
        header (sprintf("Location: ./index.php"));
    }
}

все правильно, я думаю, потому что раньше я был в состоянии войти в систему правильно, но вдруг я не зашифровал пароль в формате хэша при регистрации и во время входа в системуя снова сначала зашифровал его, затем выбрал, и когда я внимательно посмотрел, во вставленных данных в базе данных отсутствуют некоторые строки, в то время как введенные данные немного длиннее, как при вводе теста пароля, теперь вставленные данные * * * * * * * * * * * * *

, в то время как опубликованные данные равны

"ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b148f0385fa5ff0308f5378305325305325303

Ответы [ 3 ]

2 голосов
/ 29 октября 2011

SHA-512 генерирует 512-битное хеш-значение, которое может быть представлено в CHAR (128).

Здесь вы можете увидеть другие типы ша: Какой тип данных использовать для хэшированияполе пароля и какой длины?

1 голос
/ 29 октября 2011

Поле вашей базы данных установлено на 100 символов.Увеличьте длину до 128.

0 голосов
/ 29 октября 2011

Похоже, поле пароля в базе данных слишком короткое.

Пожалуйста, опубликуйте результат SHOW CREATE TABLE users.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...