-4

これはhtmlです

contact.html と呼ばれる php は外部ファイルです。

これはphp

 <form action="mailer.php"  method="post">

          <label>Name</label>
        <input name="name" placeholder="Type Here">

        <label>Email</label>
        <input name="email" type="email" placeholder="Type Here">

        <label>Contact Number</label>
        <input name="number" type="text" placeholder="Type Here">

        <label>Message</label>
        <textarea name="message" placeholder="Type Here"></textarea>
        <br/>

        <input id="submit" name="submit" type="submit" value="Submit">

    </form>

以下はphpで、ファイルはmailer.phpと呼ばれます。このフォームが機能するかどうか、機能しない場合は何が問題なのかを知る必要があります。または、代替案がある場合。手伝ってくれてありがとう。

 <?php
        $name = $_POST['name'];
        $email = $_POST['email'];
        $number = $_POST['number'];
        $message = $_POST['message'];
        $from = 'From:me'; 
        $to = 'me@hotmail.com'; 
        $subject = 'Hello';

        $body = "From: $name\n E-Mail: $email\n Number: $number\n Message:\n $message";




 if ($_POST['submit']) {
        if ($name != '' && $email != '') {
            if ($human == '4') {                 
                if (mail ($to, $subject, $body, $from)) { 
                echo '<p>Your message has been sent!</p>';
            } else { 
                echo '<p>Something went wrong, go back and try again!</p>'; 
            } 
        } else if ($_POST['submit'] && $human != '4') {
            echo '<p>You answered the anti-spam question incorrectly!</p>';
        }
        } else {
            echo '<p>You need to fill in all required fields!!</p>';
        }
    }
    ?>
4

2 に答える 2

0

少なくとも、 $human が設定されていないため、 mailer.php ファイルは失敗しますが、電子メールの送信にチェック/必須であるためです。

以下に、メールを送信できるようにする行を (上にコメントを付けて) 追加しました。

警告:この変更を行うと、ボットが使用/スパムするためにこのフォームが開かれます!

$name = $_POST['name'];
$email = $_POST['email'];
$number = $_POST['number'];
$message = $_POST['message'];
$from = 'From:me'; 
$to = 'me@hotmail.com'; 
$subject = 'Hello';
// To at least get it to run, add the below (this will allow spamming, but get the form to work)
$human = 4;

$body = "From: $name\n E-Mail: $email\n Number: $number\n Message:\n $message";




if ($_POST['submit']) {  
    if ($name != '' && $email != '') {
        // $human variable is not being set above, so this will never pass
        if ($human == '4') {                 
            if (mail ($to, $subject, $body, $from)) { 
                echo '<p>Your message has been sent!</p>';
            } else { 
                echo '<p>Something went wrong, go back and try again!</p>'; 
            } 
        } else if ($_POST['submit'] && $human != '4') {
            echo '<p>You answered the anti-spam question incorrectly!</p>';
        }
    } else {
        echo '<p>You need to fill in all required fields!!</p>';
    }
}
?>
于 2013-08-17T17:16:32.037 に答える
0

私が間違っていると思う唯一のことは$human、への参照です。あなたはこれをどこにも宣言していません。これはある種のキャプチャだと思います。「whats 2+2」というラベルの付いた入力フィールドかもしれません。入力欄に4が書かれていれば人間、そうでなければボットです。これは低レベルのボット テストですが、ニーズには十分かもしれません。空のままにしておくべき隠しフィールドも、ボットのテストに適した方法です。ボットはスクリーン リードを行い、非表示のフィールドに入力するため、フォームが無効になります。

<form action="mailer.php"  method="post">

          <label>Name</label>
        <input name="name" placeholder="Type Here">

        <label>Email</label>
        <input name="email" type="email" placeholder="Type Here">

        <label>Contact Number</label>
        <input name="number" type="text" placeholder="Type Here">

        <label>Message</label>
        <textarea name="message" placeholder="Type Here"></textarea>
        <br/>

        <label>What's 2+2</label>
         <input name="human" type="number" placeholder="Type Here">
        <br/>

        <input id="submit" name="submit" type="submit" value="Submit">

    </form>

php

$name = $_POST['name'];
$email = $_POST['email'];
$number = $_POST['number'];
$message = $_POST['message'];
$from = 'From:me'; 
$to = 'me@hotmail.com'; 
$subject = 'Hello';
$human = $_POST['human'];

// rest of code

あなたのphpファイルの最後にこれを置くと、あなたが作成できるサンキューページに移動します

header("Location: thanks.html");

または、これを置くことができます

header("Location: contact.php?thanks");

.html連絡先ページのファイル拡張子を からに変更する必要があることに注意してください.php。そのため、ページを実行phpして、ページが php ファイルから読み込まれているかどうかを確認し、読み込まれている場合は、フォームの代わりにお礼のメッセージを表示できます。

フォームを次のように変更します。ページが php ファイルから読み込まれたかどうかを確認します。

<?php
if($_REQUEST["thanks"]) {
    ?>
    <p>Thanks for your form submition</p>
    <?php
} else {
?>
  <form action="mailer.php"  method="post">

          <label>Name</label>
        <input name="name" placeholder="Type Here">

        <label>Email</label>
        <input name="email" type="email" placeholder="Type Here">

        <label>Contact Number</label>
        <input name="number" type="text" placeholder="Type Here">

        <label>Message</label>
        <textarea name="message" placeholder="Type Here"></textarea>
        <br/>

        <label>What's 2+2</label>
         <input name="human" type="number" placeholder="Type Here">
        <br/>

        <input id="submit" name="submit" type="submit" value="Submit">

    </form>
<?php
}
?>
于 2013-08-17T17:14:39.833 に答える