2014-08-31 3 views
0

Привет Я пытаюсь проверить простую форму HTML. Вот мой код HTML-проверка формы в PHP с использованием preg_match

<HTML> 
    <body> 
     <form method="get" action="password.php"> 
     User ID<input type="text" name="user" id="user" required/><br/> 
     Password<input type="password" name="pass" id="pass" required/><br/> 
     <input type="submit" value"Login Here"> 
     </form> 
    </body> 
    </html> 

Пароль должен содержать только цифры. Мой password.php

это-
<?php 
    $name=$_GET['user']; 
    $pass=$_GET['pass']; 

    $strlen1= strlen($name); 
    $strlen2= strlen($pass); 

    $regex= "/^[789][0-9]{9}$/"; // my password should contain digits only. 

    if($strlen1==0 | $strlen2==0) 
     { 
      echo 'Username or password field is empty'.'<br/>'; 
     } 

    else if($name==$pass) 
     { 
      echo 'Go for a better password'.'<br/>'; 
     } 

    else if(!preg_match($regex,$pass)) 
     { 
      echo 'password is invalid'.'<br/>'; 
     } 

    else 
     { 
      echo 'You have successfully logged in'.'<br/>'; 
     } 

    ?> 

На запуске скрипта, даже если я ввожу правильный пароль, как-«123456» сообщение says- «неверный пароль». Пожалуйста, дайте мне знать ошибку в приведенном выше коде. Спасибо !!!

+1

Ваше регулярное выражение '^ [789] [ 0-9] {9} $ 'требует, чтобы пароль начинался с' 7', '8' или' 9', а затем ровно 9 цифр. Измените его на '^ \ d + $', чтобы принять любое количество цифр или, например, '^ \ d {6,} $', для не менее 6 цифр. –

ответ

1

Ваш пароль должен начинаться с любого из 7, 8, 9 и затем 9 цифр

$regex= "/^[789][0-9]{9}$/"; 

фильтровать только цифры заменить его:

$regex="/^\d+$/"; 
Смежные вопросы