嘿,我有一个简单的编码问题,我希望有人能发现我的方式错误。
我有一个联系页面http://mattmcdougall.ca/contact 此页面有一个连接到PHP表单的表单。
它只有一半工作,我收到的电子邮件只有名称主题和收件人(我)。我没有在表格中获得其他信息。 (电话号码和内容不会放在电子邮件中)另外,我希望网站将填写表格的人员带到http://mattmcdougall.ca/contactdone目前它转到空白的表格.php页面
这里是表单代码和PHP代码,请随意清理PHP,因为我使用的是我在网上找到的模板。
<form action="form.php" method="post" class="formtext">
<input name="Name" type="text" value="enter name" maxlength="60"><br>
<input name="Email" value="enter email" type="text"><br>
<input name="Phone Number" value="enter phone#"type="text"><br><br>
<textarea name="Interest" cols="60" rows="10">Interest?</textarea><br><input name="Submit" type="submit" value="Submit"><form
和PHP
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Matt McDougall Photography</TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<?php
$name = $_POST['name']; //senders name
$email = $_POST['email']; //senders e-mail adress
$phone = $_POST['phone'];
$recipient = "matt@mattmcdougall.ca"; //recipient
$mail_body = $_POST['interest']; //mail body
$subject = "interested client"; //subject
$header = "From: ". $Name . " <" . $email . ">\r\n";
mail($recipient, $subject, $mail_body, $phone, $header); //mail command :)
if(mail)
'http://mattmcdougall.ca/contactdone.html';
else
echo "Sorry Something Went Wonky, Please Try Again!";
?>
</BODY>
</HTML>
答案 0 :(得分:1)
您需要更改表单元素的名称以匹配您希望通过$ _POST接收的参数。
现在你有(例如):
<input name="Phone Number" value="enter phone#"type="text"><br><br>
但是你需要命名它:
<input name="phone" value="enter phone#"type="text"><br><br>
name属性是通过表单提交给PHP脚本的内容。你需要在两边使用相同的名称。
您的邮件功能调用中的$ phone变量是什么?这些区域保留用于额外的标题,而不仅仅是$ phone。您需要将电话号码连接到$ mail_body,如此(当然还有其他格式):
$mail_body = $mail_body . " " . $phone;
这是正确的签名:
bool mail(string $ to,string $ subject,string $ message [,string $ additional_headers [,string $ additional_parameters]])
编辑:除了所有这些之外,你的$ header也是错误的,因为它试图使用不存在的$ Name变量。 $ name变量确实存在。
我认为以下内容可以解决您的问题。
<强>形式:强>
<form action="form.php" method="post" class="formtext">
<input type="text" name="name" placeholder="Enter Name" maxlength="60"><br>
<input type="text" name="email" placeholder="Enter Email"><br>
<input type="text" name="phone" placeholder="Enter Phone #"><br><br>
<textarea name="interest" cols="60" rows="10" placeholder="Interest?"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>
<强> form.php的强>
<?php
$name = $_POST["name"];
$email = $_POST["email"];
$phone = $_POST["phone"];
$interest = $_POST["interest"];
$to = "matt@mattmcdougall.ca";
$subject = "Interested Client";
$headers = "From: {$name} <{$email}>\r\n";
$mail_body = <<<EMAIL
Name: {$name}
Phone: {$phone}
Message:
{$interest}
EMAIL;
$mail_success = mail($to, $subject, $mail_body, $headers);
if($mail_success) {
echo "http://mattmcdougall.ca/contactdone.html"; // are you trying to redirect to here?
} else {
echo "Sorry, something went wonky! Please try again!";
}
?>
答案 1 :(得分:1)
HTTP POST变量区分大小写,输入字段的名称与PHP中的名称不匹配。 <input type="text" name="datanamehere" />
$_POST["datanamehere"]
<form action="form.php" method="post" class="formtext">
<input name="name" placeholder="Full name" type="text" maxlength="60"><br>
<input name="email" placeholder="Email" type="email"><br>
<input name="phone" placeholder="Phone number" type="tel"><br><br>
<textarea name="interest" placeholder="Interested in?" cols="60" rows="10"></textarea><br>
<input type="submit" value="Submit">
</form>
。像其他答案所说:
<强> HTML:强>
value
注意我已将placeholder
更改为type="email"
,并使用了type="tel"
和$name = $_POST['name']; //senders name
$email = $_POST['email']; //senders e-mail adress
$phone = $_POST['phone'];
$recipient = "matt@mattmcdougall.ca"; //recipient
$mail_body = $_POST['interest']; //mail body
$subject = "interested client"; //subject
$header = "From: ". $name . " <" . $email . ">\r\n";
if (mail($recipient, $subject, $mail_body, $header)) //mail command :)
'http://mattmcdougall.ca/contactdone.html';
else
echo "Sorry Something Went Wonky, Please Try Again!";
。
<强> form.php的强>
mail()
正如他们所说,if
是一个返回布尔值的函数。将其包裹在{{1}}周围以检查是否成功。
答案 2 :(得分:0)
您的元素名称与PHP代码中的元素名称不匹配,并且您的表单未使用。
正确关闭<form action="form.php" method="post" class="formtext">
<input name="name" type="text" value="enter name" maxlength="60"><br>
<input name="email" type="text" value="enter email"><br>
<input name="phone" type="text" value="enter phone#"><br><br>
<textarea name="Interest" cols="60" rows="10">Interest?</textarea><br>
<input name="submit" type="submit" value="Submit">
</form>
答案 3 :(得分:0)
邮件是一项功能,因此请在&#39;中查看邮件。只写邮件就不会起作用。
试试这个
if(mail()):
// go to contactdone.html
header('Location: http://www.google.com');
exit();
else:
echo "Sorry Something Went Wonky, Please Try Again!";
endif;
答案 4 :(得分:0)
你可以尝试一些事情,
if(mail)'http://mattmcdougall.ca/contactdone.html'不会这样做 什么,尝试使用标题('位置 http://mattmcdougall.ca/contactdone.html')
每当你使用$ _POST时,['']中的参数名称都需要
匹配您的输入名称(示例:<input name="interest" type="text">
将是$_POST['interest']
)
如果要在输入中显示文本,请使用placeholder =“enter 电话#“而非价值。