2012-07-13 75 views
0

我一直在搞這一段時間,我知道這是簡單的。我在另一個網站上使用了基本相同的代碼,它似乎沒有任何問題,並且運行在同一臺服務器上,所以我不認爲這是服務器端問題。這是一個非常簡單的登錄腳本:會話不能使用Wordpress

function user_login($username, $password) { 
$passcorrect = user_checkpass($username, $password); 
if ($passcorrect == "1") { 
    $_SESSION['eocname'] = $username; 
    echo("SETTING SESSION: ".$_SESSION['eocname']."<br />"); 
    $success = "1"; 
} else { 
    $success = "0"; 
} 
return($success); 
} 

這似乎是設置SESSION變量並位於functions.php文件中。

但是,一旦刷新頁面,SESSION就會消失。這裏是關於page.php文件文件中的代碼:

<?php 
    if (!isset($_SESSION['eocname'])) { 
     if (!isset($_POST['username'])) { 
      echo("You must login to access this page!"); 
      echo($_SESSION['username']); 
     } else { 
      $result = user_login($_POST['username'], $_POST['password']); 
      if ($result == "0") { 
       echo("Incorrect Username or Password."); 
      } else { 
       echo("Login Successful!"); 
      } 
     } 
    } else { 
     echo('Welcome back, '.$_SESSION['username'].'!'); 
    } 
    ?> 

請注意,我不知道可能有一些多餘的東西在裏面,我一直在玩弄它試圖確定問題,但似乎每次刷新頁面時,$ _SESSION ['eocname']似乎都沒有被設置。

我已添加session_start();到我的functions.php文件的頂部沒有錯誤,以確保它的工作,但仍然沒有運氣。

回答

1

你應該在你的插件中創建一個init動作,並在函數init中啓動會話。你的代碼應該是這樣的:

add_action('init', 'initEverything'); 

function initEverything() { 
    if(!session_id()) { 
     session_start(); 
    } 
} 

其他選項是WP-config.php文件啓動會話

if(!session_id()) { 
    session_start(); 
} 
+0

@ user1524441這就是解決你的問題?讓我知道結果,或者我該如何改善我的飲水器 – Sena 2012-07-13 20:02:16

+0

你好塞納,不幸的是我已經嘗試過兩種方法,都沒有出於某種原因。會話變量仍然看起來正在被刪除或什麼。它會說「登錄成功!」表單提交後,然後頁面刷新後頁面顯示「您必須登錄才能訪問此頁面!」。請注意,這不是一個插件,所以我沒有使用你推薦的add_action部分,但是嘗試將session_start()放在函數中以及wp-config.php文件中。還是一樣的結果。 – user1524441 2012-07-13 23:00:12

+0

@ user1524441讓我知道您在functions.php中的所有代碼 – Sena 2012-07-14 16:28:37