Это повторный вопрос Проверьте, что $ _POST [‘id’] является числовым, затем сделайте это, если не делаете иначе
Но..
Приведенные ответы не отвечают на вопрос ИМХО.
Вопрос в том, чтобы проверить строку $ _POST, чтобы увидеть, является ли она числом или содержит нечисловые символы. Не меняйте код для использования $ _GET.
Оригинальный вопрос таков:
if (!empty($_POST['id'])) {
echo "empty";
} else {
if (is_numeric($_POST['id'])) {
echo "numeric!";
} else {
echo "not empty but not numeric how come?";
}
}
Я пытался, is_numeric (), но так как $ _POST доставляет переменную в виде строки, даже если это число, это бесполезно.
Я пытался, если (! Preg_match (‘# [^ 0-9] #’, $ id)), но я понятия не имею, почему это не работает.
ctype_digit () Я считаю, что все еще есть проблема с просмотром всех вещей из $ _POST в виде строк, так что ничего хорошего.
Должен быть способ, но я заблудился, как это сделать. И нет, я не могу использовать $ _GET.
ОБНОВИТЬ ОТВЕТ !!! (ТИПО !!!!! Черт возьми !!!!)
// test.php
// testing with $_POST['id'] from forum with id = 5 and another test where id = new
$id = $_POST['editid'] ;
echo "<br>---".$id."---<br>";
if (empty($id)) {
echo "<br>1: empty";
} else {
if (!is_numeric($id)) {
echo "<br>2: This is the number 5";
} else {
echo "<br>3: the must be the word new";
}
}
// test 2 ... ctype_digitif (empty($id)) {
echo "<br>4: empty";
} else {
if (!ctype_digit($id)) {
echo "<br>5: This is the number 5";
} else {
echo "<br>6: the must be the word new";
}
}
// test 3 ...if (empty($id)) {
echo "<br>7: empty";
} else {
if (!preg_match('#[^0-9]#',$id)) {
echo "<br>8: This is the number 5";
} else {
echo "<br>9: the must be the word new";
}
}
/**
result from 5---5---
3: the must be the word new
6: the must be the word new
8: This is the number 5
results from "new"**/
Задача ещё не решена.
Других решений пока нет …