2015-05-14 2 views
0

мой код ...PHP: If-заявление и форма

<?php 
     $username = mysql_real_escape_string($_POST['username']); 
     $password = mysql_real_escape_string($_POST['password']); 
     $passwordr = mysql_real_escape_string($_POST['passwordr']); 
     $email = mysql_real_escape_string($_POST['email']); 

     if(empty($username) || empty($password) || empty($passwordr) || empty($email)) { 
      echo '<div class="alert alert-danger">Bitte fülle alle Felder aus.</div>'; 
     } 

     elseif(!preg_match('/^[a-zA-Z0-9-_^#]{4,15}$/', $username)) { 
      echo '<div class="alert alert-danger">Bitte gebe einen gültigen Usernamen ein.<br />Der Username muss mindestens 4 und maximal 15 Zeichen lang sein und darf nur folgende Sonderzeichen enthalten: -_^#</div>'; 
     } 

     elseif(!preg_match('/^[a-zA-Z0-9-_*^#?!.,;@€]{8,20}$/', $password)) { 
      echo '<div class="alert alert-danger">Bitte gebe ein gültiges Passwort ein.<br />Das Passwort muss mindestens 8 und maximal 20 Zeichen lang sein und darf nur folgende Sonderzeichen enthalten: -_*^#?!.,;@€</div>'; 
     } 

     elseif($passwordr != $password) { 
      echo '<div class="alert alert-danger">Die Passwörter stimmen nicht überein.</div>'; 
     } 

     elseif(!preg_match('/^[a-zA-Z0-9-_.][email protected][a-zA-Z0-9-_.]+\.[a-zA-Z]{2,4}$/', $email)) { 
      echo '<div class="alert alert-danger">Bitte gebe eine gültige E-Mail Adresse ein.</div>'; 
     } 

     else { 
      die("have a n1 day"); 
     } 
    ?> 

каким-то образом, я всегда получаю <div class="alert alert-danger">Bitte fülle alle Felder aus.</div>, даже если формы не пусты.

Почему?

вот моя форма ...

<div class="row"> 
     <form method="POST"> 
      <fieldset> 
       <div class="col-lg-5"> 
        <div id="username-group" class="form-group"> 
         <label for="username">Username</label> 
         <input type="text" name="username" id="username" class="form-control" placeholder="Username"> 
        </div> 
        <div id="password-group" class="form-group"> 
         <label for="password">Passwort</label> 
         <input type="password" name="password" id="password" class="form-control" placeholder="Passwort"> 
        </div> 
        <div id="passwordr-group" class="form-group"> 
         <label for="passwordr">Passwort wiederholen</label> 
         <input type="password" name="passwordr" id="passwordr" class="form-control" placeholder="Passwort wiederholen"> 
        </div> 
        <div id="email-group" class="form-group"> 
         <label for="email">E-Mail</label> 
         <input type="email" name="email" id="email" class="form-control" placeholder="E-Mail"> 
        </div> 
        <input type="submit" name="submit" id="submit" class="btn btn-default" value="Registrieren"> 
       </div> 
      </fieldset> 
     </form> 
    </div> 

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

Похоже, что ваше сообщение в основном кода; добавьте еще несколько деталей.

+3

Где находятся ваши переменные? Можете ли вы предоставить разметку своей формы? –

+0

Сначала проверьте, что вы действительно возвращаете значения из формы, вы можете использовать: print_r ($ _ REQUEST); die; , Затем покажите еще один код, в котором вы фактически назначаете это значение из $ _POST (или $ _GET) в эти переменные. вы не используете экстракт, не так ли? – Mahakala

+1

Вы понимаете, что имя не волшебным образом превращается в '$ username', но' $ _POST ['username'] ' – adeneo

ответ

0

Если добавить протоколирования ошибок

error_reporting(E_ALL); 
ini_set('display_errors','On'); 

вы увидите следующее:

Запрещены: mysql_real_escape_string(): расширение MySQL является устаревшим и будет удален в будущем: использование MySQLi или PDO вместо этого в .../public_html/index.php on line

Предупреждение: mysql_real_escape_string(): Доступ запрещен для пользователя 'WWW-данных' @ 'локальный' (используя пароль: NO) в .../public_html/index.php на линии 38

mysql_real_escape_string требует, чтобы вы сначала подключились к базе данных. Также эта функция устарела.

Вы можете начать удаление с mysql_real_escape_string со своего кода, чтобы увидеть, что он работает.

Смежные вопросы