我试图让我的PHP和表单正常工作

时间:2013-11-04 04:12:52

标签: php html5 forms

嘿,我有一个简单的编码问题,我希望有人能发现我的方式错误。

我有一个联系页面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>

5 个答案:

答案 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 电话#“而非价值。