因此,我一直在为数据库设计一个非常简单的设计,这个数据库具有允许管理员登录和编辑某些产品的功能。这是从登录表单中获取用户名和密码的当前布局:
$manager = $_POST["username"];
$password = $_POST["password"];
$manager = stripslashes($manager);
$password = stripslashes($password);
$manager = mysql_real_escape_string($manager);
$password = mysql_real_escape_string($password);
之前我已经创建了登录脚本但由于某种原因我在实际工作中遇到了这个日志的问题。所以我正在检查传递的变量是什么,以便在我到达这些线时查看问题发生的位置:
echo "manager = " . $manager . "<br />";
echo "password = " . $password . "<br />";
$sql = "SELECT * FROM admin WHERE username='$manager' AND password='$password'";
echo $sql;
输出结果为:
manager = scott
password = password123
SELECT * FROM admin WHERE username='scott' AND password=''
其中$ password变量已从$ sql字符串的输出中删除。有关为什么省略$ password变量的任何建议?
这是HTML表单代码:
<form id="form1" name="form1" method="post" action="admin_login.php">
Username:<br />
<input name="username" type="text" id="username" size="40" />
<br /><br />
Password:<br />
<input name="password" type="password" id="password" size="40" />
<br /><br /><br />
<input type="submit" name="button" id="button" value="Log In" />
</form>
答案 0 :(得分:0)
要关闭此问题:
SQL使用password()
作为函数,并且在使用该字时出于安全原因不会显示密码。这里有一些文档:
因此,请使用其他名称作为密码变量。
<强>密码强>
我还注意到您以纯文本格式存储密码。不建议这样做。
使用以下其中一项:
crypt()
bcrypt()
scrypt()
password_hash()
功能。其他链接:
<强>脚注:强>
mysql_*
函数弃用通知:
http://www.php.net/manual/en/intro.mysql.php
从PHP 5.5.0开始,不推荐使用此扩展,不建议用于编写新代码,因为将来会删除它。相反,应使用mysqli或PDO_MySQL扩展名。在选择MySQL API时,另请参阅MySQL API Overview以获得进一步的帮助。
这些功能允许您访问MySQL数据库服务器。有关MySQL的更多信息,请访问»http://www.mysql.com/。
可以在»http://dev.mysql.com/doc/找到MySQL的文档。
答案 1 :(得分:-1)
$sql = "SELECT * FROM admin WHERE username='" .$manager. "' And password='" .$password. "';
试试这个