无法使用的php登录名具有密码
嘿,我正在尝试让一个登录在密码被散列的地方工作。我有它的工作时,密码是散列,但似乎无法得到它的工作时,他们是。它给我的错误是“对不起,你的用户名或密码不正确”。有没有指向我可能出错的地方的指示?它连接到db正确,我刚从“”中提取了详细信息 下面是我的checklogin php无法使用的php登录名具有密码,php,mysql,login,system,Php,Mysql,Login,System,嘿,我正在尝试让一个登录在密码被散列的地方工作。我有它的工作时,密码是散列,但似乎无法得到它的工作时,他们是。它给我的错误是“对不起,你的用户名或密码不正确”。有没有指向我可能出错的地方的指示?它连接到db正确,我刚从“”中提取了详细信息 下面是我的checklogin php <?php $host = ""; // Host name $username = "root"; // Mysql username $password = ""; // Mysql password $
<?php
$host = ""; // Host name
$username = "root"; // Mysql username
$password = ""; // Mysql password
$db_name = "login"; // Database name
$tbl_name = "tbl_pswd"; // Table name
mysql_connect("", "root", "") or die("cannot connect");
mysql_select_db("login") or die("cannot select DB");
$username = $_POST['username'];
$passowrd = sha1($_POST['password']);
$sql = "(SELECT username FROM tbl_pswd WHERE username = '$username' AND password = '$password')";
$result = mysql_query($sql);
if (mysql_num_rows($result) < 1) {
echo 'Sorry, your username or password was incorrect!';
} else {
printf('welcome back %5s!', $_POST['username']);
}
?>
您错发了密码
:
$passowrd = sha1($_POST['password']);
修复它:
$password = sha1($_POST['password']);
需要注意的事项
- 不要将同一变量重新用于数据库连接
创建单独的值
- 保护您的代码不受
- 将mysql升级到
有一个简单的拼写错误-
$passowrd = sha1($_POST['password']);
纠正它,它就会工作 在这一行:mysql\u connect(“,”root“,”)或die(“无法连接”)代码>
没有主机名
mysql_connect(hostname, username, password) or die("cannot connect");
通常主机名为“localhost”
代码如下:
mysql_connect("localhost", "root", "")or die("cannot connect");
然后
拼写错误(行):$passowrd=sha1($\u POST['password'])代码>在这里散列您的密码并与数据库进行比较首先,请阅读准备好的语句和MySQL注入。另外,不要使用mysql_*函数,这些函数被认为是不好的做法,将在未来的PHP版本中删除。除此之外,您的代码是一种安全暴行。您正在使用数据库密码和检查用户密码。很好,目前已完成对发布的用户名和MySQL数据库密码的检查。。请更新您的答案,告知他使用定义良好且有差异的变量。+1表示正确的解决方案;可能会考虑解释他在用户输入和数据库连接中使用了相同的变量。嗯,感谢变量建议,我修复了拼写错误,但它仍然说我输入了错误的详细信息。我想底部的if语句可能有问题。你试着记录查询并直接在中运行吗DB?请调试this@user3253191如果($result){//check count}或者{//mysql\u query failed}
mysql_connect("localhost", "root", "")or die("cannot connect");