我想知道如何更改会话密钥中的值。
我有两页:
第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);
?>
甚至还有三分之一要破坏会议。
问题是,当我调用第一页更改会话值时,它不会更改它。如果有人能说出这个问题,我真的很感激。
更新:
好吧,看起来我在第2页上做错了。当第1页上的print_r会话回显时,我放置表单的页面 - 一切正常。但是当调用第2页时,通常会告诉我会话中的内容,它只会显示会话的内容。奇怪的是,我在调用第3页破坏会话时,在第1页上会显示会话为空但在第2页它不会改变任何东西。即使我将更改第1页上的值,它也不会在第2页上更改它,但它会在第1页显示更改????答案 0 :(得分: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>
您将看到第二个表单将如何覆盖会话变量。
答案 1 :(得分:0)
在您的表单中,您发送了两个值($ _POST [&#39; one&#39;]和$ _POST [&#39; two&#39;])。
将其更改为我在下面的内容:
<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>
上面只是将表单分成两部分,并单独发送值。考虑修改您的程序或使用单选按钮来区分每个选择。 http://www.w3schools.com/html/html_forms.asp