Хорошо ли использовать скрытые поля для передачи меток полей формы в php? - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь найти точный способ создания сообщений электронной почты с вводом данных из веб-форм без необходимости сопоставлять каждое имя поля с соответствующей меткой. Я пытаюсь лучше объяснить здесь:

<label for="project">Project name</label>
<input name="project" id="project" type="text"  value="" />

Когда я получу $_POST данные, мне придется вручную сделать что-то вроде:

$msg .= 'Project name:' . $_POST['project']

Так что, если у меня есть 30 полей, мне придется написать все 30 меток вручную, чтобы создать окончательное почтовое сообщение. Поэтому я подумал, что, возможно, я мог бы использовать скрытые поля для передачи меток, например:

<label for="project">Project name</label>
<input name="project[]" id="project" type="text"  value="" />
<input name="project[label]" type="hidden" value="Project name">

Так что я могу сделать что-то вроде этого:

$msg .= $_POST['project'][0] . ': ' . $_POST['project_name']['label']

Это просто работает. Но вопрос таков: это хорошая практика?

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

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

Время отнимает:
Возможно, вы захотите сделать это, чтобы выиграть время, но для этого безопасным способом потребуется дополнительная проверка данных, и вы закончите написание большего количества кода (и многократное написание содержимого ваших меток).

0 голосов
/ 28 июня 2018

Нет, это не очень хорошая практика.

Если вы хотите автоматизировать его, создайте массив key => label в своем PHP и зациклите его:

$labels = [
    'project' => 'Project Name',
    'creator' => 'Creator',
    'programming_language' => 'Programming Language'
];

$msg = '';
foreach ($labels as $key => $label) {
    $msg .= $label . ': ' . $_POST[$key];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...