我想在执行一个 php 函数后重定向POST
到一个页面,并一次使用 methode 提交一个 html 表单。
我找到了很多解决方案,GET
但我想用POST
.
我想在执行一个 php 函数后重定向POST
到一个页面,并一次使用 methode 提交一个 html 表单。
我找到了很多解决方案,GET
但我想用POST
.
您可以使用会话来保存 POST 数据。
我目前正在使用如下代码。在我的第一个页面加载时,检查了 $_POST 数据。如果它包含数据库中已经存在的某些值,那么它将重定向到这些值的页面。
// This could be part of the same script as below, or a different script.
session_start();
if($_POST['my_value'] && valueExistsInMyDb($_POST['my_value']) ) { // check my db to see if this is an existing value
$id = getIdOfMyValue($_POST['my_value']); // e.g. '4'
$_SESSION['POST'] = $_POST; // take ALL post data and save it in the session variable
header("location: your.php?myvalue=" . $id); // redirect to bookmarkable target page where $_GET variable matches what was posted.
exit(); // ensure no other code is executed in this script after header is issued.
}
然后你的其他文件(甚至可能是同一个文件)可以这样做:
// your.php?myvalue=4
if(isset($_SESSION) && array_key_exists('POST',$_SESSION)) {
$_POST = $_SESSION['POST']; // creates or overwrites your $_POST array with data from the session. The rest of your script won't be able to tell that it's not a real $_POST, which may or may not be what you want.
unset($_SESSION['POST']); // you probably want to remove the data from the session.
}
// now your myvalue=4 is stored in GET, and you can handle the rest of the POST data as you like
我不知道这是否是最好的解决方案,但到目前为止它似乎对我有用。我几天前才写代码,还没有测试所有方面。
另一种选择是使用 HTML5 来更改地址栏。不需要重定向。但缺点是显然只有“现代 Webkit 浏览器”才能使用它。
如果您不想依赖 curl,Javascript 可以提供帮助。有这个躺在周围。传入 $_POST 或要发布的数据数组。添加错误/参数检查。
function http_post_redirect($url='', $data=array(), $doc=true) {
$data = json_encode($data);
if($doc) { echo "<html><head></head><body>"; }
echo "
<script type='text/javascript'>
var data = eval('(' + '$data' + ')');
var jsForm = document.createElement('form');
jsForm.method = 'post';
jsForm.action = '$url';
for (var name in data) {
var jsInput = document.createElement('input');
jsInput.setAttribute('type', 'hidden');
jsInput.setAttribute('name', name);
jsInput.setAttribute('value', data[name]);
jsForm.appendChild(jsInput);
}
document.body.appendChild(jsForm);
jsForm.submit();
</script>";
if($doc) { echo "</body></html>"; }
exit;
}
form action
指出要在其中执行函数的 php 文档,然后最后放置header("location: your_location_file.php");
第一步 - 将表单提交到functions.php
第二步 - 对提交的数据做任何你需要做的事情
第三步 - 重定向
例子:
<form method="post" action="functions.php">
...
</form>
函数.php
<?php
...
all your code
...
header("location: your_location_file.php");
?>
您可以使用cUrl
发送所需的 POST 数据,然后进行重定向。
在网上查找:“php curl”。