Проверьте, что $_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

Другие вопросы по тегам