2015-10-06 64 views
4

我有一個WordPress會話的問題。我有一個文件'test.php',用於將一個變量發佈到WordPress站點。它的條件是:「如果設置了會話變量,則用戶可以訪問整個WordPress網站,如果會話變量未設置,則用戶無法訪問該網站」。Wordpress會話變量不起作用

當我使用test.php將該變量發佈到WordPress站點時,網頁工作正常,但是當我訪問像「xyz.com/contact」這樣的內部頁面時,出現錯誤Not Access,這表示會話變量已清除下一頁。

這裏是test.php的文件:

<form action="wordpress-site-link" method="POST"> 
    <input type="submit" name="var" value="go"/> 
</form> 

在文件主題/主題名稱/ header.php中我寫了這個代碼:

session_start(); 

if(isset($_SESSION['var'])) { 
     echo 'Welcome'; 
} else if(isset($_POST['var'])) { 
     $_SESSION['var'] = $_POST['var']; 
} else { 
     echo 'No access...'; 
     exit; 
} 
+0

不假定會話開始。 Wordpuke可能已經輸出了其他內容,導致「頭文件已發送」錯誤。檢查'session_start()'的返回值 - 失敗時布爾值爲false。 –

+0

檢查剩餘頁面是否與主頁不同,例如,主頁以www開頭。而其餘的頁面則沒有。在這種情況下,會話僅針對主頁設置。 – itoctopus

回答

5

只需勾上「初始化函數「in your functions.php like this:

function ur_theme_start_session() 
{ 
    if (!session_id()) 
     session_start(); 
} 
add_action("init", "ur_theme_start_session", 1); 

然後你可以使用你的會話變量。

我希望能幫到你。

+0

它不能正常工作。 – Boyrock75

+0

您是否刪除了文件header.php中的'session_start()'? – Nozifel

+0

感謝@Nozifel現在正在工作 – Boyrock75