2017-06-14 8 views
1

私の意志に反してPHPを使用することを余儀なくされているので、これについていくつかの助けが必要です。データベースに挿入してからメールを送信する

グーグルでは、次の基本コードがあり、問題ないかどうか疑問に思っています。

これは、公開予定の「すぐに来る」ページで、ユーザーが電子メールアドレスを入力すると、mysqlデータベースに挿入されて返信メッセージが取得されます。これはすべて、ホストされたサーバー上で起こっています。

理想的には、画像などでHTMLを生成し、そのHTMLをメール本文に送信したいと考えています。誰かがPHPでこれを行う方法を知っていますか?

<?php 
    $servername = "localhost:3306"; 
    $username = "userblah"; 
    $password = "passblah"; 
    $dbname = "blah"; 

    // Create connection 
    $conn = new mysqli($servername, $username, $password, $dbname); 
    // Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $sql = "INSERT INTO prelaunch_users (email) 
    VALUES ($_GET['email'];)"; 

    if ($conn->query($sql) === TRUE) { 
     echo "New record created successfully"; 
    } else { 
     echo "Error: " . $sql . "<br>" . $conn->error; 
    } 

    $conn->close(); 

    $to  = $_GET['email']; 
    $subject = 'Welcome'; 
    $message = 'hello'; 
    $headers = 'From: [email protected]' . "\r\n" . 
     'Reply-To: [email protected]' . "\r\n" . 
     'X-Mailer: PHP/' . phpversion(); 

    mail($to, $subject, $message, $headers); 
?> 

ホストされているメールサーバーのユーザー名とパスワードが必要になると思います。

<?php 
    if(!empty(trim($_GET['email']))){ 
     $conn = new mysqli("localhost:3306", "userblah", "passblah", "blah"); 

     if ($conn->connect_error) { 
      die("Connection failed: " . $conn->connect_error); 
     } 

     if ($stmt = $conn->prepare("INSERT INTO prelaunch_users (email) VALUES (?)")) { 

      $stmt->bind_param("s",$_GET['email']); 

      if($stmt->execute()){ 
       // Add you mail code here 
      }else{ 
       echo "Error: ". $conn->error; 
      } 

      $stmt->close(); 
     } 
     $conn->close(); 
    }else{ 
     die('email is required'); 
    } 
?> 

と画像でHTMLメールを送信するために - :

は、あなたが以下のようなprparedなステートメントを使用することができます

ポール

+4

下に確認してください、あなたはこれを修正する必要があります。 – Enstage

+1

MySQLクエリにはprepared statementを使用してください。この方法で、最も一般的なSQLインジェクション攻撃に対して安全です。 – CodeMonkey

+0

あなたの問題は何ですか?データが挿入されない、またはメールが送信されない –

答えて

関連する問題