Чтобы ответить на вопрос буквально, на самом деле нет никаких «правил», о которых я знаю для именования ключей массива $_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=")(&#$)%#$%" />
</div>
</form>
</div>
</body>
</html>
Вставьте его в валидатор , он пройдет.
Еще один лучшийПрактика добавления: сделайте вводимые имена форм или ключи get / post осмысленными, как и в любом другом соглашении об именах, конечно.Не используйте input1
и $_GET['param']
.Используйте имена, которые описывают значение, например last_name
или $_GET['sort_order']
.