-1

ログアウト スクリプトに問題があります。ユーザーがログアウトを押すと、セッションが強制終了され、ユーザーがログアウトしたことが通知される 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

ログアウトを「1」に設定できないため失敗するため、elseステートメントをどこかに配置してlogout.phpにリダイレクトする方法を知りたいので、その恐ろしい構文エラーメッセージが表示されません。

これが私のコードです:

<?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()
?>
4

3 に答える 3

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などを使用する

于 2012-12-22T08:32:36.350 に答える
0

出力が送信された後、session_start()を呼び出すことはできません-何かを出力する必要がありますか?

また、$ _SESSION['user_id']に実際に値があることを確認してください。print_r($_SESSION)

于 2012-12-22T08:39:21.067 に答える
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'].'"');
于 2012-12-22T08:37:18.137 に答える