我已经用md5
制作了一个注册脚本,但现在我必须使用它登录。我尝试了很多东西,但没有奏效。
这是我的代码:
if(isset($_POST['sub'])) {
include_once("Connect.php");
$username = mysqli_real_escape_string($dbcon,$_POST['username']);
$password = mysqli_real_escape_string($dbcon,$_POST['password']);
$password = md5($_POST['password']);//hashing pass
$sql = "SELECT * FROM users WHERE userName = '{$username}' and userPassword = '{$password}'";
$query = mysqli_query($dbcon, $sql) or die(mysqli_error($dbcon));
$count = mysqli_num_rows($query);
if ($count > 1)
{
$row = mysqli_fetch_row($query);
$userId = $row[0]; // takes id from DataBase
$dbUsername = $row[1]; // takes username from DataBase
$dbPassword = $row[2]; // takes userpass from DataBase
$_SESSION['password'] = $dbPassword;
$_SESSION['username'] = $dbUsername;
$_SESSION['id'] = intval($userId);
$_SESSION['login'] = TRUE; // if username and pass are corrects it logs in
header('location: login.php');
die(); // using die() after header()
}
else {
echo "incorrect username or password.";
}
}
谢谢大家的评论。
解决方案:
$inlogcrypt = md5($password);
$sql = "SELECT * FROM users WHERE userName = '".$username."' and userPassword = '".$inlogcrypt."'";
如果你是PHP的新手,我不建议从构建自定义CMS开始。
若要了解有关(不同类型的)身份验证的详细信息,可以:
- 阅读本指南,了解使用 PHP/PDO 进行基本身份验证。
- 使用 PHPAuth。
- 使用 OpenID,这样您就不必处理登录数据。
第一个链接将向您展示如何
- 使用 PDO 而不是 mysql(i)。
- 过滤提交的数据(虽然我承认他们以一种有点丑陋的方式这样做,但它很容易理解)。
- 使用
$SESSION
存储会话数据。 - 使用相同的会话数据要求在某些页面上进行身份验证。
只要知道登录包含敏感数据,在构建您希望人们使用的平台之前,您应该学习更多内容。
我刚刚提到了一些关于登录的事情,但你也应该了解更多关于散列(不要使用 md5 进行登录,我推荐 bcrypt)和程序结构。