Я знаю, что если URL-адрес имеет что-то вроде http://example.com/test.html?id=2
, то ?id=2
используется для отправки значений параметров серверу, запрашивающему текущую страницу. Теперь, если URL-адрес похож на example.com/test.html?id
, что это значит?
В наши дни я вижу это на многих сайтах. Что дает id
? т.е. идентификатор не содержит никакого значения, то зачем его использовать?
Пример: example.net/eticketing/logout?out
- что делает out
на серверный сайт?
PS: Предположим, PHP - это язык сценариев на стороне сервера.
На самом деле это не совсем верно в том смысле, что часть запроса URL отправляет "значения" на сервер. Вместо этого это всего лишь строка, которая интерпретируется тем, что происходит с процессами на стороне сервера, как правило, с некоторым языком сценариев.
В самом деле, обычно такой шаблон, как name=value
приведет к переменной, называемой name
содержащим value
. Но, как сказано, это зависит от этапа обработки, он не определен каким-то общим стандартом.
Существует ряд типичных способов, как интерпретация такой строки запроса, как вы ее упоминаете, с использованием только некоторой строки, но ничего подобного шаблону, упомянутому выше,
переменная создается, но не назначается никакое значение, поскольку в строке запроса не указано ни одно. Это имеет смысл, поскольку наличие переменной уже является само по себе выражением, которое может быть оценено, поэтому оно может влиять на этап обработки.
на этапе обработки можно было бы полностью пропустить "типичный" способ интерпретации такой строки и просто взять значение как заданное и сделать с ним то, что ему нравится. Это также имеет большой смысл, поскольку обычно такие ссылки определяются и передаются для использования точно таким же шагом обработки в прошлом запросе. Поэтому ничто не говорит против этого шага, чтобы интерпретировать запрос каким-либо образом, который он считает наиболее подходящим.
часто такая строка даже не передается на окончательный этап обработки (некоторые серверные скриптовые языки). Вместо этого он служит только для того, чтобы быть оцененным в некотором правиле перезаписи, которое происходит на шаге маршрутизации HTTP-серверов. Это очень простой и удобный способ передачи информации о времени выполнения, не зависящей от концепции переменной.
Итак, нижняя строка: это полностью зависит от этапа обработки на стороне сервера.
example.net/eticketing/logout?out
, зачем нужен out
поскольку он не несет никакой ценности?
Параметр прошел после ?
в URL
доступен через $_GET
.
Это superglobal
или автоматическая глобальная переменная. Это просто означает, что он доступен во всех областях по всему сценарию. Нет необходимости делать глобальную переменную $; для доступа к ним в рамках функций или методов.
Если у вас есть строка запроса, содержащая параметр, но не значение ( not even an equals sign
), например:
http://example.com/test.html?id
<pre>
<?php
print_r($_GET);
if($_GET["id"] === "") echo "id is an empty string\n";
if($_GET["id"] === false) echo "id is false\n";
if($_GET["id"] === null) echo "id is null\n";
if(isset($_GET["id"])) echo "id is set\n";
if(!empty($_GET["id"])) echo "id is not empty";
?>
</pre>
Я проверил это с помощью http://example.com/test.html?id
, и он вернулся:
id
- пустая строка
id
установлен
Поэтому обратите внимание, что параметр без значения, связанный с значком равенства, считается пустой строкой ( ""
), isset() возвращает true для него и считается пустым, но не false или null.
Благодарю.
example.net/eticketing/logout?out
, зачем нужен out
поскольку он не несет никакой ценности?
out
имеют свое значение. это помогает нам выполнить проверку чего-либо. Предположим, вы хотите поставить проверку if if(isset($_GET["out"])) {
сделать что-то } else {
none }
. Таким образом, это помогает здесь.