我正在尝试进行用户通行证验证。更新代码:
$username="------";
$password="------";
$database="------";
$host = "------";
mysql_connect($host,$username,$password);
mysql_select_db($database) or die( "Unable to select database");
$username = $_POST['username'];
$password = $_POST['password'];
echo 'username: ' . $username . '<br>'; //myname
echo 'password: ' . $password . '<br>'; //mypass
function checkpass()
{
//$result = mysql_query("SELECT * FROM REG_USERS where USERNAME='$_POST[username]' and PASSWORD='$_POST[password]' ") or die(mysql_error());
$result = mysql_query("SELECT * FROM REG_USERS where USERNAME='" . $username . "' and PASSWORD='" . $password . "'") or die(mysql_error());
return mysql_num_rows($result);
}
checkpass();
echo 'checkpass:'. checkpass();
在第一个查询中,checkpass 返回 1。在第二个查询中,它返回 0。为什么?
最佳答案
好的,现在我们有了完整的代码,很明显。
$username
和 $password
不是全局的。该函数不知道它们的设置是什么。
$username = $_POST['username'];
$password = $_POST['password'];
echo 'username: ' . $username . '<br>'; //myname
echo 'password: ' . $password . '<br>'; //mypass
function checkpass()
{
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
//$result = mysql_query("SELECT * FROM REG_USERS where USERNAME='$_POST[username]' and PASSWORD='$_POST[password]' ") or die(mysql_error());
$result = mysql_query("SELECT * FROM REG_USERS where USERNAME='" . $username . "' and PASSWORD='" . $password . "'") or die(mysql_error());
return mysql_num_rows($result);
}
注意,我了解 mysqli。 OP 没有询问它,我也没有对此着迷,但我添加了 mysql_real_escape_string 以达到良好的效果。
关于PHP 选择不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14244602/