2017-01-11 24 views
-1

main.php:PHP DIV 1日重裝後失去PHP會話變量

<?php 
session_start(); 

echo "<div id='buttons'>"; 
include "buttons.php"; 
echo "</div>"; 

的JavaScript:

function refreshButtons(){ 
    $('#buttons').load(document.URL + ' #buttons'); 
} 

buttons.php:

session_start(); 
$a=checkbuttons($_SESSION['userid']); 
if ($a=="false") { 
echo "<button type='submit' class='btn btn-danger btn-lg'>Return to Main</button>"; 
} 
else { 
echo "<button type='submit' class='btn btn-success btn-lg'>Proceed</button>"; 
} 

我有一個每隔10秒刷新一次的主頁。它加載buttons.php檢查MySQL數據庫根據用戶會話ID返回true或false。

頁面首次加載罰款,所有變量都可以。

第一次JavaScript刷新div後,我的問題是$_SESSION['userid']是空的。當然,查詢的結果總是錯誤的。會話ID保持不變,我已經檢查過。我不知道下一步要檢查什麼。 buttons.php每次加載時都會啓動它自己的會話,但仍然是變量爲空。

+0

你在main.php中有一個語法錯誤,並且你沒有發佈'checkbuttons()'函數。 – Mike

+0

@Mike提到你需要包含checkbuttons()函數。 – bos570

+0

很難說明我們的信息,但第一次,buttons.php的代碼直接包含在main.php中(可能導致session_start被調用兩次),第二次通過Ajax調用。會話是否存儲在Cookie中?它是否通過Ajax調用正確維護?我可以添加,不是document.URL'main.php'?這個JS在哪裏? – Kaddath

回答

0

checkbuttons()函數查詢mysql數據庫根據$ _SESSION ['userid']返回true或false。

我設法通過改變來解決這個

 function refreshButtons(){ 
     $('#buttons').load(document.URL + ' #buttons'); 
    } 

function refreshButtons(){ 
     $.ajax({ 
      url: "buttons.php", 
      cache: false, 
      success: function(data){ 
      $("#buttons").html(data); 
      } 
     }); 
} 

編輯: 我覺得發生了什麼事是負載(document.URL + '#buttons')被重新加載整個頁面沒有通過會話變量, 通過加載buttons.php通過ajax重新加載只有特定的div,從而傳遞會話變量。

ps。對於我原來發布的壞格式表示歉意,這段時間太晚了,我當時非常沮喪。