当我在尝试回显它的同一页面上清除会话变量时,我遇到一个奇怪的问题。这是我想要做的快速类型。
举个例子;
页面A:
$_SESSION['referer'] = 'abc123';
header('Location: http://www.test.com/pageb.php');
exit();
第B页:
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(); ?>" />
然而,有趣的是,如果我输入type =“text”它可以正常工作。
<input type="text" name="referer" value="<?php get_referer(); ?>" />
问题仅发生在input type =“hidden”
的value属性上答案 0 :(得分:1)
您正在使用
输出内容<input type="hidden" name="referer" value="<?php get_referer(); ?>" />
如果您使用type="text"
,则不会在同一页面上查看它。使用type="hidden"
时,您最有可能右键单击窗口并在浏览器中选择查看源。问题是,当您这样做时,相同的浏览器(如Chrome)会刷新页面。这意味着,一旦您加载页面,value
属性实际上包含abc123
,但当您尝试查看它时,页面会刷新,因此会话不再存在,因此{{1是空的。
答案 1 :(得分:0)
也许你两次致电get_referer()
?
在第一个它将回应引用并且未设置。当您调用输入时,会话中的referer不再存在,因此不打印任何内容。