tho*_*ate 9 php post redirect header
我是PHP的新手,我正在尝试做一些可能不好的事情并且可能是不可能的.我基本上只是在一起黑客攻击测试我的知识,看看PHP能做些什么.
我有一个网页,其中包含收集数据的表单.这是一个PHP脚本,它执行一堆处理 - 但实际上并没有显示任何重要的东西.我想要的是,一旦处理完成,脚本就会告诉浏览器打开另一个页面,显示结果.
我知道我可以使用标题('Location:page.php'); 但我无法弄清楚如何提供POST数据.我怎样才能做到这一点?或者,是否有另一种方法告诉浏览器打开另一个页面?
编辑:我从回复中得到的是,使用各种黑客可以做到这一点,但我最好将处理和显示代码放在一个文件中.我很高兴; 这个实验比什么都重要.
Tom*_*igh 17
您可以将该数据存储在会话中,例如在处理帖子的第一个文件中
session_start();
$_SESSION['formdata'] = $_POST; //or whatever
Run Code Online (Sandbox Code Playgroud)
然后你可以在下一页上阅读它
session_start();
print_r($_SESSION['formdata']);
Run Code Online (Sandbox Code Playgroud)
或者你可以通过GET传递它:(但根据评论,这是一个坏主意)
header('Location: page.php?' . http_build_query($_POST));
Run Code Online (Sandbox Code Playgroud)
如果这样做,请确保在page.php上执行其他处理/验证,因为恶意用户可能会更改变量.您也可能不需要将整个帖子传输到下一页
编辑
我应该明确指出,我认为第二种选择可能更糟糕,因为您可以通过get发送的数据大小受限,并且可能不太安全,因为用户可以更明显地操纵数据.
处理完成后是否真的需要调用另一个页面?我可能会做以下事情:
<form method="post" action="display.php">
...
</form>
Run Code Online (Sandbox Code Playgroud)
Display.php的:
if ($_POST) {
require_once(process.php);
process($_POST);
display_results;
}
Run Code Online (Sandbox Code Playgroud)
with process.php包含处理post请求所需的代码.
或者,您可以使用类似cURL库的内容将处理结果传递给您自己指定的页面.不知道这是不是你真正想要的.
你可以使用 JavaScript 作为一种肮脏的解决方法:
<form id="redirect_form" method="post" action="http://someserver.com/somepage.php">
<input type="hidden" name="field_1" value="<?php echo htmlentities($value_1); ?>">
<input type="hidden" name="field_2" value="<?php echo htmlentities($value_2); ?>">
<input type="hidden" name="field_3" value="<?php echo htmlentities($value_3); ?>">
</form>
<script type="text/javascript">
document.getElementById('redirect_form').submit();
</script>
Run Code Online (Sandbox Code Playgroud)
(脚本应位于表单下方)