Правила именования переменных POST / GET? - PullRequest
10 голосов
/ 10 мая 2011

Существуют ли правила, которым нужно следовать при именовании переменных POST в форме или переменных GET в строке запроса?

* 1003 Благодарения и *

Ответы [ 4 ]

8 голосов
/ 10 мая 2011

Чтобы ответить на вопрос буквально, на самом деле нет никаких «правил», о которых я знаю для именования ключей массива $_POST и $_GET в php.Это массив, как и любой другой.Взгляните на этот рабочий пример на Codepad :

<?php
$_POST['♠♣♥♦'] = 'value1';
$_POST['\'\'\'\''] = 'value2';
$_POST['<?php echo "Hello World"; ?>'] = 'value3';
$_POST['     '] = 'value4';
$_POST[''] = 'value5';
$_POST['@#$%^&*()'] = 'value6';

print_r($_POST);

В случае имен ввода формы, они просто должны быть допустимыми HTML-атрибутами «name» (см. Ниже).Однако на практике многие необычные персонажи действительно будут работать.Имейте в виду, что это не значит, что это хорошая идея.Различные серверы (и, возможно, разные браузеры) будут работать по-разному, например, с некоторыми символами, такими как пробелы.

Как отмечал Tadeck , дубликаты ключей будут перезаписаны последними при чтении, но с использованиемbrackets[] решит эту проблему на стороне клиента, превратив переменную в массив.

Что касается соглашений об именах и передовых методов, здесь не так много места.Предполагается, что вы придерживаетесь AZ az 0-9, тире и подчеркиваний.Хотя Ajay предложил для удобства использовать имена столбцов базы данных для имен ввода форм, многие люди скажут вам, что плохая практика - раскрывать информацию о вашей базе данных публично.Я думаю, что invertedlambda , вероятно, имеет здесь самый близкий ответ на этот вопрос, а Tadeck имеет самый близкий ответ в отношении лучших практик.

Относительно атрибутов "name" в HTML:http://www.w3.org/TR/html4/types.html#h-6.2

ID и ИМЯ токены должны начинаться с буквы ([A-Za-z]) и могут сопровождаться любым числомбуквы, цифры ([0-9]), дефисы ("-"), подчеркивания ("_"), двоеточия (":") и точки (".").

Возможнокто-то может объяснить мне, является ли вышеуказанный документ правилом или рекомендацией, я ни в коем случае не эксперт в этом вопросе.Кажется, у меня нет проблем с нарушением некоторых из этих правил на практике.У меня также нет проблем с проверкой этого примера документа как строгого XHTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title></title>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
</head>
<body>
<div><form action="" method="post">
<div>
<input name="♠♣♥♦" />
<input name="''''" />
<input name=")(&amp;#$)%#$%" />
</div>
</form>
</div>
</body>
</html>

Вставьте его в валидатор , он пройдет.


Еще один лучшийПрактика добавления: сделайте вводимые имена форм или ключи get / post осмысленными, как и в любом другом соглашении об именах, конечно.Не используйте input1 и $_GET['param'].Используйте имена, которые описывают значение, например last_name или $_GET['sort_order'].

4 голосов
/ 10 мая 2011

Одним словом, нет - если ваши имена переменных соответствуют спецификации HTTP и используемому вами вспомогательному веб-серверу, вы можете вызывать свои параметры как угодно.

Если для именования параметров вы используете те же правила, что и при именовании переменных, вы сможете выбрать правильное имя.

3 голосов
/ 10 мая 2011

Я считаю, что лучшее решение:

  • используйте строчные буквы,
  • НЕ использовать точки, любые другие специальные символы (недопустимы),
  • понять, как они передаются во время запроса (например, name="test[][]" создаст значение в массиве, который находится в другом массиве) и правильно его использовать,
  • избегайте создания конфликтов (например, ?test=1&test=2 создаст проблемы, поскольку будет передано только одно из значений - лучше использовать ?test[]=1&test[]=2, чтобы был передан массив с двумя значениями),
  • быть последовательным,

Кроме того, просмотрите различные решения, которые вы можете найти на GitHub.com , так что вы будете использовать хорошие, проверенные и используемые многими людьми методы.

0 голосов
/ 10 мая 2011

Мы можем использовать имена как правила имен переменных, но можем использовать ключевые слова также как имена переменных GET / POST.Лучше мы можем использовать те же имена, что и имена столбцов базы данных, где это применимо.Но такого правила не существует.Просто вот некоторые рекомендации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...