我有一个发布姓名,电子邮件地址和消息的联系表格。我想检索这些值并作为电子邮件发送。
这是我的代码:
<?php
foreach($_POST as $key=>$value)
{
$key = $value;
}
$subject = "Website Contact Form";
$sender = $email;
$bccemail = $adminemail;
$receiver = $adminemail;
if(isset($name) and isset($email) and isset($sender) and isset($receiver) and isset($subject) ) {
$ToEmail = $receiver;
$mailheader = "From: " .$sender."\r\n";
$mailheader .= "Bcc: " .$bccemail."\r\n";
$mailheader .= "Reply-To: ".$sender."\r\n";
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";
$message_body = "<br /><b>Name:</b> " . $name . "<br />";
$message_body .= "<b>Email: </b> " . $sender . "<br />";
$message_body .= $message . "<br />";
if(@mail($ToEmail, $subject, $message_body, $mailheader))
{
echo "Success";
} else {
echo "Error";
}
} else {
echo "Big Error";
}
?>
从此我得到了回应 - “大错误”。
如果我回应......
foreach($_POST as $key=>$value)
{
echo "Key: $key<br />\n";
echo "Value: $value<br />\n";
}
然后我得到
钥匙:名字 价值:杰克 关键:电子邮件 价值:jake@email.com 关键信息 值:这是消息
所以我知道表格数据正在发布。
如果我将变量放入php就好了..
$name = "Jake";
$email = "jake@email.com";
$message = "This is the message";
然后是有效的。
所以我知道这与从数组中检索表单数据有关。
答案 0 :(得分:4)
看起来您正在尝试快速轻松地进行速记分配,这很好,但您需要使用extract()代替。
extract($_POST);
在这种情况下,key
将是变量名称,因此您可以执行
echo $name;
echo $email;
echo $message;
否则,你只需要做作业。
$name= isset($_POST['name'])?:false;
$email = isset($_POST['email'])?:false;
$message= isset($_POST['message'])?:false;
使用上述任何一种方法,您可以缩短条件:
if($name && $email && $message):
//successful
else:
//failure
endif;
答案 1 :(得分:0)
extract($_POST, EXTR_SKIP);
EXTR_SKIP - 如果发生冲突,请勿覆盖现有变量。
请勿对不受信任的数据使用extract()
,例如用户输入(即$ _GET,$ _FILES等)。如果你这样做,例如,如果你想运行暂时依赖于register_globals的旧代码,请确保使用其中一个非重写标志值,如EXTR_SKIP,并注意你应该以与variables_order中定义的顺序相同的顺序提取php.ini。