-1

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

我有一个联系页面http://mattmcdougall.ca/contact 这个页面有一个连接到表单 PHP 的表单。

它工作了一半,我收到的电子邮件只有名称主题和收件人(我)。我没有得到表格中的其他信息。(电话号码和内容没有放在电子邮件中)另外,我希望网站将填写表格的人带到http://mattmcdougall.ca/contactdone目前它转到一个空白的 form.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>
4

5 回答 5

1

HTTP POST 变量区分大小写,并且输入字段的名称与 PHP 中的名称不匹配。<input type="text" name="datanamehere" />$_POST["datanamehere"]. 就像其他答案所说的那样:

HTML:

<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>

请注意,我将 更改valueplaceholder,并使用了type="email"and type="tel"

表单.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"; 
if (mail($recipient, $subject, $mail_body, $header))  //mail command :)
    'http://mattmcdougall.ca/contactdone.html';
else
    echo "Sorry Something Went Wonky, Please Try Again!";

正如他们所说,mail()是一个返回布尔值的函数。将其环绕if以检查是否成功。

于 2013-11-04T04:35:43.573 回答
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;

这是正确的签名:

布尔邮件(字符串 $to ,字符串 $subject ,字符串 $message [,字符串 $additional_headers [,字符串 $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>

表单.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!";
}
?>
于 2013-11-04T04:17:24.327 回答
0

mail 是一个函数,因此仅通过编写 mail 在“if”中检查它是行不通的。

试试这个

if(mail()): 
// go to contactdone.html
header('Location: http://www.google.com');
exit();
else:
echo "Sorry Something Went Wonky, Please Try Again!";
endif;
于 2013-11-04T04:30:20.063 回答
0

你可以尝试几件事,

  • 如果(邮件)' http://mattmcdougall.ca/contactdone.html ' 不会做任何事情,请尝试使用 Header('Location http://mattmcdougall.ca/contactdone.html ')

  • 每当您使用 $_POST 时,[''] 中的参数名称都需要与您的输入名称匹配(例如:<input name="interest" type="text"> 将是$_POST['interest']

  • 如果要在输入中显示文本,请使用 placeholder="enter phone#" 而不是 value。

于 2013-11-04T04:32:03.927 回答
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>
于 2013-11-04T04:21:30.200 回答