PHP 的 isset 函数问题

我正在为我的网站制作一个联系表单,该表单使用 php 将输入的信息发送到我的电子邮件。


我的问题是 isset php 函数返回 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>


largeQ
浏览 127回答 2
2回答

慕的地10843

功能上没有什么问题isset。这甚至不是 PHP 相关的问题。这都是关于表单提交编码的。表单有 3 种有效的编码类型:application/x-www-form-urlencoded(默认)multipart/form-datatext/plain您正在使用第三个,其记录如下:使用该text/plain格式的有效负载旨在便于人类阅读。它们无法被计算机可靠地解释,因为格式不明确(例如,无法区分值中的文字换行符和值末尾的换行符)。您没有获得任何POST变量,因为 PHP$_POST在使用enctype="text/plain".在 superglobal的文档中$_POST: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'])){
打开App,查看更多内容
随时随地看视频慕课网APP