首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何更新会话变量

如何更新会话变量
EN

Stack Overflow用户
提问于 2011-05-28 07:22:30
回答 1查看 12.6K关注 0票数 7

我正在使用Ajax创建一个多步骤表单,并希望根据表单域的值更改显示的文本。我认为这样做的一个好方法是使用会话变量。如何告诉会话使用新的字段值进行更新?目前,会话似乎只存储初始值,而不存储任何更新。因此,如果用户输入"John“作为名字,然后返回并将其更改为"Frank”,则"John“就是存储的名字。

代码语言:javascript
复制
if (!isset($_SESSION)) {
session_start();
$_SESSION['formStarted'] = true;
$_SESSION['timestamp'] = date("M d Y H:i:s");
$_SESSION[$key] = $value;

<p>Your name begins with the letter <?php if ($_SESSION['name'] =='Frank') 
  {echo 'F';}?><p>

jQuery:

代码语言:javascript
复制
$("#form").validate({
   //...
   submitHandler: function(form) {

   //... 
   $(form).ajaxSubmit({               
     type: "POST",
     data: {
       name : $('#name').val(),
//...
     },
     dataType: 'json',
     url: '../ajaxtest.php',
     error: function() {alert("There was an error processing this page.");},
     success: 
       function(data) {
         $('#output1').html(data.message.join(' ')).show(500);
         $('#ouput1').append(data);
//...

ajaxtest.php:

代码语言:javascript
复制
session_start();

$expected = array( 
'name'=>'string', 
//...
);

//...

$return['message']=array();
if(!empty($_POST['name'])){
   $return['message'][] = '' . htmlentities($_POST['name'], ENT_QUOTES, 'UTF-8');
   } 
//...
echo json_encode($return);
EN

回答 1

Stack Overflow用户

发布于 2017-07-18 17:59:23

这就是$_SESSION应该如何工作的。因为相同的变量可能在不同的页面上使用,并且正在处理中,因此更改值将是不可接受的。

在您的示例中,您正在尝试更新$_ session‘’name‘,并且需要保持所有其他会话的值不变。可能的解决方案是

代码语言:javascript
复制
<?php
session_start();
unset($_SESSION['name']);//remove $_SESSION['name']
session_regenerate_id();//Copies all other session variables on to new id
$_SESSION["name"] = $newValue;//Create new session variable 'name'.
session_write_close();
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6158580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档