Это мой код checklogin. Я не могу войти. Я думаю, что есть проблема с паролем. Я использую пароль md5. Правильно ли использовать md5, как показано ниже? Потому что счетчик $ продолжает показывать 0 не 1.Ошибка пароля для пароля md5
<?php
require 'database.php';
//function to sanitize values from the form. Preventing the SQL injection
function clean ($str){
$str = @trim($str);
if (get_magic_quotes_gpc()){
$str = striplashes ($str);
}
return mysql_real_escape_string($str);
}
//sanitize POST values
$myusername = clean ($_POST['username']);
$mypassword = clean (md5($_POST['password']));
$role = clean ($_POST['role']);
$sql="SELECT username, password, role FROM student WHERE username='$myusername' and password='".md5($_POST['password'])."' and role = '$role'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
$_SESSION ['username'];
$_SESSION['password'];
$_SESSION['role'];
header("location:login_success.php");
}
else {
header ("location: login_failed.php");
}
?>
Почему вы используете MD5-пароль, используя чистый, а затем игнорируете это и вставляете md5 ($ _ POST ['password']) непосредственно в свой SQL-запрос? Это выглядит немного бессмысленным (тем более, что вам все равно не нужно очищать пароль, так как вы его хэшируете. –
И только хэширование пароля с MD5 недостаточно. Используйте хороший алгоритм шифрования пароля (http: // php .net/password) –
Показать значения таблиц и входные значения – user2486495