【问题标题】:Send information (from a form) to a database and email将信息(从表单)发送到数据库和电子邮件
【发布时间】:2011-10-03 22:06:53
【问题描述】:

我有一个表单,允许用户选择在新产品推出时接收通知。目前,用户的信息被验证并发送到数据库。但是,我还需要将其发送到电子邮件地址。

两个脚本分开工作;但事实证明,让他们一起工作很困难。

 <?php
 //CHECK CAPTCHA IMAGE
 session_start();

 if( isset($_POST['submit'])) {
 if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'])) { 
    //          IF CAPTCHA CHECKS OUT, CONTINUE TO VALIDATE DATA.

    if( !isset($_POST['fname']) ||
        !isset($_POST['lname']) ||
        !isset($_POST['email']))
        {
            echo '<script type="text/javascript">';
            echo 'alert("Please go back and fill out the entire form.");';
            echo '</script>';
        }   

        //          CONNECT TO DATABASE

        $dbhost = 'DATABASE NAME';
        $dbuser = 'DATABASE USER';
        $dbpass = 'PASSWORD';
        $dbname = 'DATABASE NAME';
        $dbtable = 'TABLE NAME';
        $conn = mysql_connect($dbhost, $dbuser, $dbpass);

        if(! $conn)
        {
         die('Could not connect: ' . mysql_error() . '<br />');
        } else {
         //echo 'Connected successfully. <br />';
        }

        $selected = mysql_select_db($dbname,$conn);
        if(! $selected)
        {
         die('Could not connect: ' . mysql_error() . '<br />');
        } else {
         //echo 'Connected successfully. <br />';
        }

        $fname = mysql_real_escape_string(stripslashes($_POST['fname']));
        $lname = mysql_real_escape_string(stripslashes($_POST['lname']));
        $email = mysql_real_escape_string(stripslashes($_POST['email']));
        $today = date("Y-m-d H-i-s");

        if (mysql_query("INSERT INTO $dbtable(fname, lname, email, date) VALUES('$fname', '$lname', '$email', '$today')") != true)
        {
            echo ("ERROR: " . mysql_error() . "<br />");    
        } else { 
            //echo 'Thank you, your information has been entered into our database. <br />';

        }

        mysql_close($conn); // CLOSE DATABASE

        include('../thankyou.html');    

        unset($_SESSION['security_code']);  //END SESSION
} else //       IF CAPTCHA DOESN'T CHECK OUT, DISPLAY ERROR MESSAGE.

{
    echo '<script type="text/javascript">';
    echo 'alert("Sorry, you have provided an invalid security code.")';
    echo '</script>';
}
}

?>

我尝试将表单到电子邮件脚本作为“包含”包含在内,并尝试将这两个脚本集成为一个,但到目前为止都没有奏效。

任何想法将不胜感激..谢谢!

【问题讨论】:

    标签: php database forms email


    【解决方案1】:

    对于电子邮件部分,只需使用 mail 函数,或者更好的是,使用经过充分测试的邮件程序库之一,例如 PHPMailer 和 Swift Mailer。

    【讨论】:

      【解决方案2】:

      关闭 mysql 连接后尝试使用 PHP 邮件功能。比如……

      $my_email = 您希望将其发送到的任何地址。

      $subject = 电子邮件主题行。

      $message = 电子邮件的内容,如果您愿意,可以包含您的变量和 html 格式。比如:

      $message = " $time (Central Time) \n
      From: $visitor ($visitormail)\n
      Message: $notes
      ";
      

      $headers = 标头信息,类似于:

      $headers = "From: $visitormail \r\n" .
          "Reply-To: $visitormail \r\n" .
          'X-Mailer: PHP/' . phpversion();
      

      ...并使用...发送电子邮件

      mail("$my_email", $subject, $message, $headers);
      

      然后你可以重定向到另一个页面:

      header( "Location: http://example.com/thankyou.html");
      

      【讨论】:

      • 所以,我尝试过这种方法;整个脚本运行没有任何错误并写入数据库,但信息仍然没有发送到我选择的电子邮件。我不认为有办法通过电子邮件将新增内容发送到 PHP MyAdmin 数据库,有吗(一厢情愿)?
      • 那我不确定;我会说这很可能是服务器配置问题。您可以从该服务器使用其他方法发送电子邮件吗?我个人更喜欢 Adminer 而不是 PHPMyAdmin,它更干净,更易于使用。
      【解决方案3】:
      <?php
      
          $dbhost = '';
          $dbuser = '';
          $dbpass = '';
          $dbname = '';
          $dbtable = 'webagents';
          //$conn = mysql_connect($dbhost, $dbuser, $dbpass);
          $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
          //$conn = mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);
          if(!$conn)
          {
           die('Could not connect: ' . mysqli_error() . '<br />');
          } else {
           //echo 'Connected successfully. <br />';
          }
      
          $selected = mysqli_select_db($conn,$dbname);
          if(! $selected)
          {
           die('Could not connect: ' . mysqli_error() . '<br />');
          } else {
           //echo 'Connected successfully. <br />';
          }
      
          $cname = mysqli_real_escape_string($conn, $_POST['compname']);
          $cperson = mysqli_real_escape_string($conn, $_POST['contperson']);
          $email = mysqli_real_escape_string($conn, $_POST['email']);
          $phone = mysqli_real_escape_string($conn, $_POST['phone']);
          $country = mysqli_real_escape_string($conn, $_POST['country']);
      
          if (mysqli_query($conn,"INSERT INTO $dbtable(compname, contperson, email, phone, country) VALUES('".$cname."','".$cperson."', '".$email."', '".$phone."', '".$country."')") != true)
      
          {
              echo ("ERROR: " . mysqli_error($conn) . "<br />");
              //die (mysqli_error($myConnection));    
          } else { 
              echo 'Thank you, your information has been entered into our database. <br />';
          }
          mysqli_close($conn); // CLOSE DATABASE
      
      ?>
      

      【讨论】:

      猜你喜欢
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      • 1970-01-01
      • 2018-07-06
      • 1970-01-01
      • 2023-04-09
      • 2017-10-28
      相关资源
      最近更新 更多