Любой более простой способ сделать $ name = $ _REQUEST ["name"] ;? - PullRequest
1 голос
/ 27 апреля 2011

Итак, я новичок в PHP и пытаюсь создать форму.Я принимаю несколько параметров и хочу обработать их на одной странице.Я не уверен, как это сделать без гигантского if-else, содержащего всю страницу как if($_POST).Это не кажется идеальным.

Кроме того, я обнаружил, что много делаю следующее.Есть ли способ сократить это?Имена все остаются прежними.

$name = $_REQUEST["name"];
$gender = $_REQUEST["gender"];
$age = $_REQUEST["age"];

И у меня есть много строк, которые просто делают это, и это кажется ужасно неэффективным

Ответы [ 7 ]

1 голос
/ 27 апреля 2011

Прекратите использовать $ _REQUEST, потому что это комбинация $ _COOKIE, $ _POST и $ _GET.Это становится угрозой безопасности.

1 голос
/ 27 апреля 2011

Для этого можно использовать функцию extract () . Но у него есть недостаток безопасности: существующие переменные могут быть перезаписаны, если кто-то добавит переменные в заголовок POST.

Редактировать: решение hsz лучше

1 голос
/ 27 апреля 2011

Какой процесс вы выполняете, если ... еще ... если вам нужно опубликовать код, чтобы мы могли сообщить вам, как его можно сократить.

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

extract($_POST);

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

0 голосов
/ 27 апреля 2011

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

Я бы посоветовал пройтись по вашему массиву и что-то сделать с переменными в нем (например, проверка)

foreach ($_POST as $key => $valu) {
   //do something with the variables
}

Кроме того, не используйте $_REQUEST, если вы действительно не хотитепроверить $ _GET, $ _POST и $ _COOKIE.Используйте правильный массив, когда обращаетесь к переменным, или люди могут отправлять данные, которые вы не ожидаете.

0 голосов
/ 27 апреля 2011

Для начала: переверни.Не делай

if ($_POST) {
 // Your handling code
} else {
 echo "No data!";
}

делай

if (!$_POST) {
 die("No data!");
}
// Your handling code
0 голосов
/ 27 апреля 2011

Волшебные кавычки?http://php.net/manual/en/security.magicquotes.php

0 голосов
/ 27 апреля 2011

Вместо использования $_REQUEST здесь следует использовать $_POST.

$keys = array('name', 'gender', 'age');
foreach ( $keys as $key ) {
  if ( isset($_POST[$key]) ) {
    $$key = $_POST[$key];
  }
  // optional:
  else {
    $$key = ''; // default value
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...