Перебирать результаты $_GET
Если бы у меня было что-то вроде этого:
?FormSub=Submit&qty=1&partno=ipod¬es=apple&unitprice=102.99&rowid=1&qty=2&partno=Ear+Buds¬es=Headphones&unitprice=45.99&rowid=2
Возможно ли выполнить цикл через GET, чтобы возвращать результаты в таблицу HTML, а также добавлять в таблицу SQL?
Или мне нужно будет добавить rowid к концу каждого $_GET
(т.е. qty
1
=1&partno
1
=ipod
...)?
Спасибо, что посмотрели.
Ответы
Ответ 1
Вы можете пройти через $_GET
. Это просто массив:
foreach ($_GET as $key => $value) { }
Когда вы переходите к своим SQL-запросам, не забудьте очистить все ваши входы. Аналогично для отображения значений на странице. Используйте htmlentities
для дезинфекции для отображения HTML. Предполагая, что ваша база данных - это MySQL, используйте mysql_real_escape_string
для SQL.
Ответ 2
$_ GET - это массив, поэтому вы можете просто перебирать его с помощью foreach
foreach($_GET as $query_string_variable => $value) {
echo "$query_string_variable = $value <Br />";
}
вы также можете сделать extract($_GET)
, чтобы все они были переменными.. но я не предлагаю.
Если вы хотите сохранить его в db, вы должны рассмотреть mysql_real_escape_string($value)
.
Чтобы напечатать таблицу HTML.. вам нужно что-то подобное?
$count = count($_GET);
if($count > 0) {
echo "<table>";
foreach($_GET as $query_string_variable => $value) {
echo "<tr><td>$query_string_variable</td><td>$value</td></tr>"
}
echo "</table>";
}
надеюсь, что это поможет.
Ответ 3
следить! кто-то может легко изменить это и отправить:
?FormSub=Submit&qty=1&partno=ipod¬es=apple&unitprice=0.99&rowid=1&qty=2&partno=Ear+Buds¬es=Headphones&unitprice=0.05&rowid=2
примечание: "unitprice" был 102.99 и 45.99, но были изменены на 0.99 и 0.05, я думаю, они продаются сейчас по отличной цене!
Ответ 4
См. FAQ Как создать массивы в HTML <form>
?
Итак, в вашем случае запрос:
?FormSub=Submit&qty[]=1&partno[]=ipod¬es[]=apple&unitprice[]=102.99&rowid[]=1&qty[]=2&partno[]=Ear+Buds¬es[]=Headphones&unitprice[]=45.99&rowid[]=2
создаст массив формы:
array(
'FormSub' => 'Submit',
'qty' => array(
0 => '1',
1 => '2'
),
'partno' => array(
0 => 'ipod',
1 => 'Ear Buds'
),
'notes' => array(
0 => 'apple',
1 => 'Headphones'
),
'unitprice' => array(
0 => '102.99',
1 => '45.99'
),
'rowid' => array(
0 => '1',
1 => '2'
)
)
Но я надеюсь, что вы не будете принимать эти значения без проверки или даже использовать их для фактического заказа.
Дополнительно GET предназначен для использования только для поиска данных:
В частности, было установлено, что методы GET и HEAD НЕ ДОЛЖНЫ иметь значение принятия действий, кроме поиска.
Для запросов с побочными эффектами (изменение данных на сервере) вы должны использовать POST.