为什么cookie会话MySQL重定向不起作用?

时间:2013-05-27 14:56:13

标签: php mysql

我在视图个人资料页面的顶部插入了以下代码:

$username = $_REQUEST['username'];

$cookiesession = mysql_query("SELECT CSToken FROM members WHERE Username = '$username'");

if ( $_SESSION['loggedin'] == $cookiesession ) { 
header("Location: /profile.html");
}

由于某些原因,当我查看自己的个人资料页面时,它不会重定向到profile.html。有什么建议?这真让我很沮丧,我无法弄清楚我做错了什么。

我只是回应了$ cookiesession并且回复了以下回复:

Resource id #16

任何想法?!非常感谢提前!

2 个答案:

答案 0 :(得分:1)

mysql_query返回结果 HANDLE ,而不是您选择的字段。你需要先获取一行:

$result = myqsl_query("SELECT ...") or die(mysql_error());
$row = mysql_fetch_assoc($result);
if ($row['CSToken'] == $cookiesession) { ...}

您的代码正在尝试将该结果句柄与字符串/ int进行比较,这当然不会起作用。

另请注意,您容易受到SQL injection attacks的攻击,并且正在使用已弃用的数据库接口。

答案 1 :(得分:0)

您必须使用session_start()开始会话。此调用会将$_SESSION数组恢复为上一次请求后的数据。

$cookiesession是一个PHP资源。 PHP脚本执行后释放PHP资源,因此将它们存储在会话中是没有意义的。我怀疑你希望$cookiesession成为数据库中的记录。使用mysql_fetch_array($cookiesession)检索数据库记录。但请注意,不推荐使用mysql扩展,因此不应在新代码中使用。请改用PDO或MySQLi。