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

0

Я знаю, что если 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
    PS: извините за неправильное форматирование, новое здесь.
  • 0
    Я отредактировал ваш вопрос и попытался уточнить его название. Пожалуйста, проверьте, что я не изменил ваше предполагаемое значение, и не стесняйтесь редактировать его. Например, вы использовали тег php , но ничего не упомянули о PHP в своем вопросе. Вы заинтересованы только в интерпретации таких URL с помощью PHP?
Теги:
url
http
url-parameters

2 ответа

2
Лучший ответ

На самом деле это не совсем верно в том смысле, что часть запроса URL отправляет "значения" на сервер. Вместо этого это всего лишь строка, которая интерпретируется тем, что происходит с процессами на стороне сервера, как правило, с некоторым языком сценариев.

В самом деле, обычно такой шаблон, как name=value приведет к переменной, называемой name содержащим value. Но, как сказано, это зависит от этапа обработки, он не определен каким-то общим стандартом.

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

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

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

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

Итак, нижняя строка: это полностью зависит от этапа обработки на стороне сервера.

  • 0
    Я полностью согласен с вами, но моя главная мысль заключается в том, что если используется example.net/eticketing/logout?out , зачем нужен out поскольку он не несет никакой ценности?
  • 0
    Я не понимаю противоречия с моим ответом, который вы, кажется, видите ... Как написано: строка «out» может быть утверждением сама по себе. Очевидно, это также может быть артефактом неисправного кода, но в этом конкретном примере я бы сказал, что нет. 2 пункта, которые я перечислил, применимы ...
Показать ещё 2 комментария
0

Параметр прошел после ? в 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
    Я полностью согласен с вами, но моя главная мысль заключается в том, что если используется example.net/eticketing/logout?out , зачем нужен out поскольку он не несет никакой ценности?
  • 0
    @ Ануш, хороший вопрос. здесь out имеют свое значение. это помогает нам выполнить проверку чего-либо. Предположим, вы хотите поставить проверку if if(isset($_GET["out"])) { сделать что-то } else { none } . Таким образом, это помогает здесь.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню