【问题标题】:Check session is set, codeigniter检查会话已设置,codeigniter
【发布时间】:2012-03-01 09:49:22
【问题描述】:

我有一个上传脚本,上传后允许用户在一段时间内编辑内容标题。它在 db 的 ci_sessions user_data 列中设置以下内容:

array (
  'user_data' => '',
  'edit' => 
  array (
    'image_id' => 'HF',
    'session_id' => '783c15b057bcd9c19d3fd82f367ee55d',
  ),
)

问题是我的会话CHECK代码找不到会话:

<?php if ($this->session->userdata('edit') !== FALSE) : ?> 
<?php echo '<!-- session found -->'; ?>
    <?php $session_info = $this->session->userdata('edit'); ?>
    <?php $ids_array = explode(",", $session_info['image_id']); ?>
    <?php foreach ($ids_array as $id): ?>
    <?php 
    if ($id == $alpha_id 
    && 
    $session_info['session_id'] == $this->session->userdata('session_id')) :
    ?> 

该块第 2 行的回显永远不会被输出。 谁能看到我做错了什么?谢谢

这是我的控制器http://pastebin.com/aXeRn1VN

【问题讨论】:

  • 可以发config.php的内容吗?
  • 这里是 config.php 会话信息pastebin.com/A31nrC1b
  • 尝试使用$this-&gt;session-&gt;all_userdata() 打印所有数据。它显示了什么?
  • @SérgioMichels 输出pastebin.com/sRtRaRbB
  • 另请注意,数据库中的 user_data 不是空白,但数据库中有多个具有相同 ip 的会话(如果相关),但当然是不同的 session_id

标签: php codeigniter session


【解决方案1】:

试试这个

<?php if( $this->session->userdata('edit') ) : ?> 

而不是

<?php if ($this->session->userdata('edit') !== FALSE) : ?> 

【讨论】:

  • 那么您应该使用 $this->session->all_userdata(); 来检查您的会话包含的内容;
  • 当我输出它说 user_data 是空白的,但是当我签入数据库时​​它不是空白的,它包含所有信息
  • 仅供参考,数据库中似乎有多个会话具有相同的 ip(如果相关)
  • 'user_data' => '' 这行是什么意思?并且您无法理解 db 中的值,因为 codeigniter 会话以加密形式存储
  • 这只是数据库中 user_data col 中的内容,是的,它是可读的,没有加密
猜你喜欢
  • 1970-01-01
  • 2014-05-24
  • 2014-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多