PHP echo没有';t回声特定输出


PHP echo doesn't echo certain output

所以我一直在为一个数据库做一个非常简单的设计,该数据库具有允许管理员登录和编辑某些产品的功能。这是从登录表单中获取用户名和密码的当前布局:

$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>

要结束此问题:

SQL使用password()作为函数,并且在使用该词时出于安全原因不会显示密码。这里有一些文档:

  • https://dev.mysql.com/doc/refman/5.0/en/set-password.html
  • https://dev.mysql.com/doc/refman/5.1/en/password-hashing.html

因此,请为密码变量使用另一个名称。


密码

我还注意到您将密码存储为纯文本。不建议这样做。

使用以下选项之一:

  • CRYPT_BLOWFISH
  • crypt()
  • bcrypt()
  • scrypt()
  • 在OPENWALL上
  • PBKDF2
  • PHP.net上的PBKDF2
  • PHP 5.5的password_hash()函数

其他链接:

  • PBKDF2用于PHP

脚注:

mysql_*功能弃用通知:

http://www.php.net/manual/en/intro.mysql.php

从PHP 5.5.0开始,该扩展已被弃用,不建议用于编写新代码,因为它将来会被删除。相反,应该使用mysqliPDO_MySQL扩展。另请参阅MySQL API概述以获取选择MySQL API时的进一步帮助。

这些函数允许您访问MySQL数据库服务器。有关MySQL的更多信息,请访问»http://www.mysql.com/.

MySQL文档可在»http://dev.mysql.com/doc/.

$sql = "SELECT * FROM admin WHERE username='" .$manager. "' And password='" .$password. "';

试试这个