注销脚本的语法错误?

时间:2012-12-22 08:30:08

标签: php mysql logout

我的退出脚本有问题。它工作正常,如果用户按下注销它会终止会话并转到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()
?>

3 个答案:

答案 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'] . "'")

请注意您应该替换所有mysql_*个功能。截至PHP 5.5.0,它们已被弃用。使用类似PDOMySQLi

的内容

答案 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)