1

私はこれに完全に困惑しています(それ、またはあまりにも長い間それを見つめていたので、明らかなエラーがあり、それを見ることができません)

私が作成したカスタムテンプレートと同じページで検証する単純なフォームがあります

<form action="" method="post">
  <input type="text" id="name" name="name" placeholder="Please enter your full name" />
  <input type="email" id="email" name="email" placeholder="Please enter your email address" />
  <input type="hidden" name="newsletterform" value="newsletterform" />
  <input class="submit" type="submit" name="submit" id="searchsubmit" value="submit" />
</form>

その後、そのように検証されます

<?php
  $formsubmitted = (!empty($_POST['newsletterform'])) ? $_POST['newsletterform'] : "";
   if($formsubmitted !== ''){
    $fullname = (!empty($_POST['name'])) ? $_POST['name'] : "";
    $email = (!empty($_POST['email'])) ? $_POST['email'] : "";

    $failed = '';

    if (empty($fullname)){
        $failed.= 'Please enter your name.<br />';
    }
    if (empty($email)){
        $failed.= 'Please enter your email address.<br />';
    }
}
if ($failed == '' and $formsubmitted !== ''){ ?>
    <div id="success-title">
        Thank you for signing up!
    </div>
<?php
}
if ($failed !== '' and $formsubmitted !== '') { ?>
    <div id="error-title">
        Sorry, we could not accept the details you submitted to us. Please see below.
    </div>
    <div id="error-body">
        <?php echo $failed;?>
    </div>
<?php } ?>

空のフォームを送信しようとするとエラーが表示され、そこに値があり、名前フィールドが空の場合に電子メールが正常に検証されます。電子メール フィールドに何かがあるか、または何もないときに、名前フィールドに何かが入力されると、404 ページに移動します。

4

3 に答える 3

3

解決策は非常に簡単です。フォームでname「name」という属性を使用しないでください。

変化する:

<input type="text" id="name" name="name" placeholder="Please enter your full name" />

に:

<input type="text" id="name" name="myname" placeholder="Please enter your full name" />

追加情報:

HTML フォーム コントロールの安全でない名前

于 2013-06-05T14:02:52.213 に答える
0

私にとっては、この方法で問題なく動作します。PHP を次のように置き換えてみてください。

<?php
$failed = '';

  $formsubmitted = (!empty($_POST['newsletterform'])) ? $_POST['newsletterform'] : "";
   if($formsubmitted !== ''){
    $fullname = (!empty($_POST['name'])) ? $_POST['name'] : "";
    $email = (!empty($_POST['email'])) ? $_POST['email'] : "";

    if (empty($fullname)){
        $failed.= 'Please enter your name.<br />';
    }
    if (empty($email)){
        $failed.= 'Please enter your email address.<br />';
    }
}
if ($failed == '' and $formsubmitted !== ''){ 
    echo '<div id="success-title">
        Thank you for signing up!
    </div>';

}
if ($failed !== '' and $formsubmitted !== '') { 

    echo '<div id="error-title">
        Sorry, we could not accept the details you submitted to us. Please see below.
    </div>
    <div id="error-body">';
    echo $failed;
    echo '</div>';
}
?>  
于 2013-06-05T13:23:27.303 に答える