-3

この例で使用しているフォームは、PHPを学ぶための知識や時間がないため、しばらく使用していたフォームをリサイクルしたものです。それは動作しますが、私が望むようにはなりません。たとえば、誰かがフォームに名前と電子メールを入力して送信すると、ユーザーをfreepage.htmlにリダイレクトすることになっています。ただし、実際の「freepage.php」は入力された情報で「点滅」します。通常、これは1〜2秒続き、その後リダイレクトが開始されます。

私が抱えているもう1つの問題は、ユーザーが情報を入力しない場合、「すべてのフィールドは必須です」という警告がそのfreepage.phpに表示され、そのページが画面上で1秒間「点滅」しない場合にのみ、警告が表示されたままになることです。表示され、それを修正する唯一の方法は、ブラウザの「戻る」ボタンをクリックすることです。

誰かが私にこのフォームを少し良くする方法を教えてもらえますか....

これはphpファイルがどのように見えるかです

            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <script type="text/javascript" src="jquery-1.3.2.min.js"></script>
            <script src="http://www.google.com/jsapi"></script>
            <script type="text/javascript">google.load("jqueryui", "1.5.2");</script>
            <? 
        if($_POST['name']!="" and $_POST['email']!=""){


    $headers    = "From: Sender";
    $message    = 
            strtoupper($_POST['name'])."
            ".strtoupper($_POST['email'])."
            ";
    echo str_replace("\n","<br />", $message);
    $headers2   = "From: Sender <info@gmail.com>\nContent-Type: text/plain;                               charset=UTF-8; format=flowed\nMIME-Version: 1.0\nContent-Transfer-Encoding: 8bit\nX-Mailer: PHP\n";
    $message2   = "
    Hello ".($_POST['name'])."  

            ";

    mail("$_POST[email]", "Thanks for entering", $message2, $headers2);


    $myFile = "info-file.txt";
    $fh = fopen($myFile, 'a') or die("can't open file");
    $stringData =            "$_POST[name]*$_POST[email]*".$_SERVER['REMOTE_ADDR']."*".date("d-m-Y H:i")."
             ";
    fwrite($fh, $stringData);
    fclose($fh);


    ?>

    echo '<script>document.location="freepage.html"; </script>';

    <?
} else {
    echo "All fields are mandatory";
    ?>
    <script language="javascript">
    alert("All fields are mandatory");
    </script>
    <?
}
    ?>

フォームは次のようになります

        <form method="post" action="freepage.php" name="popups" id="popups">
        <fieldset>
        <label for=name accesskey=U ><span class="required">*</span> Name</label>
        <br />
        <input name="name" type="text" id="name" size="30" value="" /> 
        <br />
        <label for=email accesskey=E ><span class="required">*</span> Email</label>
        <br />
        <input name="email" type="text" id="email" size="30" value="" />
        <br />
        <input type="submit" value="Submit" id="submit" name="submit" class="button" />
        </fieldset>  
        <br />
        </form>
4

2 に答える 2

0

「点滅」する理由は、リダイレクトの前にサーバーがメールを送信するのを待つ必要があるためです。

警告の場合:「すべてのフィールドは必須です」。

  • フォームが同じページ (freepage.php) にある場合、フォームが表示されるとイベントが機能します。
  • フォームが同じページにない場合は、リダイレクト (html リンクまたは JavaScript の場所) を追加するか、php コードの後に​​フォームを挿入します。
于 2012-07-26T09:09:19.717 に答える
0

forループで空の関数を使用して、フィールドが空であるかどうかを確認し、フォームアクションでphp
selfを使用し、チェック部分が完了したら内部でヘッダーを使用して他のページにリダイレクトします

于 2014-04-09T10:59:50.547 に答える