私の意志に反して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なステートメントを使用することができます
ポール
下に確認してください、あなたはこれを修正する必要があります。 – Enstage
MySQLクエリにはprepared statementを使用してください。この方法で、最も一般的なSQLインジェクション攻撃に対して安全です。 – CodeMonkey
あなたの問題は何ですか?データが挿入されない、またはメールが送信されない –