Мне нужно проверить, содержит ли поле какие-либо числовые значения, если да - это вернет скрипт.Проверка 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;
}
Это отлично работает, если я только положить номера в поле.
Но если я включаю числа + символы, он будет продолжать код и игнорировать возврат. Почему это происходит? что я сделал не так? Благодаря!
Поскольку [ 'is_numeric() '] (http://www.php.net/manual/en/function.is-numeric.php) рассматривает _lots_ разных вещей как числовые строки, кроме целых чисел. Если вы хотите только ints, используйте 'ctype_digit()' или regex '/^[\ d] + $ /' –
. Он по-прежнему делает то же самое с ctype_digit(), не знаю, почему. – user1902133
Что происходит с '$ param' в первом тесте? Откуда это? –