【问题标题】:php session_start execute when condition not match条件不匹配时执行 php session_start
【发布时间】:2014-07-01 12:16:50
【问题描述】:
<?php
session_save_path('/home/path/to/session/');
if(strpos($_SERVER['PHP_SELF'],'test'))
{
    echo 'a';
}else{
    session_start();
}

这个脚本在if为真时创建一个会话文件(文件名为test.php)?

【问题讨论】:

  • 你不应该在会话中投入太多。它们的目的是在内部位置更改期间保留少量不敏感数据。也许您想稍后将数据添加到其他脚本/用户,然后您必须再次重写您的逻辑。

标签: php session


【解决方案1】:

你应该改变

if(strpos($_SERVER['PHP_SELF'],'test'))

进入

if(strpos($_SERVER['PHP_SELF'],'test') === false)

if(strpos($_SERVER['PHP_SELF'],'test') !== false)

取决于您的需求(从您的代码中很难说)。否则,如果$_SERVER['PHP_SELF']test 开头,strpos 函数返回 0,这在您应该替换的语句中被视为 false。要比较确切的值和类型,您需要使用 ===!== 运算符

【讨论】:

  • 发生的情况是:输出是 a ,这意味着 if 条件为真,并且会话文件仍在创建中(session_start() 在 else 部分中)。当我用其他表达式替换 strpos($_SERVER['PHP_SELF'],'test') 时,或者只是一个 '1',一切正常......
  • 您到底想要实现什么?请详细说明
猜你喜欢
  • 2014-04-25
  • 2013-12-06
  • 2017-12-25
  • 2022-11-26
  • 2021-02-20
  • 1970-01-01
  • 2011-08-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多