带有isset函数的PHP问题
我正在为我的网站制作一个联系表单,它使用php将输入的信息发送到我的电子邮件中 我的问题是isset php函数返回false。我不知道这是为什么 这是我的php代码(输出的结果是“未发送”)带有isset函数的PHP问题,php,html,forms,isset,Php,Html,Forms,Isset,我正在为我的网站制作一个联系表单,它使用php将输入的信息发送到我的电子邮件中 我的问题是isset php函数返回false。我不知道这是为什么 这是我的php代码(输出的结果是“未发送”) 这是我的表格代码 <form action="contactform.php" method="post" enctype="text/plain"> <label for="name">
这是我的表格代码
<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($\u POST['submit']),以防表单上有多个提交按钮,因为该按钮并非始终按下。这在过去给我带来了很多问题
在任何字段上按enter键都将提交表单,其中第一个提交按钮可用
使用其中一个字段。在您的例子中,您可以使用
if(isset($\u POST['name']){
函数没有问题。它甚至不是与PHP相关的问题
这完全是关于表单提交编码的。表单有3种有效的编码类型:
text/plain
格式的有效载荷是人为的
可读性。它们不能被计算机可靠地解释,就像
格式不明确(例如,无法区分
从值末尾的换行符开始的值中的文字换行符)
由于PHP在使用enctype=“text/plain”
时不填充$\u POST
,因此不会得到任何POST
变量
在superglobal的文档中:
通过传递给当前脚本的变量的关联数组
使用应用程序/x-www-form-urlencoded
或
multipart/form data
作为请求中的HTTP内容类型
尽管如此,您仍然可以从请求主体读取原始数据
$data = file_get_contents('php://input');
但您将以字符串(纯文本)的形式获得整个数据
最后但并非最不重要的是,要小心,
php://input
不适用于enctype=“multipart/form data”
当您删除表单标签中的enctype时会发生什么?只需die(“”.print\r($\u POST)。
…我想您需要删除enctype,请阅读此()是什么让你认为isset
返回false?这是不正确的。以任何方式提交表单都应该发送其所有输入元素,包括type=input
好的,我明白你的意思了。我将行更改为if(isset($\u POST['name'])).我明白你的意思,但不幸的是它不起作用。结果仍然是“未发送”@SaidbakR这是不正确的。如果未单击提交按钮,即在文本字段上按enter键,则不会发送提交按钮。请尝试。其他每个字段都会发送提交按钮。提交按钮不会发送。例如@SaidbakR您的jsbin有错误,但我测试正确,您是对的,第一次提交已发送。我发布此答案是因为我使用了多个submit按钮,并有此问题。由于第一个提交按钮被发送,我的答案是错误的,我已经更新了它,但现在它是无关的,所以我将它留给版主离开或删除。我从文本/纯文本更改为多部分/表单数据,它工作完美。谢谢!!!
$data = file_get_contents('php://input');