如何更新会话变量

Ken*_*Ken 7 php ajax multipartform-data session-variables

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

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>
Run Code Online (Sandbox Code Playgroud)

jQuery的:

$("#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);
//...
Run Code Online (Sandbox Code Playgroud)

ajaxtest.php:

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);
Run Code Online (Sandbox Code Playgroud)

Zac*_*ner 0

如果要在页面之间创建持久会话,则需要session_start在会话应应用的每个脚本的开头调用,而不仅仅是第一个脚本。

PHP文档session_start,如果会话已经存在,该函数将导致会话持续存在。