Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 会话变量赢得';如果在同一页上清除,是否不回显?_Php - Fatal编程技术网

Php 会话变量赢得';如果在同一页上清除,是否不回显?

Php 会话变量赢得';如果在同一页上清除,是否不回显?,php,Php,当我在尝试回显会话变量的同一页上清除它时,我遇到了一个奇怪的问题,即会话变量为空。下面是我正在尝试做的一个快速类型 以此为例, 第A页: $_SESSION['referer'] = 'abc123'; header('Location: http://www.test.com/pageb.php'); exit(); function get_referer() { $referer = ''; if (isset($_SESSION['referer'])) {

当我在尝试回显会话变量的同一页上清除它时,我遇到了一个奇怪的问题,即会话变量为空。下面是我正在尝试做的一个快速类型

以此为例,

第A页:

$_SESSION['referer'] = 'abc123';
header('Location: http://www.test.com/pageb.php');
exit();
function get_referer() {

    $referer = '';
    if (isset($_SESSION['referer'])) {
        $referer = $_SESSION['referer'];
        $_SESSION['referer'] = null;
        unset($_SESSION['referer']);
    }
    echo $referer;
}
第B页:

$_SESSION['referer'] = 'abc123';
header('Location: http://www.test.com/pageb.php');
exit();
function get_referer() {

    $referer = '';
    if (isset($_SESSION['referer'])) {
        $referer = $_SESSION['referer'];
        $_SESSION['referer'] = null;
        unset($_SESSION['referer']);
    }
    echo $referer;
}
现在,当我在第B页用函数做这件事时

如果我自己运行它,它会工作:

   get_referer();
当我在输入的value属性中运行echo时(确保只在页面上运行一次函数,因为调用后函数会被擦除),当我查看源页面时,它不会回显任何内容

<input type="hidden" name="referer" value="<?php get_referer(); ?>" />

也许您调用了两次
get\u referer()


首先,它将回显referer和unset。当您调用输入时,会话中不再存在referer,因此不会打印任何内容。

可能您调用了两次
get\u referer()


首先,它将回显referer和unset。当您调用输入时,会话中不再存在referer,因此不会打印任何内容。

您正在使用

<input type="hidden" name="referer" value="<?php get_referer(); ?>" />

您正在使用

<input type="hidden" name="referer" value="<?php get_referer(); ?>" />

我无法复制。请给我们完整的源代码。我想你还记得这两页上的
session\u start()
?很好地指出并演示了问题(尽管我无能为力)。@Kristian Antonsen,我尝试了我的示例,发现它在原始环境下确实有效。我更新了问题以进一步探究我的问题。@您是否已在HTML输出中检查到引用程序不存在?您没有显示在清除\u referer()之前还是之后运行
get\u referer()
。事实上,你的例子变化不大。我还是不能繁殖。您需要提供更多的代码。@Kristian Antosen我输入了一些原始代码,在回显会话变量后,我只需将其取消设置。在上面的最新更新中,我没有使用clear_referer(),它在此上下文中不存在。;我无法复制。请给我们完整的源代码。我想你还记得这两页上的
session\u start()
?很好地指出并演示了问题(尽管我无能为力)。@Kristian Antonsen,我尝试了我的示例,发现它在原始环境下确实有效。我更新了问题以进一步探究我的问题。@您是否已在HTML输出中检查到引用程序不存在?您没有显示在清除\u referer()之前还是之后运行
get\u referer()
。事实上,你的例子变化不大。我还是不能繁殖。您需要提供更多的代码。@Kristian Antosen我输入了一些原始代码,在回显会话变量后,我只需将其取消设置。在上面的最新更新中,我没有使用clear_referer(),它在此上下文中不存在。;