【问题标题】:PHP Session Data Not Being Stored simplyPHP 会话数据没有被简单地存储
【发布时间】:2012-04-05 12:31:42
【问题描述】:

PHP Session 数据只存储一次,无法更新!

请帮我保存会话,但无法更新会话数据:

考虑以下示例代码:

<?php

session_start();


header("Cache-control: private");


   $_SESSION['counter']++;

   echo $_SESSION['counter'];

   session_write_close();

?>

第一次调用会话文件 C:\Window\Temp\sess_fs3r6tfmoc2tpv9ggnv8542ib2 时,会生成包含正确数据的会话文件: counter|i:1; 并且 session_cookie 也被设置,包含相同的sessionID:fs3r6tfmoc2tpv9ggnv8542ib2

当我再次运行它时,计数器没有增加! 文件 \Temp\sess_fs3r6tfmoc2tpv9ggnv8542ib2 没有得到更新。 但是 sessionID 是正确的。

请帮忙,我觉得配置有问题。

I Use: 
PHP Version 5.3.10
Windows 7
Microsoft-IIS/7.5
with Zend Extension     220090626 

Session Setting were all default:
Session Support     enabled
Registered save handlers     files user
Registered serializer handlers     php php_binary wddx

Directive    Local Value    Master Value
session.auto_start    Off    Off
session.bug_compat_42    Off    Off
session.bug_compat_warn    Off    Off
session.cache_expire    180    180
session.cache_limiter    nocache    nocache
session.cookie_domain    no value    no value
session.cookie_httponly    Off    Off
session.cookie_lifetime    0    0
session.cookie_path    /    /
session.cookie_secure    Off    Off
session.entropy_file    no value    no value
session.entropy_length    0    0
session.gc_divisor    1000    1000
session.gc_maxlifetime    1440    1440
session.gc_probability    1    1
session.hash_bits_per_character    5    5
session.hash_function    0    0
session.name    PHPSESSID    PHPSESSID
session.referer_check    no value    no value
session.save_handler    files    files
session.save_path    C:\Windows\Temp    C:\Windows\Temp
session.serialize_handler    php    php
session.use_cookies    On    On
session.use_only_cookies    On    On
session.use_trans_sid    0    0

【问题讨论】:

  • 您是从浏览器而不是从 CLI 运行它的吗?会话在 CLI 中不起作用(至少,不简单)。另请确认您的浏览器接受 cookie。

标签: php session


【解决方案1】:

第一个用户评论 session_write_close() @http://www.php.net/manual/en/function.session-write-close.php#107945

“当从 Ajax 页面调用 PHP 脚本时,请注意 session_write_close:这不会“完成”会话数据写入,但实际上会重置它!”

只需删除该行;)

【讨论】:

  • 感谢您的帮助。我删除了那条线。但它仍然是一样的。页面请求也没有ajax。
  • 又是我,我找到了解决方案,所以任何有同样问题的人:在我看来,IIS 和 PHP 不能很好地协同工作。我为 Windows 安装了 XAMPP -> XAMPP USB Lite。使用 C:\xampp 进行安装。将 C:\xampp\apache\conf\httpd.conf 中的端口从 80 更改为像 8001 这样的空闲端口。开始:C:\xampp\apache_start.bat 和 C:\xampp\mysql_start.bat 检查您的安装:127.0.0.1:8001/xampp/index.php PHPAdmin:127.0.0.1:8001/phpmyadmin/index.php Webroot 是:C:\xampp\htdocs
猜你喜欢
  • 2014-05-26
  • 2013-04-28
  • 2017-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
相关资源
最近更新 更多