2

ユーザーがメッセージを入力し、メッセージが相手側の受信者に送信されるフォームがあります。私はこのスクリプトを何度も試し、チュートリアルを精査しましたが、何が問題なのかを見つけることができないようです。何か案は?

HTMLフォーム:

 <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
       <?php 
        if(isset($sent))
                 echo 'Your message has been sent. '; ?>
      <label for="Name">Name</label><br />                  
      <input type="text" class="textbox" size="35" id="Name" name="Name" <?php if(isset($name)) echo "value=\"$name\"";?> /><br />
      <label for="Service">Service</label><br />
      <input type="text" size="35" class="textbox" id="Service" name="Service" <?php  if(isset($subject)) echo"value=\"$subject\"";?> /><br />
      <label for="Email">Email</label><br />
      <input type="text" size="35" class="textbox" id="Email" name="Email" <?php if(isset($from)) echo"value=\"$from\""; ?> /><br />     
      <label for="message">Message</label><br />
      <textarea rows="95" cols="100" id="message" name="message"><?php if(isset($message)) echo"$message"; ?></textarea><br />
      <button type="submit">Send Message</button>               
</form>

PHP:

if(isset($_POST['Name']) && isset($_POST['Email']) && isset($_POST['Service']) && isset($_POST['message'])) {
    $name = $_POST['Name'];
    $from = $_POST['Email'];
    $subject = $_POST['Service'];
    $to = "emailtestertora@gmail.com";
    $message = $_POST['message'];
    mysql_query("INSERT INTO `Contact`(`Name`, `Email`, `Message`, `Service`) VALUES('$name', '$from', '$message', '$subject')");
    $headers = "From:".$from;
    if(mail($to,$subject,$message,$headers)) 
        $msgsent = true;
}

ありがとう!

4

3 に答える 3

3

(これはコメントとして表示されるはずですが、テキストボックスに配置する方が簡単です)

まず、次のコードでデバッグします。

<?php

error_reporting(E_ALL);
ini_set('display_errors', 'on');

if (mail('emailtestertora@gmail.com', 'test', 'test')) {
    echo 'Mail Sent';
} else {
    echo 'Mail Failed';
}

?>

このスクリプトは、デバッグに役立つ電子メールを送信するときにエラーメッセージを表示します。


しかし、このコメントの重要な部分は、上記の電子メールスクリプトがスパム(およびSQLインジェクション)にさらされていることです。メールスクリプトのセキュリティホールの穴を切り取るのに役立つ、利用可能な関数/クラスの1つを使用することを強くお勧めします。

あなたが自分でロールすることを決心しているなら、それは素晴らしいですが、このスクリプトをサーバーに置く前に、電子メールスパムヘッダーインジェクションについて読んでください。スパマーは、このようなオープンスクリプトを見つけると、何千もの電子メールを非常に迅速に送信できます。定期的に自動的にテストされるため、制限する必要があります。

(そして、MySQLインジェクションを保存するために、同時にPHPデータベースオブジェクト(PDO)について読んでください。)

于 2012-07-30T06:29:55.220 に答える
0

この方法を使用してくださいこれは接続をphp必要としない電子メールスクリプトですsmpt

<?php
$to = "someone@example.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "someonelse@example.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?> 
于 2012-07-30T07:32:12.123 に答える
0
  1. サービスプロバイダーがメールをブロックする場合があります。

  2. 専用サーバーを使用している場合は、メールサーバーを構成する必要がある場合があります

ありがとう

Sreeraj

于 2012-07-30T05:59:49.067 に答える