我的PHP脚本有问题。 它应该像这样工作: 用户填写预订详细信息 - >将详细信息发送到preservation.php。
如果人数大于6,则应防止数据进入数据库。同时应该将填写的详细信息重新发送到原始表单,以便用户可以编辑详细信息。
但是会发生的事情是标题会将preserve.php作为下载发送回来(内容是HTML,不是PHP)。
$username = $_POST['username'];
$name = $_POST['name'];
$email = $_POST['email'];
$tel = $_POST['tel'];
$date = $_POST['date'];
$time = $_POST['time'];
$pers = $_POST['pers']; //Amount of persons
$comment = $_POST['comment'];
if($pers >= 7){
$post_date = 'test=test'; //Just to test the script
$content_length = strlen($post_data);
header('POST reservation.php');
header('Host: localhost');
header('Connection: close');
header('Content-type: application/x-www-form-urlencoded');
header('Content-length: ' . $content_length);
header('');
header($post_data);
header('Location: reservation.php');
}
答案 0 :(得分:1)
首先,您的代码中有一个拼写错误:
$post_date = 'test=test';
应该是
$post_data = 'test=test';
其次,我不完全确定是什么导致了您的问题,因为我从未需要回发已发布的请求中的数据。
正如我在评论中建议的那样,我建议你改为解决这个问题:
reservation.php
文件,如我在其他评论中提到的,或通过任何其他有意义的方式点)。答案 1 :(得分:1)
PHP header()
函数将HTTP标头发送回用户代理(例如Web浏览器)。当您执行header('Content-type: application/x-www-form-urlencoded');
时,您有效地告诉用户浏览器将整个页面视为 application / x-www-form-urlencoded ,这会导致Web浏览器尝试下载该页面解析和显示它。
您无法将POST请求重新发送回浏览器。你试图做的事情不能以你想要的方式完成。
如果您想保留表单数据,可以让浏览器返回上一页,或者使用用户首次提交表单时收集的值重建表单。