2017-01-11 7 views
-1

main.php:PHPのdivが第一リロード後に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秒ごとに更新されるdivを持つメインページがあります。 buttons.phpをロードし、ユーザーのセッションIDに基づいて、真または偽のMySQLデータベースをチェックします。

ページが最初に正常に読み込まれ、すべての変数が正常です。

私が抱えている問題は、初めてJavaScriptがdivをリフレッシュした後には空です。$_SESSION['userid']は空です。その後、クエリの結果は常にfalseになります。セッションIDは、私がすでにチェックしたものと同じままです。私はここで何をチェックするのか迷っている。 buttons.phpはロードするたびに独自のセッションを開始しますが、変数は空です。

+0

main.phpに構文エラーがあり、 'checkbuttons()'関数を投稿していません。 – Mike

+0

@に記載されているように、checkbuttons()関数をインクルードする必要があります。 – bos570

+0

私たちが持っている情報ではわかりにくいですが、初めてbutton.phpのコードがmain.phpに直接含まれています(おそらくsession_startが2回呼び出されることになります)。そして、2度目はAjax呼び出しによって呼び出されます。セッションはクッキーに保存されていますか? Ajaxの呼び出しによって正しく維持されていますか?私は、document.URL 'main.php'ではないことを追加することができますか?このJSはどこですか? – Kaddath

答えて

0

checkbuttons()関数は、$ _SESSION ['userid']に基づいてtrueまたはfalseを返すmysqlデータベースを照会します。

私は

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

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

に編集変更することでこの問題を解決するために管理: 私は負荷(document.URL + '#buttons')だったが起こっていたと思う何が全体をリロードしてセッション変数を渡さずにpages.phpをロードすることによって のセッション変数を渡すことなく、その特定のdivのみをリロードしてセッション変数を渡します。

ps。私の元の投稿のフォーマットが間違っていたことに対する謝罪、それはかなり遅く、当時はかなり不満でした。

関連する問題