我有两个文件,一个名为test3.php,另一个名为test4.php。我试图在文件test4.php的链接中回显变量,但它回应了意想不到的结果。请看一下。
在名为test3.php的文件中:
<?php
$text = "Good morning.";
header('Location:test4.php?text=$text');
?>
在名为test4.php的文件中:
<?php
$text = $_GET['text'];
echo "$text";
?>
预期的回声结果:
"Good morning."
实际回声结果:
$text
我不明白为什么它会回复$ text,而不是“早上好”。我想到的一件事是,当你使用标题时,你实际上无法设置变量,所以如果是这种情况请告诉我。谢谢。
答案 0 :(得分:6)
变量不会用单引号解析
header('Location:test4.php?text=$text');
因此,您需要使用双引号
header("Location:test4.php?text=$text");
参考文献:
另外,最好在标题之后添加exit;
,以便停止进一步执行,如果您有更多代码(或将来决定)。
并根据手册
使用完整的http://
来电
<?php
header("Location: http://www.example.com/"); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit;
?>
脚注,关于标题,并根据手册:
请记住,在发送任何实际输出之前,必须通过普通HTML标记,文件中的空行或PHP来调用header()。使用include或require,函数或其他文件访问函数读取代码是一个非常常见的错误,并且在调用header()之前输出空格或空行。使用单个PHP / HTML文件时存在同样的问题。
预期回音结果:
"Good morning."
如果你想只回显"Good morning."
文本用双引号,那么你需要在test4.php文件中更改以下内容:
echo "$text";
to,并使用"
\
echo "\"$text\"";
答案 1 :(得分:2)
使用
header("Location:test4.php?text=".$text);
答案 2 :(得分:-1)
在test4.php中:
<?php
$text = $_GET['text'];
echo "$text";
?>
当您引用&#34; $ text&#34;时,您正在回显af字符串。 你想要做的是回显变量:$ text。
所以:
<?php
$text = $_GET['text'];
echo $text;
?>
......没有引号.. :))
还有:标题(&#39;位置:test4.php?text = $ text&#39;);如果你在很多代码下面使用它是一个婊子...
保护自己有些麻烦,并使用:
echo "<script type='text/javascript'>window.location.href = 'test4.php?text=".$text."';</script>";
代替;)