-1

我有一个简单的登录脚本,在 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 。抱歉,伙计们。

4

2 回答 2

0
$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;}
于 2013-08-17T17:07:13.897 回答
0

在您的测试部分中,您将变量 $test 设置为 login() 的结果,然后测试 $login 是否为假...

于 2013-08-17T17:01:49.080 回答