【问题标题】:Why does my page stay blank after I press submit?为什么我按提交后页面一直空白?
【发布时间】:2018-03-02 14:50:07
【问题描述】:

    <form method="post" action="mail_handler.php">
      <div class="col-sm-7 slideanim">
      <div class="row">
        <div class="col-sm-6 form-group">
          <input class="form-control" id="name" name="name" placeholder="Naam" type="text" required>
          </div>
          <div class="col-sm-6 form-group">
          <input class="form-control" id="phone" name="phone" placeholder="Telefoonnummer" type="text" required>
        </div> 
          <div class="col-sm-12 form-group">
          <input class="form-control" id="email" name="email" placeholder="Email" type="email" required>
        </div>
      </div>
      <textarea class="form-control" id="msg" name="msg" placeholder="Bericht" rows="5"></textarea><br>
      <div class="row">
        <div class="col-sm-12 form-group">
          <button class="btn btn-default pull-right" id="submit" type="submit">Verstuur</button>
        </div>
      </div>
    </div>
  </div>
</div>    
    </form>     

我试图让这个表单工作,但由于某种原因它只是不发送电子邮件,而且在我按下提交按钮后它也保持空白。我已经尽我所能尝试修复它,它一定是我一直忽略的非常明显的东西。 (我与 Cpanel 一起检查邮件是否正在发送,因此有一个 smtp 服务器可用)。

<?php
if(isset($_POST['submit'])){
    $name=$_POST['name'];
    $email=$_POST['email'];
    $phone=$_POST['phone'];
    $msg=$_POST['msg'];

    $to='info@sync-development.nl'; // Receiver Email ID, Replace with your email ID
    $subject='Form Submission';
    $message="Name :".$name."\n"."Phone :".$phone."\n"."Wrote the following :"."\n\n".$msg;
    $headers="From: ".$email;

    if(mail($to, $subject, $message, $headers)){
        echo "<h1>Bedankt voor uw bericht!"." ".$name.", Wij nemen zo snel mogelijk contact met u op.</h1>";
    }
    else{
        echo "Er is iets fout gegaan, probeer het alstublieft opnieuw.";
    }
}

?>

【问题讨论】:

  • 您的提交按钮没有名称属性name="submit"

标签: php html forms email


【解决方案1】:

你应该为按钮添加名称属性所以替换

<button class="btn btn-default pull-right" id="submit" type="submit">Verstuur</button>

<button class="btn btn-default pull-right" id="submit" name="submit" type="submit">Verstuur</button>`

【讨论】:

  • 它有效,我很惭愧我一开始没有看到这个。非常感谢!
【解决方案2】:

试试这个

<button class="btn btn-default pull-right" name="submit" id="submit" type="submit">Verstuur</button>

【讨论】:

  • 为什么任何人都应该“试试这个”?你改变了什么,为什么?
  • 我只是建议蒂莫西。他忘记在按钮标签内给出名字。
  • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。一个正确的解释would greatly improve 它的长期价值通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有其他类似问题的读者更有用。请edit您的回答添加一些解释,包括您所做的假设。
【解决方案3】:
<button class="btn btn-default pull-right" id="submit" type="submit">Verstuur</button>

您缺少 name 属性,并且您的 php 处理程序 没有进入 if true 条件,因为它找不到 “提交”键。像这样更改您的 HTML 按钮

<button class="btn btn-default pull-right" id="submit" name="submit" type="submit">Verstuur</button>

【讨论】:

    【解决方案4】:

    您可以将 name="" 属性添加到按钮或在其他一些 var 上中继。还要使用!empty() 仔细检查传递的变量是否不是空字符串。

    所以替换:

    if(isset($_POST['submit'])){
    

    与:

    if (!empty($_POST['email'])){
    

    或者简单地说:

    if (!empty($_POST)){
    

    【讨论】:

    • 你确定吗? "按钮的值不通过 POST 数组传递"?
    • @Qirel 只有在你设置 name attr 时才会传递,但你不应该传递静态值,而是传递传入的值。
    • 这样更准确。它们只有在有名字时才会发送,但如果有名字就会发送它们的值 ;-)
    • 我的错,使用按钮的值而不是隐藏的输入字段并不常见。