2012-12-22 27 views
-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() 
?> 

回答

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

+0

通常ID被存儲爲整數,所以我不認爲你會想用單引號圍繞用戶ID。 –

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'].'"'); 
0

發送輸出後您無法調用session_start() - 是否需要輸出任何內容?

還要確保$ _SESSION ['user_id']實際上有一個值; print_r($_SESSION)