我的退出脚本有问题。它工作正常,如果用户按下注销它会终止会话并转到logout.php,在那里用户被告知他们已经注销。
但是当清空浏览器缓存或者网站不应该连接到互联网时,如果用户点击了注销按钮,则会出现以下错误消息:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
它失败因为它无法将logout设置为'1'所以我想知道我怎么可能在某个地方放一个else语句来重定向到logout.php所以我没有得到那个可怕的语法错误信息。 / p>
这是我的代码:
<?php
ob_start();
require('includes/_config/connection.php');
require('includes/functions.php');
?>
<?php
session_start();
$result = mysql_query("UPDATE ptb_users SET user_online='Offline' WHERE id=".$_SESSION['user_id']."")
or die(mysql_error());
?>
<?php
// Four steps to closing a session
// (i.e. logging out)
// 1. Find the session
// 2. Unset all the session variables
$_SESSION = array();
// 3. Destroy the session cookie
if(isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
// 4. Destroy the session
session_destroy();
redirect_to("login.php?logout=1");
ob_end_flush()
?>
答案 0 :(得分:2)
你有双引号,你应该使用单引号
改变这个:
$result = mysql_query("UPDATE ptb_users SET user_online='Offline' WHERE id=".$_SESSION['user_id']."")
要:
$result = mysql_query("UPDATE ptb_users SET user_online='Offline' WHERE id='" . $_SESSION['user_id'] . "'")
的内容
答案 1 :(得分:0)
是的,引号有问题:只要user_id是一个整数值就可以这样做:
$result = mysql_query("UPDATE ptb_users SET user_online='Offline' WHERE id=".$_SESSION['user_id']);
如果是字符串,请切换到单引号:
$result = mysql_query('UPDATE ptb_users SET user_online="Offline" WHERE id="'.$_SESSION['user_id'].'"');
答案 2 :(得分:0)
发送输出后无法调用session_start() - 您需要输出任何内容吗?
同时确保$ _SESSION ['user_id']实际上有一个值; print_r($_SESSION)