[英]PHP Issue with isset function
我正在为我的网站制作一个联系表格,该表格使用 php 将输入的信息发送到我的 email。
我的问题是 isset php function 返回 false。 我不确定这是为什么。
这是我的 php 代码(输出结果是“未发送”)
<?php
if (isset($_POST['submit'])){
$name = $_POST['name'];
$subject = $_POST['subject'];
$mailFrom = $_POST['mail'];
$message = $_POST['message'];
$mailTo = "btrorapps@gmail.com";
$headers = "From: " .$mailFrom;
$txt = "You have received an email from " .$name.".\n\n".$message;
if (mail($mailTo, $subject, $txt, $headers)){
echo "<h1>sent successfully</h1>";
} else {
echo "<h1>something went wrong</h1>";
}
} else {
echo "not sent";
}
?>
这是我的表单代码
<form action="contactform.php" method="post" enctype="text/plain">
<label for="name">Name</label>
<input type="text" name="name" placeholder="Full name.." maxlength="20" required>
<label for="mail">Email</label>
<input type="text" name="mail" placeholder="Your email.."
pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z{2,}$" required>
<label for="subject">Subject</label>
<input type="text" name="subject" maxlength="25" placeholder="Subject..">
<label for="message">Message</label>
<input type="text" name="message" placeholder="Message.." style="height:170px"
maxlength="150" required>
<input type="submit" value="submit" name="submit">
</form>
isset
function 没有任何问题。 它甚至不是与 PHP 相关的问题。
这都是关于表单提交编码的。 forms 有 3 种有效的编码类型:
您正在使用第三个,其记录如下:
使用
text/plain
格式的有效负载旨在供人类阅读。 它们不能被计算机可靠地解释,因为格式不明确(例如,无法区分值中的文字换行符和值末尾的换行符)。
你没有得到任何POST
变量,因为 PHP 在使用enctype="text/plain"
时没有填充$_POST
。
在$_POST
superglobal 的文档中:
当使用
application/x-www-form-urlencoded
或multipart/form-data
作为请求中的 HTTP Content-Type 时,通过 HTTP POST 方法传递给当前脚本的变量关联数组。
话虽如此,您仍然可以从请求正文中读取原始数据。
$data = file_get_contents('php://input');
但是您将获得整个数据作为字符串(纯文本)。
最后但同样重要的是,请注意, php://input
不适用于enctype="multipart/form-data"
。
不要使用isset($_POST['submit'])
引用提交按钮的情况,以防表单上有多个提交按钮,因为按钮并不总是被按下。 这在过去给我带来了问题。
在任何字段上按 enter 将使用第一个可用的提交按钮提交表单。
使用其中一个字段。 在您的情况下,您可以使用if (isset($_POST['name'])){
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.