0

(チュートリアルを介して) クラシファイド広告の登録を行っていますが、問題が発生しています。何らかの理由で、このページにアクセスするだけです: http://classifieds.your-adrenaline-fix.com/register.php は、登録フォームの上の赤いボックスに表示される 2 つのカスタム エラーを生成しますが、フォームにはありません。まだ提出されているので、なぜこれが起こっているのかわかりません。誰かがこれに光を当てることができれば、私は最も感謝しています.

(私は何時間もそれを見つめていました)

フォーム データを検証して送信するコードは次のとおりです。

<?php
    if(empty($_POST) === false) {
        $VisitorsFirstName = $_POST['First_Name'];
        $VisitorsLastName = $_POST['Last_Name'];
        $VisitorsEmail = $_POST['E_mail'];
        $VisitorsPassword = $_POST['Pass'];
        $RequiredFlds = array('First_Name', 'Last_Name', 'E_mail', 'Pass', 'PassAgain');

        foreach($_POST as $key=>$value) {
            if(empty($value) && in_array($key, $RequiredFlds) === true) {
                $Err[] = 'All Fields Are Required';
                break 1;
            }
        }

        if(empty($Err) === true) {
            if(email_exists($VisitorsEmail) === true) {
                $Err[] = 'The Email Address \''. $VisitorsEmail. '\' Is Already In Use.';           
            }
            if(strlen($VisitorsPassword) < 4) {
                $Err[] = 'Please Select A Password of At Least 4 Characters.';
            }
            if($_POST['Pass'] !== $_POST['PassAgain']) {
                $Err[] = 'Passwords Do Not Match.';
            }
            if(filter_var($VisitorsEmail, FILTER_VALIDATE_EMAIL) === false) {
                $Err[] = 'A Valid Email Address is Required';
            }
        }
    }

    if(isset($_GET['success']) && empty($_GET['success'])) {
        echo 'You Have Now Been Registered and Can Proceed to <a href="add.php">Creating Your First Ad</a><br>(Use the Email and Password That You Registered With to Login)';
    } else {    
    if(empty($_POST) === false && empty($Err) === true) {
        $register_data = array (
            'VisitorsFirstName' => $_POST['First_Name'],
            'VisitorsLastName' => $_POST['Last_Name'],
            'VisitorsPassword' => $_POST['Pass'],
            'VisitorsEmail' => $_POST['E_mail'],
            'Notify' => $_POST['Notify']
            );

            register_func($register_data);
            header('Location: register.php?success');
            exit();

    } else if(empty($Err) === false) {
        echo output_error($Err);
        }
    } 
?>
4

3 に答える 3

0

代わりに、送信ボタンが押されたかどうかを確認できます。このような:

if (isset($_POST['submit']) {
  // get the post values
}

このようにして、フォームが実際に送信される前にスクリプトが起動するのを防ぐことができます。現在、ページにアクセスするとすぐに実行されるようです。

于 2013-04-22T13:55:45.413 に答える