0

セッションキーの値を変更する方法を知りたいです。

私は2つのページを持っています:

設定を変更するためのページ 1:

<?php       
session_start();

if (isset($_POST['one']) ){
    $_SESSION['pref_lang'] = 'one';
}
if (isset($_POST['two']) ){
    $_SESSION['pref_lang'] = 'two';
}
?>

HTML:

<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">     
    <input type="submit" id='one' name='one' value="one"/>
    <input type="submit" id='two' name='two' value="two"/>
</form>

ページ 2 は、セッションを表示するだけです。

<?php
session_start();
print_r($_SESSION);
?>

3 分の 1 はセッションを破壊します。

問題は、最初のページを呼び出してセッション値を変更しても変更されないことです。これの何が問題なのかを教えてくれる人がいれば、本当に感謝しています。

アップデート:

さて、2ページ目で何か間違っているようです.1ページ目のprint_rセッションをエコーアウトすると、フォームを配置したページ-すべて正常に動作します。しかし、通常はセッションの内容を教えてくれるページ2を呼び出すと、セッションのコンテンツが表示されるだけです。奇妙なことに、セッションを破棄するためにページ 3 を呼び出すと、ページ 1 ではセッションが空であると表示されますが、ページ 2 では何も変更されません。ページ1の値を変更しても、ページ2では変更されませんが、ページ1で変更が表示されます????

4

2 に答える 2

1

フォームは、含まれるすべてのフィールドを投稿します。したがって、基本的にセッションをオーバーライドします。あなたがこのようなことをしようとした場合:

<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">     
    <input type="submit" id='one' name='one' value="one"/>
</form>

<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">     
    <input type="submit" id='two' name='two' value="two"/>
</form>

2 番目のフォームがセッション変数をオーバーライドする方法がわかります。

于 2012-12-18T20:33:51.653 に答える
0

フォームでは、両方の値 ($_POST['one'] と $_POST['two']) を送信しています。

私が以下に持っているものに変更してください:

<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">     
    <input type="submit" id='one' name='one' value="one"/>
</form>    

<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">     
   <input type="submit" id='two' name='two' value="two"/>
</form>  

上記は、フォームを 2 つに分割し、値を個別に送信するだけです。プログラムを修正するか、ラジオ ボタンを使用して各選択を区別することを検討してください。 http://www.w3schools.com/html/html_forms.asp

于 2012-12-18T20:33:33.730 に答える