Мы все знакомы с традиционной обработкой форм, т.е.
$электронная почта = $_POST['электронная почта']; $имя = $_POST['имя'];
и т. д., а затем мы получаем все переменные из сообщения. а затем мы создадим составной оператор, например
$qry = "INSERT INTO $tableName (email,name) values ('$email','$name')";
Что если бы у вас было 18-20 вопросов? большинство людей просто пишут строки и строки кода. 99,9% всех пользователей сети делают это снова и снова.
Давай попробуем что-нибудь другое? Я понял, что должен быть лучший способ использования массивов.
В течение многих лет я искал простую процедуру и везде искал ее, которая будет СОЗДАВАТЬ оператор вставки ИЗ всех переменных $_POST.
До меня дошло, что $_POST на самом деле является массивом, поэтому я написал этот небольшой скрипт:
$vars = $_POST;
print_r($vars);
exit;
После нескольких часов работы с людьми на этом форуме вот полученный код. Я считаю, что создание контрольной суммы хэша всех ключей массива избавит от опасений SQL-атак, поскольку сервер не вызывается, пока не получит точное совпадение. Если кто-то добавит поле, это не удастся. Все согласны?
$predefinedChecksum = "84e602bbec8124f298e353171fb7f5b2"; // this is the hash value of all the array keys
$keys = array_keys($_POST);
$values = array_values($_POST);
$sql = "INSERT INTO $tableName (" . join(',', $keys) . ") VALUES ('" . join("',", $values) . "');";
$checksum = md5(join(',',$keys));
if ($checksum<>$predefinedChecksum) exit;
else $res = mysql_query($qry, $conn);
Спасибо всем, кто внес свой вклад... Думаю, у нас получился отличный сценарий.
Кто-то упомянул, чтобы отключить «кнопку» - как вы это делаете?
unset( $_POST['button'] );
Это не сработало — вывод скрипта по-прежнему показывает «кнопку» в качестве одной из переменных. Таким образом, вывод скрипта по-прежнему имеет поле под названием «кнопка» в конце.
Я не уверен, как вы могли бы удалить его из серии $values У кого-нибудь есть идеи?
Также выход
ВСТАВЬТЕ В (nameFirst, nameLast, emailPref, emailAlt, phoneDay, phoneMobile, этническая принадлежность, род деятельности, доход, семейный, дети‹18, образование, занятость, компания, название, отрасль, отдел, revAnnual, numemps, улица, город, штат, почтовый индекс ,Type_Mobile,планшет,компьютер,ноутбук) VALUES ('Vik',Grant',[email protected]',',',',african',',19',single',',Some_HS',student', ',',Finance_Accntg',Admin',',',',',',',Android',',',');
отсутствует ' кавычка в начале значения - может ли соединение существовать как соединение (a, b, c)?
$_POST
прямо в операторе вставки... - person Pudge601   schedule 29.05.2014