您好我正在为客户设计一个网站。 我设计了这个表格
<form action="inc/email.php" method="POST" onSubmit="alert('Email send successfully!');">
<div class="col-md-6">
<input type="text" id="contact-name" name="contact-name" value="" placeholder="Your name" required/>
<input type="email" id="contact-email" name="contact-email" value="" placeholder="Your email" required/>
<input type="number" id="contact-phone" name="contact-phone" value="" placeholder="Your phone" required/>
</div>
<div class="col-md-6">
<select name="cars">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="audi">Audi</option>
</select>
</div>
<div class="col-md-12">
<input type="submit" value="Send message"/></td>
</div>
</form>
它有3种选择可供选择第一辆沃尔沃,第二辆萨博和第三辆奥迪
现在我想根据用户选择将表单提交重定向到不同的网站
例如facebook.com如果用户选择沃尔沃,Twiiter.com如果他选择萨博。
我为同样的设计了以下PHP代码
<?php
/*Getting submitted values from html form*/
$name = $_POST['contact-name'];
$email = $_POST['contact-email'];
$phone = $_POST['contact-phone'];
$cars= $_POST['cars'];
/* Generating Output HTML */
$output = '<html><body><div>';
$output .= '<h2 style="color: #49A020;">Newsletter Email</h2>';
$output .= '<p style="line-height: 28px;font-size: 16px; text-align: justify; color: #333;">Name: '.$name.'</p>';
$output .= 'Phone: <a style="line-height: 28px;font-size: 16px; text-align: justify; color: #333;" href="tel: '.$phone.'">'.$phone.'</a><br><br>';
$output .= 'Email: <a style="line-height: 28px;font-size: 16px; text-align: justify; color: #333;" href="mailto:'.$email.'">'.$email.'</a>';
$output .= '</div><div>';
/*Signature */
$output .= '<hr style="border:1px solid #49A020;">';
$output .= '<p style="margin-top: 0px; margin-bottom: 0px;">Thanks & Regards,</p>';
$output .= '<p style="margin-top: 0px; margin-bottom: 0px;">South Post Fitness,</p>';
$output .= 'Phone: <a href="tel:416843 5925">(416) 843 5925</a><br>';
$output .='Email: <a href="maito: info@xx.com">info@xx.com</a>';
$output .= '</div></body></html>';
$to = 'my email address here'; /* Receivers Email*/
$headers = "From: $email \r\n"; /*Headers*/
$headers .= 'MIME-Version: 1.0' . "\n"; /*Headers*/
$headers .= 'Content-Type: text/html; charset=ISO-8859-1' . "\r\n"; /*Headers*/
$subject = 'my subject here'; /* Subject */
mail($to, $subject, $output, $headers); /*Sending Mail*/
if(mail) {
if($cars=="Volvo"){
header("Location: http://facebook.com"); /*Redirect to home after sucessfull submission*/
}
elseif($cars=="Saab"){
header("Location: http://twitter.com"); /*Redirect to home after sucessfull submission*/
}
elseif($cars=="Audi"){
header("Location: http://pintrest.com"); /*Redirect to home after sucessfull submission*/
}
}
else {
echo 'Error sending email'; /*If failed display error message */
}
?>
但是这段代码只会将页面重定向到第一个链接,即facebook.com,无论选择哪个选项
答案 0 :(得分:4)
mail($to, $subject, $output, $headers); /*Sending Mail*/
if(mail) {
应该是
$mail = mail($to, $subject, $output, $headers); /*Sending Mail*/
if($mail) {
请注意您的条件中缺少的变量分配和缺少的$
符号。
除此之外,您检查大写字符串,但实际字符串是小写字母。
if($cars=="Volvo")
与
不同if($cars=="volvo")
答案 1 :(得分:2)
mail函数的返回类型为bool,因此您应该使用结果进行检查:
$result = mail($to, $subject, $output, $headers);
if($result) {
...
}
应避免与==
进行字符串比较。使用strcmp('string1', 'string2') == 0
进行相等性检查。
如果您更改代码的最后一部分以使用strcmp
,则应该可以使用。
答案 2 :(得分:0)
非常简短的回答,但是你要从$ _POST [&#39;汽车&#39;]设置$ car并且你的选择是发布所有值,所以更改
<select name="cars">
到
<select name="cars[]">
通过这种方式,您将从select中获取包含其中所有值的$_POST['cars']
数组。否则它将首先发布<option>
修改强>
正如另一个答案所说你绝对应该做$mail_success = mail();
函数mail()返回bool。
然后你可以做if($mail_success) {}
编辑2
在die;
之后添加header()
- 否则脚本可能会继续并导致意外行为。