Php 表单数据插入数据库,然后将相同的数据用于电子邮件

Php 表单数据插入数据库,然后将相同的数据用于电子邮件,php,mysql,email,post,phpmailer,Php,Mysql,Email,Post,Phpmailer,我想做的是获取表单的数据并创建两封电子邮件发送出去,一封邮件发送到一个电子邮件地址,一封邮件发送到另一个地址,一封邮件发送到另一个地址 我在试图弄明白这一点时遇到了麻烦,所以我尝试了另一种方法,获取表单数据,将其转储到MySQL中,然后在SQL代码之后添加电子邮件代码。然后,我可以在cron作业上执行另一个操作,以提取一个晚上左右输入的MySQL数据 我让电子邮件正常工作,但MySQL插入失败。如果我把MySQL代码放在自己的位置,数据就被正确插入了。我意识到我没有对数据进行清理,这是开始阶段,

我想做的是获取表单的数据并创建两封电子邮件发送出去,一封邮件发送到一个电子邮件地址,一封邮件发送到另一个地址,一封邮件发送到另一个地址

我在试图弄明白这一点时遇到了麻烦,所以我尝试了另一种方法,获取表单数据,将其转储到MySQL中,然后在SQL代码之后添加电子邮件代码。然后,我可以在cron作业上执行另一个操作,以提取一个晚上左右输入的MySQL数据

我让电子邮件正常工作,但MySQL插入失败。如果我把MySQL代码放在自己的位置,数据就被正确插入了。我意识到我没有对数据进行清理,这是开始阶段,我正在尽可能保持干净,直到我能让它工作。一旦一切正常,我将清理输入

// Variables assigned to the POST data

// DB Section _____________________________________

$dbservername = "localhost";
$dbUsername = "**********";
$dbPassword = "***********";
$dbName = "**************";
$date = date("l jS \of F Y h:i:s A");



$conn = mysqli_connect($dbservername, $dbUsername, $dbPassword, $dbName);

// Check connection
    if (mysqli_connect_errno()) {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      exit();
    }
        
$sql = "INSERT INTO notifications (sender_name, sender_email, recipients_name, recipients_email, how_signed, auto_hug_type, date_of_hug, reason, interests) VALUES ('$name', '$email', '$recipientsName', '$recipientEmail', '$signOff', '$hugType', '$date', '$reason', '$interests');";

$run = mysqli_query($conn, $sql);

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

//Instantiation and passing [ICODE]true[/ICODE] enables exceptions

require_once "PHPMailer/src/PHPMailer.php";
require_once "PHPMailer/src/SMTP.php";
require_once "PHPMailer/src/Exception.php";

$mail = new PHPMailer(true);

try {
   
    //Server settings
    $mail->SMTPDebug = 0;
    $mail->isSMTP();
    $mail->HOST = 'localhost';
    $mail->SMTPAuth = true;
    $mail->Username = '***********';
    $mail->Password = '***********';
    $mail->SMTPSecure = 'tls';
    $mail->Port = 587;
    
    // This section left blank, this is where the email addresses are being sent to and from


    // Content
    $mail->isHTML(True);
    $mail->Subject = $subject;
    $mail->Body = $message1 . $message2;


    if ($mail->send()){
        echo 'Email Sent...!  Press <a href="http://www.******.com">Here</a> to return to the site';
    } else {
        echo "Message could not be sent. Mailer Error: "{$mail->ErrorInfo};
    }
   

}   catch (Exception $e) {
    echo "Message could not be sent.  Mailer error: {$mail->ErrorInfo}";
}

$mail->SMTPClose();
//分配给POST数据的变量
//DB段_____________________________________
$dbservername=“localhost”;
$dbUsername=“**********”;
$dbPassword=“**********”;
$dbName=“*************”;
$date=date(“l jS\of F Y h:i:sa”);
$conn=mysqli_connect($dbservername、$dbUsername、$dbPassword、$dbName);
//检查连接
if(mysqli\u connect\u errno()){
echo“未能连接到MySQL:”.mysqli_connect_error();
退出();
}
$sql=“在通知(发件人姓名、发件人电子邮件、收件人姓名、收件人电子邮件、签名方式、自动拥抱类型、拥抱日期、原因、兴趣)中插入值(“$name”、“$email”、“收件人姓名”、“收件人电子邮件”、“签收”、“拥抱类型”、“拥抱日期”、“原因”、“兴趣”);”;
$run=mysqli\u查询($conn,$sql);
使用PHPMailer\PHPMailer\PHPMailer;
使用PHPMailer\PHPMailer\Exception;
//实例化并传递[ICODE]true[/ICODE]将启用异常
需要一次“PHPMailer/src/PHPMailer.php”;
需要一次“PHPMailer/src/SMTP.php”;
需要一次“PHPMailer/src/Exception.php”;
$mail=新的PHPMailer(true);
试一试{
//服务器设置
$mail->SMTPDebug=0;
$mail->isSMTP();
$mail->HOST='localhost';
$mail->SMTPAuth=true;
$mail->Username='***********';
$mail->Password='************';
$mail->SMTPSecure='tls';
$mail->Port=587;
//此部分留空,这是发送电子邮件地址的地方
//内容
$mail->isHTML(True);
$mail->Subject=$Subject;
$mail->Body=$message1.$message2;
如果($mail->send()){
回显“已发送电子邮件…!按返回网站”;
}否则{
echo“无法发送邮件。邮件程序错误:{$mail->ErrorInfo};
}
}捕获(例外$e){
echo“无法发送邮件。邮件程序错误:{$mail->ErrorInfo}”;
}
$mail->SMTPClose();

您的问题不在于代码,您的表可能有问题,请使用“echo mysqli_error($conn);”查看您遇到了什么问题。@ddiestra对此表示感谢,应该早就考虑这样做。显然,这是一个位置问题。我将它向上移动,直接放在POST数据的变量赋值下,这将它放在消息构造之上,并且它工作正常。警告:您完全可以使用参数化的预处理语句,而不是手动生成查询。它们由或提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行。为什么要对输入进行消毒?这到底是什么意思?@Dharman这就是我所说的净化输入的意思。我在开场白中特别提到了这一点,因为我期待得到这样的回应。这只是一个函数,不用于实时数据,不用于未对输入进行“消毒”的情况,也不是我的全部代码,只是给我带来麻烦的部分。这意味着我将准备输入数据,以确保不会注入任何恶意内容。在我的问题中,我把这一点放在了前面,因为我知道在代码中,它对注入是完全开放的。