PHP用POST数据打开另一个网页

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发送的数据大小受限,并且可能不太安全,因为用户可以更明显地操纵数据.


Jos*_*ton 7

处理完成后是否真的需要调用另一个页面?我可能会做以下事情:

<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库的内容将处理结果传递给您自己指定的页面.不知道这是不是你真正想要的.


Tom*_*Tom 6

你可以使用 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)

(脚本应位于表单下方)