Проверьте, что $_POST['id'] является числовым, затем сделайте это, если нет, в противном случае
Здравствуйте, мне показалось, что мой код не работает:
if (!empty($_POST['id'])) {
echo "empty";
} else {
if (is_numeric($_POST['id'])) {
echo "numeric!";
} else {
echo "not empty but not numeric how come?";
}
}
URL моего браузера: hxxp://localhost/upload/? Id=9
ВЫХОД: не числовой
Как так?
пожалуйста помоги.
5 ответов
Следует использовать if(is_numeric($_GET['id'])) {
if (is_numeric($_GET['id'])) {
echo "yes numeric";
} else {
echo "not numeric";
}
Смотрите этот вопрос: $ _POST Number and Character checker
// 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_digit
if (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"
**/
Первый:
if (!empty($_POST['id'])) {
echo "empty";
} else ...
Вы говорите: если переменная НЕ пустая, то выведите "пусто", а затем вы проверяете, является ли пустая переменная числовой или нет (код в другом проверяет пустую переменную, поэтому он говорит, что она не числовая)
Возьмите восклицательный знак и объясните, как использовать метод post или get, поскольку вы пытаетесь получить переменную POST, когда вы проходите через GET
Я думаю, что вы передаете параметр через URL, так что используйте
if (is_numeric($_GET['id']))
Или использовать
if (is_numeric($_REQUEST['id'])) {
Или же он покажет неопределенную переменную, следовательно, будет откат к каждому блоку
Его просто, "id" находится в массиве $ _GET, но вы проверяете существование в массиве $_POST
if (empty($_GET['id'])) { ... }
должно быть правильно. И тогда вы можете использовать $_GET['id'] или $_REQUEST['id'].
Примечание: $_REQUEST содержит все переменные в $_POST и $ _GET
Правильный код должен быть:
if (empty($_GET['id'])) {
echo "empty";
} else {
if (is_numeric($_GET['id'])) {
echo "numeric!";
} else {
echo "not empty but not numeric how come?";
}
}
Вместо $ _GET вы также можете использовать $ _REQUEST