我有一个简单的登录脚本,它在mysql下运行得很好,我目前正试图将它移植到mysqli,但我无法使它正常工作。
login($username, $password) {
$link = mysqli_connect('localhost', 'user', 'pw', 'db');
$user_id = user_id_from_username($username);
$username = sanitize($username);
$password = md5($password);
$loginquery = "SELECT COUNT(DISTINCT user_id) FROM users WHERE username='$username' AND password = '$password'";
$count = mysqli_query($link, $loginqueryquery);
$countarray = mysqli_fetch_array($count, MYSQLI_BOTH);
$countarrayres = $countarray[0];
if($countarrayres == 1) {return true ;} else {return false ;}
}
我在测试页面上尝试了这一切:我设置了$username=test和$password=test,这与我数据库中的"测试"用户一致。当我打印它时,这会产生$countarrayres=1。如果我将pw或用户名更改为不存在的东西,我也会得到0的打印结果,所以这表明它有效,但我很困惑。
这个脚本作用的页面很简单:
$login = login($username, $password);
if( $login === false ) { "wrong password/username bro"; } else { //log in based on session user_id;}
我试着将false改为true,但我仍然收到"错误的密码/用户名兄弟"的消息,所以这可能表明存在比函数更大的问题?我对这里发生的事情感到恼火,因为唯一改变的是mysql->mysqli函数,而不是其他函数。有什么想法吗?
编辑:$test是一个拼写错误,在我的脚本中它实际上是$login。对不起,伙计们。
在测试部分,您将变量$test设置为login()的结果,然后测试$login是否为false。。。
$test = login($username, $password);
if( $login === false ) { "wrong password/username bro"; } else { //log in based on session user_id;}
应该是
$test = login($username, $password);
if( $test === false ) { "wrong password/username bro"; } else { //log in based on session user_id;}