2013-02-18 3 views
0

Мне нужно проверить, содержит ли поле какие-либо числовые значения, если да - это вернет скрипт.Проверка PHP, если переменная из (POST) содержит любые числовые значения

Это мой сценарий

if ($name != null && $age != null) { 
    if (!preg_match("/^[a-z]$/", $param)) { 
     echo 'You cannot use numbers for your name lol!'; 
     return; 
    } 
    if (!is_numeric($age)) { 
     echo 'You must use numbers for your age!'; 
     return; 
    } 
    mysql_select_db("jony", $connectMysql); 
    $sql="INSERT INTO person (name, age) VALUES ('$_POST[name]','$_POST[age]')"; 

    if (!mysql_query($sql,$connectMysql)) 
     die('MySQL problem:'.mysql_error()); 
     mysql_close($connectMysql); 
     header('location: http://localhost/index.php.php'); 
} else { 
    echo 'Fields are empty!'; 
    return; 
} 

Я использую это, чтобы проверить, если поле «$ имя» является числовым, и если да, то он вернет его:

if (is_numeric($name)) { 
     echo 'You cannot use numbers for your name lol!'; 
     return; 
    } 

Это отлично работает, если я только положить номера в поле.

Но если я включаю числа + символы, он будет продолжать код и игнорировать возврат. Почему это происходит? что я сделал не так? Благодаря!

+0

Поскольку [ 'is_numeric() '] (http://www.php.net/manual/en/function.is-numeric.php) рассматривает _lots_ разных вещей как числовые строки, кроме целых чисел. Если вы хотите только ints, используйте 'ctype_digit()' или regex '/^[\ d] + $ /' –

+0

. Он по-прежнему делает то же самое с ctype_digit(), не знаю, почему. – user1902133

+0

Что происходит с '$ param' в первом тесте? Откуда это? –

ответ

0

вы можете сделать это, например, таким образом:

if (preg_match('#[0-9]#',$name)){ 
    echo 'You cannot use numbers for your name lol!'; 
    return; 
} 
0

вы можете проверить его here

попробовать с

preg_match('/^[a-z]+$/', $name); 

вместо

preg_match('/^[a-z]$/', $name); 
Смежные вопросы