如何解决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 举报,一经查实,本站将立刻删除。