【问题标题】:PHP Sessions Not Preserved - can't work out whyPHP Sessions Not Preserved - 不知道为什么
【发布时间】:2014-05-01 16:25:36
【问题描述】:

我确信这只是我忽略的事情,但我正在努力解决它。

我有两个简单的 php 页面:

sesh1.php

<?php
session_start();
echo session_id();

//create array
$survey = array(
    'question 1' => array('horse', 'cow','pig'),
    'question 2' => 12,
    'question 3' => 'Man',
    'question 4' => 'Woman'

);

//add the array to the session
$_SESSION[]=serialize($survey);


//show session contents
print_r($_SESSION);

结果:
c10a65902644c193496fc0292f4c13b1
数组 ( [0] => a:4:{s:10:"问题 1";a:3:{i:0;s:5:"马";i:1;s:3:"牛"; i:2;s:3:"猪";}s:10:"问题 2";i:12;s:10:"问题 3";s:3:"人";s:10:"问题 4 ";s:5:"女人";})

sesh2.php

<?php
session_start();
echo session_id();
//show the session
print_r($_SESSION);

结果:
c10a65902644c193496fc0292f4c13b1
数组 ( )

当我从 sesh1 导航到 sesh2 时,我无法弄清楚为什么会返回一个空白数组。如您所见,会话 ID 被保留了,那么为什么不保留会话内容呢?我所有的 php.ini 设置似乎都是工作会话所期望的。

谁能告诉我缺少什么?

【问题讨论】:

  • 为什么要序列化数据? PHP 会为您做到这一点。
  • 我只是同时尝试了两件事——序列化函数和会话。删除它并不能解决问题。
  • 注意:未知:在第 0 行的 Unknown 中跳过数字键 0,您必须使用键 $_SESSION['survey'] = array();
  • $_SESSION 是一个关联数组

标签: php session session-state


【解决方案1】:

您的会话变量中需要一个键...

$_SESSION['survey']=serialize($survey);

print_r($_SESSION['survey']);

你也不需要序列化你的数组,它会为你维护数组。

【讨论】:

    【解决方案2】:

    尝试保存到实际的命名变量,而不是尝试将其附加到数组的末尾。

    $_SESSION['survey'] = json_encode();
    

    【讨论】:

      猜你喜欢
      • 2014-04-08
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 2017-06-07
      • 2015-06-25
      • 1970-01-01
      • 2013-05-30
      • 1970-01-01
      相关资源
      最近更新 更多