0

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

我有两页:

第 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 Session 时,我放置表单的那个页面 - 一切正常。但是当调用第 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>

您将看到您的第二个表单将如何覆盖会话变量。

于 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>  

以上只是将表单分成两份,并单独发送值。考虑修改您的程序或使用单选按钮来辨别每个选择。 http://www.w3schools.com/html/html_forms.asp

于 2012-12-18T20:33:33.730 回答