Я знаю, что если 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-серверов. Это очень простой и удобный способ передачи информации времени выполнения независимо от понятия переменной.
Итак, суть в следующем: это полностью зависит от этапа обработки на стороне сервера.
Параметр передан после ?
в 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.
Благодарю.