Итак, у меня есть код PHP, который выглядит примерно так:
<body> The ID is <?php echo $_GET["id"] . "!"; ?> </body>
Теперь, когда я передаю ID, например http://localhost/myphp.php?id=26
он работает нормально, но если идентификатор отсутствует, например, http://localhost/myphp.php
он выводит:
The ID is Notice: Undefined index: id in C:\xampp\htdocs\myphp.php on line 9 !
Я искал способ исправить это, но я не могу найти способ проверить, существует ли переменная URL. Я знаю, что путь должен быть.
Вы можете использовать функцию isset
:
if(isset($_GET['id'])) { // id index exists }
Вы можете создать удобную функцию для возврата значения по умолчанию, если индекс не существует:
function Get($index, $defaultValue) { return isset($_GET[$index]) ? $_GET[$index] : $defaultValue); } // prints "invalid id" if $_GET['id'] is not set echo Get('id', 'invalid id');
Вы также можете попытаться проверить его в одно и то же время:
function GetInt($index, $defaultValue) { return isset($_GET[$index]) && ctype_digit($_GET[$index]) ? (int)$_GET[$index] : $defaultValue); } // prints 0 if $_GET['id'] is not set or is not numeric echo GetInt('id', 0);
if (isset($_GET["id"])){ //do stuff }
Обычно это неплохо делать:
echo isset($_GET['id']) ? $_GET['id'] : 'wtf';
Это связано с тем, что при присвоении переменной var другим переменным вы можете делать по умолчанию все на одном дыхании, а не постоянно использовать операторы if
чтобы просто дать им значение по умолчанию, если они не установлены.
Вы используете PHP isset
пример
if (isset($_GET["id"])) { echo $_GET["id"]; }
Вы можете использовать встроенную функцию array_key_exists()
:
if (array_key_exists('id', $_GET)) { echo $_GET['id']; }
или встроенная функция isset()
:
if (isset($_GET['id'])) { echo $_GET['id']; }
Использовать и empty()
whit negation (для теста, если не пусто)
if(!empty($_GET['id'])) { // if get id is not empty }
Попробуйте:
if(isset($_GET['id']) && !empty($_GET['id'])){ echo $_GET["id"]; }