微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP 表单未提交

如何解决PHP 表单未提交

当我单击提交按钮时,我有以下表单代码,但没有提交。它给出错误报告“出现问题”。我已经调试了几次,但似乎不知道为什么。拜托,有人可以帮我解决这个问题吗?非常感谢您的帮助

<?PHP
  $errorMSG = "";

  if (empty($_POST["name"])) 
  {
    $errorMSG = "Name is required ";
  } 
  else 
  {
    $name = $_POST["name"];
  }

  if (empty($_POST["email"])) 
  {
    $errorMSG = "Email is required ";
  } 
  else 
  {
    $email = $_POST["email"];
  }

  if (empty($_POST["phone"])) 
  {
    $errorMSG = "Phone is required ";
  } 
   else 
  {
    $phone = $_POST["phone"];
  }

  if (empty($_POST["select"])) 
  {
    $errorMSG = "Select is required ";
  } 
  else 
  {
    $select = $_POST["select"];
  }

  if (empty($_POST["terms"])) 
   {
    $errorMSG = "Terms is required ";
  } 
  else 
  {
    $terms = $_POST["terms"];
  }

  $EmailTo = "fredsoftsolutions@gmail.com";
  $Subject = "New meeting request from Fredsoft Solutions";

  // prepare email body text
  $Body = "";
  $Body .= "Name: ";
  $Body .= $name;
  $Body .= "\n";
  $Body .= "Email: ";
  $Body .= $email;
  $Body .= "\n";
  $Body .= "Phone: ";
  $Body .= $phone;
  $Body .= "\n";
  $Body .= "Package: ";
  $Body .= $select;
  $Body .= "\n";
  $Body .= "Terms: ";
  $Body .= $terms;
  $Body .= "\n";

  // send email
  $success = mail($EmailTo,$Subject,$Body,"From:".$email);
  // redirect to success page
  if ($success && $errorMSG == "")
  {
   echo "success";
  }
  else
  {
    if($errorMSG == "")
  {
        echo "Something went wrong";
    } 
   else 
   {
        echo $errorMSG;
    }
  }
  ?>

非常感谢您的帮助

解决方法

通常为了发送电子邮件,人们需要设置一个邮件服务器或从现有服务器中合并它,否则将没有域来发送电子邮件。

因此,我建议您使用 https://github.com/PHPMailer/PHPMailer 提供的 PHPMailer 类。

这是一个片段。

<?php
require 'PHPMailerAutoload.php';

$mail = new PHPMailer;

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp1.example.com;smtp2.example.com';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'user@example.com';                 // SMTP username
$mail->Password = 'secret';                           // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable encryption,'ssl' also accepted

$mail->From = 'from@example.com';
$mail->FromName = 'Mailer';
$mail->addAddress('joe@example.net','Joe User');     // Add a recipient
$mail->addAddress('ellen@example.com');               // Name is optional
$mail->addReplyTo('info@example.com','Information');
$mail->addCC('cc@example.com');
$mail->addBCC('bcc@example.com');

$mail->WordWrap = 50; // Set word wrap to 50 characters
$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
$mail->addAttachment('/tmp/image.jpg','new.jpg'); // Optional name
$mail->isHTML(true); // Set email format to HTML

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}
?>
,

可能你也有一个 HTML 表单,我猜是这样的:

<form action="" method="POST">
<label for="name">Name
    <input type="text" name="name" id="name" />
</label>
<label for="email">Email
    <input type="email" name="email" id="email" />
</label>
<label for="phone">Phone
    <input type="text" name="phone" id="phone" />
</label>
<select name="select">
    <option value="the_value_you_want_to_send_1">1st value</option>
    <option value="the_value_you_want_to_send_2">2nd value</option>
    <option value="the_value_you_want_to_send_2">3rd value</option>
</select>
<input type="submit" name="submit_form" value="Send" />
</form>

如您所见,action="" 是空的。因此,当您提交此表单时,页面将刷新。这意味着,提交的值将出现在同一页面。 此外,最好为“选择”选项使用另一个名称,例如:name="select_options" 而不是 name="select"

如果你想将这些值发送到另一个页面,你也可以使用这样的表单操作:

<form action="send_mail.php" method="POST">

在这个 PHP 文件“send_mail.php”中,您将拥有您发布的代码......但也有一些错误。你需要有这样的东西:

<?php
if($_POST["submit_form"]) {
    //check your $_POST values here
    if (empty($_POST["name"])) {
        $errorMSG = "Name is required ";
    } 
    else {
        $name = $_POST["name"];
    }

    if(empty($_POST["email"])) {
        $errorMSG = "Email is required ";
    } 
    else {
        $email = $_POST["email"];
    }
    //and so on
    
}
?>

最后但并非最不重要的是,如果您不使用其他 PHP 文件来发送这些 $_POST 值,则需要在 HTML 代码上方插入 PHP 代码,以便首先查看错误消息. 不过,我建议在提交表单之前通过 Javascript 和/或 jQuery 进行验证 关于发送电子邮件,您可以像@Ferid Bedru Sherif 建议的那样使用 PHPmailer,但这是另一个问题,您可以找到答案 检查这个完整的例子 here

了解并了解所有这些是如何工作的将很有帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?