Если я введу следующее в браузер:
http://domain.com/script.php?1234
И script.php имеет следующий скрипт:
$key=array_keys($_GET); echo $key[0];
Выход будет:
1234
(Я пытаюсь покончить с уродливым r = 1234, и если это сработает, это будет идеально.)
Мой вопрос: официально ли это или плохое программирование?
Вы могли бы также сделать
echo $_SERVER['QUERY_STRING']
Что касается создания дружественных URL-адресов, есть лучшие способы сделать это.
См. Например: $ _GET и URL Rewriting для PHP
Ничто не может быть официально правильным, если оно работает для вас, то, во что бы то ни стало, его использовать. Кстати, проблема в том, что это то, что значение.
Когда у вас есть example.com?1234&4567
тогда у вас будет два значения без имени ключа, чтобы рассказать вам, что к чему.
Но если вы хотите покончить с уродливым url, вы должны изучить mod_rewrite
Руководство для начинающих
Другое руководство для новичков
Это верно. Переменная называется 1234, и она не имеет значения. Это значит
GET['1234'] == '';
Вы могли бы также написать http://example.com?1234=10. Тогда результат будет
GET['1234'] == '10';
Вы не должны использовать этот подход. Если вы не хотите, чтобы ваши переменные отображались, вы можете использовать переписывание URL, чтобы URL выглядел хорошо. Кроме того, не забудьте очистить свой $ _GET 🙂
Фактически, в вашем примере 1234 – это переменная, которую вы отправляете через GET, без значения, если вы хотите посмотреть ее таким образом.
Мой вопрос: официально ли это или плохое программирование?
Query-parameter-without-value не документирован для работы, хотя, вероятно, это будет продолжаться и на практике.
Если вы просто хотите захватить целую строку запроса, не анализируя ее как параметры, лучше всего сказать так:
echo $_SERVER['QUERY_STRING']
(Независимо от того, что вы делаете, не отсылайте его прямо, хотя! Или дезинфицируйте значение, например, преобразовывая его в целое число, или, если вы хотите разрешить произвольную строку, вывести ее соответствующим образом для JavaScript, кавычками с косой чертой и кавычками обратные косые.)