使用 header() 将数据从一个 PHP 页面传递到另一个页面
Posted
技术标签:
【中文标题】使用 header() 将数据从一个 PHP 页面传递到另一个页面【英文标题】:Pass Data from One PHP Page to Another using header() 【发布时间】:2012-01-03 21:33:32 【问题描述】:我想将数据从一个 php 文件发送到第一个 PHP 文件所在的子文件夹中的另一个 PHP 文件。我有一个名为folder1
的文件夹,其中包含一个名为file1.php
的PHP 文件,我想在名为folder2
的folder1
的子文件夹中调用另一个名为file2.php
的文件。我在file1.php
中使用这样的header()
函数:
$host = $_SERVER['HTTP_HOST'];
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'folder1/folder2/file2.php';
header("location:http://$host$uri/$extra?sms=".$msg."&num=".$msg_num);
数据未通过。有没有使用header()
的解决方案?由于某些限制,我无法使用cURL
。
【问题讨论】:
您能否更具体地了解“数据未通过”的含义? file2.php 中的查询字符串参数为空。即使它们在 file1.php 中填充了有效数据 当你echo "location:http://$host$uri/$extra?sms=".$msg."&num=".$msg_num;
时你会得到什么
@jprofitt 当我像这样回显时,我正在获取数据......但数据没有传递给 file2
我没有看到你正在初始化 $msg
和 $msg_num
。正如@jprofitt 所说,基本上调试101,打印结果,看看它是否符合您的期望。这里唯一的可能是这些变量没有设置并且查询字符串加载了空变量。或者,但你没有这么说,你已经回显了一些东西,你得到了标头已经发送的警告,并且重定向永远不会发生。您如何看待“数据未传递给 file2”?你试过var_dump($_SERVER);
吗?
【参考方案1】:
以下代码有效:
file1.php
:
<?php
header( 'Location: inner/file2.php?x=1&y=2&z=3' );
?>
inner/file2.php
:
<?php
print '<pre>';
var_dump( $_GET );
print '</pre>';
?>
访问http://localhost/testing/file1.php
的结果是重定向到http://localhost/testing/inner/file2.php?x=1&y=2&z=3
,它显示:
array(3)
["x"]=>
string(1) "1"
["y"]=>
string(1) "2"
["z"]=>
string(1) "3"
我建议复制这些测试文件并向自己证明使用传递值重定向的基本概念是有效的。然后,围绕已知良好的内核构建其余代码。祝你好运!
【讨论】:
【参考方案2】:如果没有您要发送的变量示例,很难判断问题可能是什么,但可能的问题可能是变量中的字符。
为确保没有无效字符,您可以使用urlencode()
,也可以与htmlentities()
结合使用,参见manual:
header("location:http://$host$uri/$extra?sms=".urlencode($msg)."&num=".urlencode($msg_num));
【讨论】:
另外,您需要确保file2.php
实际上正在寻找正确的参数。
我想将 sms 和 num 从 file1.php 传递给 file2.php...我正在正确分配它们并使用 file2.php 中的 $_get 获取正确的参数...但是没有查询字符串本身中的数据以上是关于使用 header() 将数据从一个 PHP 页面传递到另一个页面的主要内容,如果未能解决你的问题,请参考以下文章
使用Image header() & readfile()在PHP页面上显示一个Base64图像。