PHP函数无法调用

时间:2017-07-23 07:34:51

标签: php

我在页面A中有一个指向页面B的链接。页面B具有如下函数:

function s(){
    $_SESSION['active']='0';
}
s();
echo $_SESSION['active'];

问题是,为了调用函数s()并设置$_SESSION['active'],我需要第二次刷新,这会增加一些开销。我不知道为什么在从A页面指向B时没有调用此功能?任何帮助将不胜感激。

编辑1:我有session_start();在每个PHP脚本的最顶层。我能想到的唯一解决方案是第二次刷新

编辑2:我仔细检查了代码,回显了函数中的每个变量,并使用了XDEBUG。问题就像我说的那样,当我指向页面B时,直到刷新页面才会调用该函数。

编辑3:问题解决了。这是一个非常愚蠢的错误,会话变量在该函数之前的代码中的某处未设置。这个有问题的函数是嵌套函数的一部分,我在函数的数量上使用循环引用,这使我的代码难以阅读,这就是我无法在此发布的原因。非常感谢,这真的是一种耻辱。

2 个答案:

答案 0 :(得分:1)

function s(){
$_SESSION['active']='0';
 return $_SESSION['active'];
}
$result =s();
echo $result;

尝试此操作,因为函数没有返回

答案 1 :(得分:1)

有几种选择。可以将会话代码移动到页面A,这样当它重定向到B时,可以看到更新的会话值。或者,你可以在第B页尝试这样的事情:

<?php
session_start();
function s(){
    $_SESSION['active']='0';
}
s();
session_write_close()
session_start();
echo $_SESSION['active'];

请参阅demo

您可能希望查看相关讨论here

但请注意,当我运行此代码时:

<?php
session_start();

function s(){
   $_SESSION['active']='0';
}
s();
echo $_SESSION['active'];

3v4l.org它与PHP 5.2.3-5.6.30和7.0.0-7.2.0beta1运行良好。如果使用的是PHP 4或PHP 5的早期版本,则该函数会执行,但结果会出现警告。