PHP 抛出“未定义的索引”或不以电子邮件形式发送电子邮件


php throwing "undefined index" or not sending email in email form

我正在尝试在网站上放置一个基本的电子邮件表单,并且遇到了"未识别索引"的问题。我四处阅读,发现"isset()"已经解决了这个问题。我发现

$... = isset($_POST['...']);

确实摆脱了错误消息,但我的代码什么也没做。该页面甚至不会刷新或抛出另一个错误。这是我的网页:

    <form method="post" action="index.php">
        <h1>Send Us an Email</h1>
        <header class="emailbody">
           <label>Name</label>
           <input name="name" placeholder="Type Here">
        </header>
        <section class="emailbody">
            <label>Email</label>
            <input name="email" type="email" placeholder="Type Here">
        </section>
        <footer class="emailbody">
            <label>Message</label>
            <textarea name="message" placeholder="Type Here"></textarea><br>
        </footer>
        <div class="submitbutton">
            <input id="submit" type="submit" value="Send">
        </div>
    </form>

这是我的 php:

<?php
    $name = isset($_POST['name']);
    $email = isset($_POST['email']);
    $message = isset($_POST['message']);
    $from = 'From: SiteDemo';
    $to = 'exemail@gmail.com';
    $subject = 'Hello';
    $body = "From: $name'n E-Mail: $email'n Message:'n $message";
?>

我已经尝试过在不同索引周围有和没有"isset()"的情况下。如果没有,它会抛出错误,并且代码不会执行任何操作。

有两件事需要纠正:

1)您尚未编写mail()函数语句。

2) isset()仅返回TRUEFALSE,具体取决于是否设置了变量。如果设置了变量,它不会返回变量。

将其更正为:

$name = isset($_POST['name']) ? $_POST['name'] : '';

其他变量也是如此。

是的,您可以在此处使用isset()来检查是否设置了值:

if(isset($_POST['submit']))
{   
   // if you dont want to send empty email.
   if(!empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['message'])) 
   {
      $name = trim($_POST['name']);
      $email = trim($_POST['email']);
      $message = trim($_POST['message']);
      $header = "From: SiteDemo"; 
      $to = 'exemail@gmail.com';
      $subject = 'Hello';
      $body = "From: $name'n E-Mail: $email'n Message:'n $message";
      mail($to,$subject,$body,$header);
   }
}

并在提交按钮中添加名称属性为:

<input id="submit" type="submit" value="Send" name="submit">