1

我尝试做的是通过在 cookie 中验证(称为“身份验证”)来检查用户的 ID。

那是我的代码:

if(!$noCookie) {

$sql = "SELECT * FROM `". TABLE_PREFIX ."_logged` WHERE `logged_cookie` = '". $usersCookie ."' LIMIT 1";
$query = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($query) <= 0) {
    echo 'yes cookie';

    $row = mysql_fetch_array($query) or die(mysql_error());
    print_r($row);

    while ($row=mysql_fetch_array($query)) {
        echo $usersId = $row["logged_user_id"];
    }
} else {
    echo 'no cookie';
}
}

发生的情况是,如果用户的 cookie 与表中的相同,它将返回用户的 id。

所以这就是我想要做的事情,IF 说“是的 cookie”,但在这期间它什么也没做!它没有给我一个错误。

4

3 回答 3

1

由于没有行,所以没有什么可以获取的。

if (mysql_num_rows($query) <= 0) {

应该这样> 0吗?

于 2011-07-23T17:57:35.400 回答
1

您仅mysql_fetch_arraymysql_num_rows($query)评估为 0 或更低时才运行;即没有行

也许你的意思是:

if (mysql_num_rows($query) > 0) { // <-----
    echo 'yes cookie';

    $row = mysql_fetch_array($query) or die(mysql_error());
    // ...
}
else {
    echo 'no cookie';
}

另请注意,您mysql_fetch_array在两个不同的地方运行,这通常是不正确的。您的while循环将不包括第一个结果行,因为您mysql_fetch_array在循环之前已经做过一次。

于 2011-07-23T17:58:19.267 回答
1
if(!$noCookie) {

$sql = "SELECT * FROM `". TABLE_PREFIX ."_logged` WHERE `logged_cookie` = '". $usersCookie ."' LIMIT 1";
$query = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($query) > 0) {
    echo 'yes cookie';

    $row = mysql_fetch_array($query) or die(mysql_error());   
    foreach ($row as $r)
       echo $r["logged_user_id"];
} else {
    echo 'no cookie';
}
}
于 2011-07-23T17:58:25.207 回答