Значение параметров URL без значения (например, «id», «logout? Out»)

Я знаю, что если 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 является языком сценариев на стороне сервера.

0

Решение

В строгом смысле это не совсем так, что часть запроса в URL отправляет «значения» на сервер. Вместо этого это просто строка, которая интерпретированы тем, что когда-либо обрабатывает эту строку на стороне сервера, как правило, некоторый язык сценариев.

Действительно, как правило, какой-то шаблон name=value приведет к переменной с именем name удерживая ценность value, Но, как уже говорилось, это до этапа обработки, он не определен каким-то общим стандартом.

Существует несколько типичных способов интерпретации такой строки запроса, как вы ее упоминаете, содержащей только некоторую строку, но не похожую на шаблон, упомянутый выше:

  • переменная создается, но ей не присваивается какое-либо значение, поскольку в строке запроса не было указано ни одной переменной. это делает Имеет смысл, поскольку наличие переменной уже само по себе является оператором, который может быть оценен, что может повлиять на этап обработки.

  • На этапе обработки можно полностью пропустить «типичный» способ интерпретации такой строки, просто принять значение как заданное и делать с ним то, что ему нравится. Это также делает имеет большой смысл, поскольку обычно такие ссылки определяются и передаются для использования точно таким же этапом обработки в предыдущем запросе. Так что ничто не говорит против этого шага, чтобы интерпретировать запрос так, как он считает наиболее подходящим.

  • часто такая строка даже не передается на заключительный этап обработки (некоторый язык сценариев на стороне сервера). Вместо этого он служит только для оценки в некотором правиле перезаписи, которое выполняется на этапе маршрутизации http-серверов. Это очень простой и удобный способ передачи информации времени выполнения независимо от понятия переменной.

Итак, суть в следующем: это полностью зависит от этапа обработки на стороне сервера.

2

Другие решения

Параметр передан после ? в 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.

Благодарю.

0

По вопросам рекламы [email protected]