如何改变会话的价值?

时间:2012-12-18 20:28:35

标签: php html session variables

我想知道如何更改会话密钥中的值。

我有两页:

第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页显示更改????

2 个答案:

答案 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