1

わかりましたので、これを行う方法がよくわかりませんが、これが私がやろうとしていることです。Web サイトの複数の場所で使用されている SESSION を更新する必要があります。私はajaxでこれを行いますが、SESSIONを変更しても、Webサイトではajax呼び出しの前と同じままです。以下に例を示します。

index.php

<?php
session_start();
?>

<script>
function sessionUpdate()
{ 
//Do a get ajax call that send the 2 parameters to updateSession.php
}
</script>

<?php
$_SESSION['foo'] = "foo"; 
$_SESSION['bar'] = "bar"; 

echo"<div>";
echo"<p  onclick="sessionUpdate()>Update Session</p>";

echo"{$_SESSION['foo']} {$_SESSION['bar']}";
echo"</div>";
?>

updateSession.php

<?php
session_start();

$_SESSION['foo'] = "new foo"; 
$_SESSION['bar'] = "new bar";
?>

現在、セッションはサイト全体で使用されているため、例の div の ajax 呼び出しからの情報を innerHTML=data.responseText; に置き換えることはできません。ちょうどその場所で。とにかく、この foo と bar セッションのエコーを行っても変更されません。ページをリロードしないと変更できない静的変数ですか、それとも問題は何ですか?

4

1 に答える 1

2

私が理解している限り、あなたが開くindex.phpと、例の div にはセッション変数のデフォルト値が含まれています(例では「foo bar」)。[Update Session] をクリックすると、innerHTML=data.responseText更新されたセッション値が表示されます (例では「new foo new bar」)。しかし、index.php をリロードすると、「foo bar」が再び表示されます。コードによると、デフォルトのセッション変数を設定する必要があるかどうかを確認しません。index.php で置き換えてみてください

<?php
$_SESSION['foo'] = "foo"; 
$_SESSION['bar'] = "bar"; 

echo"<div>";

<?php
if(!isset($_SESSION['foo']))
   $_SESSION['foo'] = "foo"; 
if(!isset($_SESSION['bar']))
   $_SESSION['bar'] = "bar"; 

echo"<div>";

更新されたコードは、セッション変数が設定されているかどうかを確認します (ユーザーは最初に index.php を開きます)。設定されていない場合-デフォルト値が割り当てられますが、それが完了すると、将来の変更は上書きされません(したがって、ajax呼び出しの後、fooおよびbar変数が設定され、コードはその値を書き換えません)

于 2012-12-27T18:58:35.137 に答える