我在我的索引页面上有一个html表单,在填充了字段并单击了提交按钮之后,表单动作移到了一个新页面,我名为“ indexform.php”,但未在“ indexform.php”页面。
以下是我的html表单代码:
<form method="post" action="indexform.php">
<input name="name" type="text" class="form-control" placeholder="Your Name">
<input name="email" type="text" class="form-control" placeholder="Your Email">
<input name="subject" type="text" class="form-control" placeholder="Subject">
<input name="budget" type="text" class="form-control" placeholder="Your Budget">
<textarea name="message" id="" cols="30" rows="7" class="form-control" placeholder="What kind of content marketing services are you looking for?"></textarea>
<input type="submit" formaction="indexform.php" name="submit" value="Send Message">
</form>
下面是我在indexform.php页面上的php代码:
<?php
$mail_to_send_to = "joseph@digitage.net";
$from_email = "joseph@digitage.net";
$sendflag = $_REQUEST['sendflag'];
if ($sendflag == "send") {
$email = $_REQUEST['email'];
$message = $_REQUEST['message'];
$name = $_REQUEST['name'];
$budget = $_REQUEST['budget'];
$headers = "From: $from_email" . "\r\n" . "Subject: $subject" . "\r\n" .
"Reply-To: $email" . "\r\n";
$a = mail($mail_to_send_to, "Message from a Home page contact form", $message, $headers);
if ($a) {
print("Message was sent, you can send another one");
} else {
print("Message wasn't sent, please check that you have changed emails in
the bottom");
}
}
?>
执行表单操作后,我没有收到任何消息。
答案 0 :(得分:0)
您在按钮元素中不需要formaction="index.php"
属性。只要您在action="indexform.php"
标记中包含<form>
,它将向该URL发送POST请求。
<form method="post" action="indexform.php">
<input name="name" type="text" class="form-control" placeholder="Your Name" />
<input name="email" type="text" class="form-control" placeholder="Your Email" />
<input name="subject" type="text" class="form-control" placeholder="Subject" />
<input name="budget" type="text" class="form-control" placeholder="Your Budget" />
<textarea name="message" cols="30" rows="7" class="form-control" placeholder="What kind of content marketing services are you looking for?"></textarea>
<input type="submit" name="submit" value="Send Message" />
</form>
我在您的PHP中注意到,您正在检查输入字段'sendflag'
,但是HTML中没有输入指令,因此实际上每次您检查“ sendflag”时,它始终为NULL。另外,您实际上应该使用$_POST
而不是$_REQUEST
来获取提交的输入字段。之所以称为“ POST”,是因为您要向指定的URL发送HTTP POST请求-您通过method="post"
属性选择了“ POST”。
尝试以下方法:
<?php
$mail_to_send_to = "joseph@digitage.net";
$from_email = "joseph@digitage.net";
if (!empty($_POST)) {
$email = $_POST['email'];
$message = $_POST['message'];
$name = $_POST['name'];
$budget = $_POST['budget'];
$headers = "From: $from_email" . "\r\n" . "Subject: $subject" . "\r\n" .
"Reply-To: $email" . "\r\n";
$a = mail($mail_to_send_to, "Message from a Home page contact form", $message, $headers);
if ($a) {
echo "<p>Message was sent, you can send another one</p>";
} else {
echo "<p>Message wasn't sent, please check that you have changed emails in the bottom</p>";
}
}
?>
检查是否已提交任何表单的一种好方法是使用if (!empty($_POST))
和empty() function。
如果愿意,可以使用method="get"
编写表单,然后所有输入字段都将显示在URL中,如下所示:
indexform.php?name=my+name&email=me%40example.com&subject=My+Subject ... etc.
然后,您当然可以使用$_GET
数组来检索它们。我知道这可能不是您想要的,我只是在解释两个主要HTTP请求之间的区别。
如果需要,您还可以使用<button>
元素作为表单提交者,它将与<input type="submit">
相同。
<button>Send Message</button>
答案 1 :(得分:-1)
通过$_POST
超全局变量而不是通过$_REQUEST
访问POST变量,将$_REQUEST
更改为$_POST
,这应该可以解决问题。