在同一个PHP中完成两个进程

时间:2016-11-03 22:34:30

标签: php mysql email

再次带来麻烦,我有一个PHP表单,我收到信息(姓名和电子邮件)并通过电子邮件发送信息,反过来允许下载带有JS验证的文件,如果我删除发送电子邮件,将信息保存在MySQL中但如果我发送邮件,请不要保存信息......

这是index.php

中的代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Muestra Gratuita</title>
    <link href="https://fonts.googleapis.com/css?family=Raleway" rel="stylesheet">
    <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <link rel="shortcut icon" href="img/favicon.ico">
    <div id="fb-root"></div>
    <script type="text/javascript">
        function validar(){
            var copia = document.getElementById("txtcopia").value;
            var captcha = document.getElementById("captcha").value;

            if (copia == captcha) {
                window.open("muestra/Corazon_prodigo.pdf", "_blank");
            }else{
                alert("El codigo ingresado no coincide");
            }
        }
    </script>
    <script type="text/javascript">
        document.oncontextmenu = function(){return false;}
    </script>
</head>
<body>
    <div class="container" style="padding-top : 50px;">
        <div class="row">
            <div class="col-md-6">
                <div class="display-block">
                    <img class="img-responsive center-block" src="img/muestra.jpg">
                </div>
            </div>
            <div class="col-md-6">
                <p class="lead">
                    Por favor completa el formulario para que puedas descargar
                    <strong>GRATIS</strong>
                    una muestra (Primeras páginas) del libro Corazón Pródigo:
                    <br>
                </p>
                <div class="alert" style="display: none" role="alert"></div>
                <form class="email-form" method="POST" action="send.php">
                    <div class="form-group">
                        <label for="name">Nombre Completo</label>
                        <input class="form-control" name="name" type="text" required>
                    </div>
                    <div class="form-group">
                        <label for="email">Email</label>
                        <input class="form-control" name="email" type="email" required>
                    </div>
                    <br>
                    <label class="lead" for="txtcopia">Introduce el texto del campo de abajo</label>
                    <input class="form-control" type="text" name="txtcopia" id="txtcopia" size="10">
                    <br>
                    <br>
                    <input class="captcha" type="text" name="captcha" id="captcha" value=<?php echo captcha(); ?> size="8" readonly>
                    <br>
                    <br>
                    <br>
                    <button id="buscarbtn" class="btn btn-success" type="submit" value="registrar" name ="buscarbtn" onclick="validar();">Suscribirse</button>
                    <br>
                    <br>
                    <a class="download_button btn btn-lg btn-success center-block" style="display:none" download="" href="muestra/Corazon_prodigo.pdf">Descarga Ahora</a>
                </form>
            </div>
        </div>
    </div>
</body>
</html>

<?php

#error_reporting(0);

$sqlhost = 'localhost';  
$sqluser = 'root';       
$sqlpass = '';           
$sqldb   = 'registro';   
$sqltable= 'registro';

function captcha() {
  $k="";
  $param="1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  $max=strlen($param)-1;

  for ($i=0; $i<6; $i++) { 
    $k.=$param{mt_rand(0,$max)};
  }
  return $k;
}

$db = mysqli_connect($sqlhost, $sqluser, $sqlpass, $sqldb); //Nuestra variable para establecer la conexión a la base de datos
if(!$db){die("Error al conectar con la db" . mysql_error());}

$name = isset($_POST['name']) ? $_POST['name'] : NULL; // Tomamos el texto del input "nombre"
$email = isset($_POST['email']) ? $_POST['email'] : NULL; // Tomamos el texto del input "apellido"
$date = date('Y-m-d');

// Insertaremos la información a la tabla Nombre y Apellido, donde VALUES declara el texto que ingresaremos
$query = "INSERT INTO ".$sqltable."(name, email, date) VALUES('".$name."', '".$email."', '".$date."');";

mysqli_select_db($db,$sqldb); //verificaremos la conexión a nuestra base de datos
$insert_value = mysqli_query($db, $query); // Declaramos la variable $insert_value para usarla cómo un bool, en caso de que esta consulta falle
    if(!$insert_value) //Crearemos la consulta
    die('Error: ' . mysqli_error($db)); // Si falla, nos mostrará este texto, seguido del error.

mysqli_close($db); // Detenemos la conexión de la base de datos

?>

以下是send.php的代码:

<?php

$para = "example@example.com";
require 'PHPMailerAutoload.php';

$mail=new phpmailer();
$mail->PluginDir = "includes/";

$mail->Mailer = "smtp";
$mail->Host = "mail.example.com";
$mail->SMTPAuth = true;
$mail->Username = "contact@example.com"; 
$mail->Password = "H1hs4h45";
$mail->From = "contact@example.com";
$mail->FromName = "contacto WEB";
$mail->Timeout=30;

$mail->AddAddress($para);
$mail->Subject = "NUEVO USUARIO REGISTRADO";
$mail->Body = $_POST['name'].chr(13).chr(10).$_POST['email'];

$mail->IsHTML(true); 

if($mail->Send())
{
    echo'<script type="text/javascript">
            alert("Enviado Correctamente");
            window.location="http://example.com/index.php"
         </script>';
}
else{
    echo'<script type="text/javascript">
            alert("NO ENVIADO, intentar de nuevo");
            window.location="http://example.com/index.php"
         </script>';
}

?>

所以问题是,如何运行电子邮件发送并转而同时在MySQL中保存信息?

因为,如果我将send.php内容放在同一个文件index.php中,反之亦然,当页面加载时会生成一个循环并每隔30秒发送一次电子邮件,我忘了说,当发送电子邮件时,它生成一个MySQL行,但它是空的......

0 个答案:

没有答案