Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 联系人表单未在数据库中注册?_Php_Mysql_Phpmailer - Fatal编程技术网

Php 联系人表单未在数据库中注册?

Php 联系人表单未在数据库中注册?,php,mysql,phpmailer,Php,Mysql,Phpmailer,我想将数据以及邮件中的某些地址发送到数据库,但数据库没有注册 <?php $connection = mysqli_connect('localhost', 'root', ''); if (!$connection){ die("Database Connection Failed" . mysqli_error($connection)); } $select_db = mysqli_select_db($connection, 'cc'); if (!$select_db){

我想将数据以及邮件中的某些地址发送到数据库,但数据库没有注册

<?php

$connection = mysqli_connect('localhost', 'root', '');

if (!$connection){

die("Database Connection Failed" . mysqli_error($connection));
}
$select_db = mysqli_select_db($connection, 'cc');

if (!$select_db){

die("Database Selection Failed" . mysqli_error($connection));

}
?>



<?php

error_reporting(E_ALL);

ini_set("display_errors", 1);

?>

<?php

require_once('connect.php');

require_once('config.php');

require('PHPMailer/PHPMailerAutoload.php');

if(isset($_POST) & !empty($_POST)){

$name = $_POST['name'];

$email = $_POST['email'];

$subject = $_POST['subject'];

$message = $_POST['message'];

if(!isset($name) || empty($name)){

$error[] = "Name is required";
}

if(!isset($email) || empty($email)){

$error[] = "E-Mail is required";
}

if(!isset($subject) || empty($subject)){

$error[] = "Subject is required";
}

if(!isset($message) || empty($message)){

$error[] = "Message is required";
}

if(!isset($error) || empty($error)){

$to = "vivek@codingcyber.com";

$headers = "From : " . $email;

$mail = new PHPMailer();

$mail->isSMTP();

$mail->SMTPSecure = 'tls';

$mail->Host = $smtphost;

$mail->SMTPAuth = true;

$mail->Username = $smtpuser;

$mail->Password = $smtppass;

$mail->SMTPSecure = 'ssl';

$mail->Port = 465;

$mail->CharSet = 'UTF-8';

$mail->setFrom('', 'PixelW3 Technologies');

$mail->addAddress('', ''); 

$mail->Subject = $subject;

$mail->Body    = $message . " Name : " . $name . ". E-Mail : " . $email;

if(!$mail->send()) {

    echo 'Message could not be sent.';

    echo 'Mailer Error: ' . $mail->ErrorInfo;

} else {

    $sql = "INSERT INTO `contact` (name, email, subject, message) VALUES ('$name', '$email', '$subject', '$message')";

    if(mysqli_query($connection, $sql)){

        echo 'Message has been sent, we will get back to you soon';

    }
}

/*
if(mail($to, $subject, $message, $headers)){

    $sql = "INSERT INTO `contact` (name, email, subject, message) VALUES ('$name', '$email', '$subject', '$message')";

    if(mysqli_query($connection, $sql)){

        "Message Received, we will get back to you soon";

    }else{
        echo "Failed to send message, Try again";

    }

}else{

    echo "Failed to send message, Try again";

}

*/
}


}

?>
<!DOCTYPE html>

<html>

<head>

<title>Simple Contact form in PHP & MySQL</title>

<!-- Latest compiled and minified CSS -->

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" >

</head>

<body>

<div class="container">

<div class="row">

    <form class="col-md-6 col-md-offset-3" method="post">

        <h2>Contact Us</h2>

      <div class="form-group">

        <label for="exampleInputEmail1">Name</label>

        <input type="text" name="name" class="form-control" id="exampleInputEmail1" placeholder="Enter Your Full Name" required="">

      </div>

      <div class="form-group">

        <label for="exampleInputEmail1">Email address</label>

        <input type="email" name="email" class="form-control" id="exampleInputEmail1" placeholder="Enter Your Email" required="">

      </div>

      <div class="form-group">

        <label for="exampleInputPassword1">Subject</label>

        <input type="text" name="subject" class="form-control" id="exampleInputPassword1" placeholder="Enter Your Subject" required="">

      </div>

      <textare`enter code here`a class="form-control"  name="message" rows="3" placeholder="Enter Your Query Here" required=""></textarea>

      <button type="submit" class="btn btn`enter code here`-default">Submit</button>

    </form>

</div>
</div>

</body>

</html>


如上所述,我想将此更新为:

<?php
$servername = "localhost";
$username = "root";
$password = "<?>";
$dbname = "<?>";
?>

<?php

error_reporting(E_ALL);

ini_set("display_errors", 1);

?>

<?php

require_once('connect.php');

require_once('config.php');

require('PHPMailer/PHPMailerAutoload.php');

if(isset($_POST) & !empty($_POST)){

$name = $_POST['name'];

$email = $_POST['email'];

$subject = $_POST['subject'];

$message = $_POST['message'];

if(!isset($name) || empty($name)){

$error[] = "Name is required";
}

if(!isset($email) || empty($email)){

$error[] = "E-Mail is required";
}

if(!isset($subject) || empty($subject)){

$error[] = "Subject is required";
}

if(!isset($message) || empty($message)){

$error[] = "Message is required";
}

if(!isset($error) || empty($error)){

$to = "vivek@codingcyber.com";

$headers = "From : " . $email;

$mail = new PHPMailer();

$mail->isSMTP();

$mail->SMTPSecure = 'tls';

$mail->Host = $smtphost;

$mail->SMTPAuth = true;

$mail->Username = $smtpuser;

$mail->Password = $smtppass;

$mail->SMTPSecure = 'ssl';

$mail->Port = 465;

$mail->CharSet = 'UTF-8';

$mail->setFrom('', 'PixelW3 Technologies');

$mail->addAddress('', ''); 

$mail->Subject = $subject;

$mail->Body    = $message . " Name : " . $name . ". E-Mail : " . $email;

if(!$mail->send()) {

    echo 'Message could not be sent.';

    echo 'Mailer Error: ' . $mail->ErrorInfo;

} else {

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $stmt = $conn->prepare("INSERT INTO `contact` (name, email, subject, message) VALUES (:name, :email, :subject, :message)");
    $stmt->bindParam(':name', $name);
    $stmt->bindParam(':email', $email);
    $stmt->bindParam(':subject', $subject);
    $stmt->bindParam(':message', $message);
    $stmt->execute();
}catch(PDOException $e)
{
echo "Error: " . $e->getMessage();
}
$conn = null;

/*
if(mail($to, $subject, $message, $headers)){

    $sql = "INSERT INTO `contact` (name, email, subject, message) VALUES ('$name', '$email', '$subject', '$message')";

    if(mysqli_query($connection, $sql)){

        "Message Received, we will get back to you soon";

    }else{
        echo "Failed to send message, Try again";

    }

}else{

    echo "Failed to send message, Try again";

}

*/
}


}

?>
<!DOCTYPE html>

<html>

<head>

<title>Simple Contact form in PHP & MySQL</title>

<!-- Latest compiled and minified CSS -->

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" >

</head>

<body>

<div class="container">

<div class="row">

    <form class="col-md-6 col-md-offset-3" method="post">

        <h2>Contact Us</h2>

      <div class="form-group">

        <label for="exampleInputEmail1">Name</label>

        <input type="text" name="name" class="form-control" id="exampleInputEmail1" placeholder="Enter Your Full Name" required="">

      </div>

      <div class="form-group">

        <label for="exampleInputEmail1">Email address</label>

        <input type="email" name="email" class="form-control" id="exampleInputEmail1" placeholder="Enter Your Email" required="">

      </div>

      <div class="form-group">

        <label for="exampleInputPassword1">Subject</label>

        <input type="text" name="subject" class="form-control" id="exampleInputPassword1" placeholder="Enter Your Subject" required="">

      </div>

      <textare`enter code here`a class="form-control"  name="message" rows="3" placeholder="Enter Your Query Here" required=""></textarea>

      <button type="submit" class="btn btn`enter code here`-default">Submit</button>

    </form>

</div>
</div>

</body>

</html>


您需要准确地显示和描述它是如何工作的。它不会给出任何错误代码。邮件会发送,但不会注册。我这里有样品,太模糊了。添加一些调试输出,设置
$mail->SMTPDebug=3,转储变量,检查返回值,检查mysql错误。你可以尝试很多东西。此外,通过名称、电子邮件、主题和消息变量,您的代码完全容易受到SQL注入攻击。您似乎没有在
mysqli_connect
中设置数据库名称-您设置了主机(localhost)、用户名(root)、密码(“”此外,此过程中不要使用mysqli_connect,您正在打开SQL注入(尤其是当您不使用这些post值时,甚至不使用
urlencode()
)。在准备好的语句中使用PDO将完全消除SQL注入攻击的可能性,这里有大量的资源或一个快速的google将告诉您如何使用这些。例如,不用担心,很乐意帮助,作为回报,请接受答案=)