Форма с PHP не работает должным образом - PullRequest
0 голосов
/ 27 ноября 2011

Я создаю регистрационную форму, но у меня есть только одна проблема ... почему они могут пройти проверку с неверной записью? Единственное (что я знаю) это то, что они могут пройти без выбора страны!

Вот мой код HTML / PHP:

<table border="0" width="100%">
    <form action="" method="post">
        <tr><td><label>Username:<span class="requiredfield">*</span></label></td><td width="200"><input type="text" name="myusername" id="myusername" maxlength="15" style="background-color:transparent;" /></td></tr>
        <tr><td><label>Summoner Name (League of Legends):<span class="requiredfield">*</span></label></td><td><input type="text" name="mysummonername" id="mysummonername" maxlength="30" /></td></tr>
        <tr><td><label>Password:<span class="requiredfield">*</span></label></td><td><input type="password" name="mypassword" id="mypassword" maxlength="15" /></td></tr>
        <tr><td><label>Retype Password:<span class="requiredfield">*</span></label></td><td><input type="password" name="myrpassword" id="myrpassword" maxlength="15" /></td></tr>
        <tr><td><label>E-mail:<span class="requiredfield">*</span></label></td><td><input type="text" name="myemail" id="myemail" maxlength="65" /></td></tr>
        <tr><td><label>Retype E-mail:<span class="requiredfield">*</span></label></td><td><input type="text" name="myremail" id="myremail" maxlength="65" /></td></tr>
        <tr><td width="300"><br />Please note that we only need this information because we'll send out prices to the winners of our tournaments.</td></tr>
        <tr><td><label>First Name:<span class="requiredfield">*</span></label></td><td><input type="text" name="myfname" id="myfname" maxlength="20" /></td></tr>
        <tr><td><label>Last Name:<span class="requiredfield">*</span></label></td><td><input type="text" name="mylname" id="mylname" maxlength="30" /></td></tr>
        <tr><td><label>Select Country:<span class="requiredfield">*</span></label></td><td><select name="mycountry" id="mycountry">
            <option value="-choose-">-Choose-</option>
            <option value="Afganistan">Afghanistan</option>
            <option value="Albania">Albania</option>
            <option value="Algeria">Algeria</option>
            ...
        </select></td></tr>
        <tr><td><label>Postal Code:</label></td><td><input type="text" name="myzipcode" id="myzipcode" maxlength="9" /></td></tr>
        <tr><td><label>City:</label></td><td><input type="text" name="mycity" id="mycity" maxlength="60" /></td></tr>
        <tr><td><label>Street:</label></td><td><input type="text" name="mystreet" id="mystreet" maxlength="50" /></td></tr>
        <tr><td><label>Telephone Number:</label></td><td><input type="text" name="myphonenumber" id="myphonenumber" maxlength="15" /></td></tr>
        <!--<tr><td><label>Invite Code<span style="color:#F00;">*</span>:</label></td><td><input type="text" name="myinvcode" id="myinvcode" /></td></tr>-->
        <!-- <tr><td colspan="2" style="height: 20px;"></td></tr> -->
        <tr><td width="300"><br />This information will be used later on when you have lost your password and need to retrieve it again.</td></tr>
        <tr><td><label>Secret Question:<span class="requiredfield">*</span></label></td><td><input type="text" name="myscrtquestion" id="myscrtquestion" maxlength="50" /></td></tr>
        <tr><td><label>Secret Answer:<span class="requiredfield">*</span></label></td><td><input type="text" name="myscrtanswer" id="myscrtanswer" maxlength="50" /></td></tr>
        <tr><td></td><td><span class="button"><input type="submit" name="submitregister" value="Register" /></span></td></tr>
        <tr><td colspan="2">By pressing "Register" you agree to the <a href='termsofuse.php'>terms of use</a> and our <a href='privacypolicy.php'>privacy policy</a>.</td></tr>
    </form>

    <?php
    if (isset($_POST['submitregister'])) {
        ob_start();
        include 'config.php'; // Connect to Database

        // Define $myusername and $mypassword 
        $myusername=$_POST['myusername'];
        $mysummonername=$_POST['mysummonername'];
        $myfname=$_POST['myfname']; 
        $mylname=$_POST['mylname']; 
        $mypassword=$_POST['mypassword'];
        $myrpassword=$_POST['myrpassword'];
        $myemail=$_POST['myemail'];
        $myremail=$_POST['myremail'];
        // $myinvcode=$_POST['myinvcode'];
        $myphonenumber=$_POST['myphonenumber'];
        $mycountry=$_POST['mycountry'];
        $myzipcode=$_POST['myzipcode'];
        $mycity=$_POST['mycity'];
        $mystreet=$_POST['mystreet'];
        $myscrtquestion=$_POST['myscrtquestion'];
        $myscrtanswer=$_POST['myscrtanswer'];

         // check to make sure required fields are entered
         if ($myusername == '' || $mysummonername == '' || $myfname == '' || $mylname == '' || $mypassword == '' || $myemail == '' || $mycountry == "-Choose-" || $myscrtquestion == '' || $myscrtanswer == '') {
            echo "<span style='color:#F00;'>Please fill in all the required fields. All the fields which are marked with a <span style='color:#0076c9;'>*</span> are required fields!</span>";

Почему вы все еще можете пройти мимо, если не выбрали страну? Я не могу понять это!

Ответы [ 6 ]

4 голосов
/ 27 ноября 2011

Вы проверяете -Choose-, однако ваше значение равно -choose-.

3 голосов
/ 27 ноября 2011

Поскольку значение для страны, которая передается, когда они оставляют ее в значении выбора, равно -choose-, но вы проверяете для $mycountry == "-Choose-". Эти два значения не равны.

Возможно, вам следует разработать лучший способ проверки правильности страны. Любой желающий может скопировать вашу форму и указать ее на своей странице, введя любое значение для этого поля, и вы только проверяете, чтобы убедиться, что оно не -choose-.

1 голос
/ 27 ноября 2011

Либо измените <option value="-choose-">-Choose-</option> на <option value="-Choose-">-Choose-</option>, либо оставьте значение параметра "-Choose-" пустым и проверьте наличие пустого значения "mycountry": $mycountry == ""

1 голос
/ 27 ноября 2011

Как говорилось в предыдущих ответах, вы проверяете -Choose, когда вам нужно -choose-.Чтобы устранить эту проблему в будущем, необходимо выполнить:
print_r($_POST);
, которая показывает все данные POST, чтобы вы могли увидеть, что было опубликовано.

они не выбрали страну, чтобы узнать, являются ли соответствующие почтовые данные нулевыми или нет.

1 голос
/ 27 ноября 2011

Проверьте корпус последних. В Option у вас есть -Choose-, но вы сравниваете его с -choose-

0 голосов
/ 27 ноября 2011

Поскольку опция --choose-- в вашем html-коде указана в нижнем регистре, и вы проверяете на --Choose-- с прописной буквой C в PHP.

Росс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...