我有一个html页面,顶部的PHP表单验证,以检查字段是否为空,之后是一个html表单,之后一些html显示错误消息,如果字段没有填写。表单的顶部看起来像:
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
在页面顶部的PHP中,我检查输入字段是否为空。
if($_SERVER["REQUEST_METHOD"]==='POST')
{
if($_POST["field1"]==""){
$errormessage = "field1 is not empty";
}elseif($_POST["field2"]==""){
$errormessage = "field1 is not empty";
}else{
// if the fields are both filled in i want to send the form
//variables to mailing.php where are the variables are mailed
}
这是我的页面中错误代码的html:
如果两个字段都已填满,我想将POST数据发送到mailing.php
,我可以将变量格式化为html电子邮件。
我现在知道这个代码这是可能的。
头( '位置:?mailing.php名称=东西第二=东西')
但我有很多领域。超过50。 有没有办法可以将所有变量(整个$ POST)发送到另一个页面? 就像你一样:
<form action="mail.php" method="post">
所以在mail.php中,我可以发送这样的邮件:
echo ' <html> <body>';
echo '<table class="aanvraagtabel" cellpadding="4">';
echo '<tr>';
echo '<th> Field1: </th>';
echo '<td>'.$_POST["field1"].'</td>';
echo '</tr>';
echo '</table>';
echo ' </html> </body>';
答案 0 :(得分:0)
您可以将header()
与$_POST
一起使用,因为$_POST
包含所有发布的字段
if($_SERVER["REQUEST_METHOD"]==='POST')
{
if($_POST["field1"]==""){
$errormessage = "field1 can not be empty.";
}elseif($_POST["field2"]==""){
$errormessage = "field2 can not be empty.";
}else{
header('location:mailing.php?' . http_build_query($_POST));
exit;
}
}
答案 1 :(得分:0)
上述解决方案会将您重定向到另一个php页面,您必须在mailing.php文件中收听$ _GET。
以下函数将对给定的url执行另一个post请求:
function postTo($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($_POST));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch); // Just in case needed. I think you dont really needs this because on the other script you just sends an email.
curl_close ($ch);
return $response;
}
将它集成到您的代码中应该如下所示:
if ($_SERVER["REQUEST_METHOD"]==='POST')
{
if ($_POST["field1"]=="") {
$errormessage = "field1 is not empty";
} elseif ($_POST["field2"]=="") {
$errormessage = "field1 is not empty";
} else {
$url = $_SERVER["SERVER_PROTOCOL"] . $_SERVER['HTTP_HOST'] ."/mailing.php";
$response = postTo($url);
}
}
我想提一下,还有一些其他库可以简化这些代码,例如Guzzle。你可能想看看。
希望有所帮助, 伊甸