【问题标题】:php session not saving after $_post$_post 后 php 会话未保存
【发布时间】:2010-10-26 20:10:28
【问题描述】:

我遇到了会话问题,如果我将以下代码放在页面上,则每次重新加载页面时计数器都会增加一。

session_start();  
if(isset($_SESSION['views']))
    $_SESSION['views'] = $_SESSION['views']+ 1;
else
    $_SESSION['views'] = 1; 

如果我把上面的代码放在一个 if 语句中,它只在你点击一个按钮并在会话中显示数字时运行,那么会话总是空的。

会不会是 php.ini 的问题?

提前致谢

【问题讨论】:

  • 您是否使用session_start() 开始会话?
  • 请发布您的其余代码。仅从这些信息很难判断。据我所知,php.ini 似乎不太可能涉及。
  • 下面是 session_start() 的一个非常简单的版本; if($_POST["btnSubmit"]){ $_SESSION["views"]++; } echo "VIEWS: ".$_SESSION["views"];

标签: php session postback


【解决方案1】:

您的会话无法启动。如果服务器可以写入,请检查 tmp 目录(许多会话问题与磁盘满有关!)

【讨论】:

  • 只需检查保存会话的 tmp 目录,该文件夹具有正确的权限,并且只有 7% 已满
【解决方案2】:

还要检查 php.ini 以确保 session.auto_start=1 和代码...

//debug your session   

echo"<!--".session_id()."-->";

//update the views

array_key_exists('views',$_SESSION)?$_SESSION['views']++:$_SESSION['views']=1;

【讨论】:

  • 一旦你解决了问题,你会想要删除调试,但这样你可以检查你是否有一个会话,但它不是相同的会话......
  • 嗨,如果我在页面加载时显示会话 ID,然后在回发时显示会话 ID,它们都是相同的。我还遍历了会话变量,以查看我拥有的密钥以及在回发中创建(尝试)的任何会话仍未保存。
  • 我还检查了 php ini 设置,并且 session.auto_start 设置为 0,所以我已经更改了它,但仍然遇到同样的问题
【解决方案3】:
session_start();  

if(isset($_SESSION['views']))
    $_SESSION['views']++;
else
    $_SESSION['views'] = 1; 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 2011-01-26
    • 2010-09-14
    • 2012-12-23
    • 2020-10-03
    • 1970-01-01
    相关资源
    最近更新 更多