Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Перенаправление массива $_POST через несколько скриптов
Форумы портала PHP.SU » PHP » Программирование на PHP » Перенаправление массива $_POST через несколько скриптов

Страниц (1): [1]
 

1. A.B.C. - 12 Июля, 2010 - 13:43:55 - перейти к сообщению
Здравствуйте.

Сразу скажу, чтоб не было криков это не скрипт авторизации здесь другое.

Смысл в том, что ВЭБ страница состоит из нескольких таблиц, на одной из котрых форма для заполнения, это форма не стандартная (т.е. не как лист авторизации) количество ее строк и столбиков меняется взависимости от права доступа скажем так.

Единственное, что у всех таблиц этой формы схожее это название и формат полей.

Вопрос такой:

После того как, поля формы заполнены и отправлены кнопкой на проверяющий скрипт, я вижу полученный массив $_POST.

Я могу сразу занести его в таблицу скриптом:

PHP:
скопировать код в буфер обмена
  1. foreach ($_POST as $key => $val ){print "$key = $val <br>\n";
  2. $keys[]=$key;
  3. $vals[]=$val;
  4. $ki=implode(",", $keys);
  5. $vi=implode("','", $vals);
  6. }
  7. $sql= "INSERT INTO $tab ($ki) VALUES ('$vi')" ;
  8. $sql_otvet=mysql_query($sql, $bd) or die ("Ошибка!!!".mysql_error());


, но если какое то поле не прошло проверку мне необходимо отправить все значения полученные значения формы т.е. массив $_POST обратно в форму + отчет с ошибками заполнения. Чтобы правильныые значения встали обратно в поля формы в VALUES по умолчанию.

Проблема в том, что напрямую массив $_POST я header(locationУлыбка в нужный мне скрипт я перенаправить не могу т.к. для того чтобы добраться до той таблицы нужно пройти несколько скриптов, которые рисуют другие таблицы. Все действие происходит как бы на одной и той же страничке.

Как безопасно перенапавить массив $_POST туда ?
2. JustUserR - 12 Июля, 2010 - 21:14:33 - перейти к сообщению
A.B.C. пишет:
Проблема в том, что напрямую массив $_POST я header(location в нужный мне скрипт я перенаправить не могу т.к. для того чтобы добраться до той таблицы нужно пройти несколько скриптов, которые рисуют другие таблицы. Все действие происходит как бы на одной и той же страничке.
Как безопасно перенапавить массив $_POST туда ?
Если рассматривать клиентский вариант решения то можно использовать статическую HTML-страницу со специальным JS-скриптом и динамической передачей данных с помощью iframe-транспорта - в таком случае вы можете обеспечить хранение текущего состояния на стороне клиента В таком случае система передачи данных огранизуется следующим образом - для начала вы обеспечиваете определенный безопасных формат передачи данных за счет проведения шифрования по собственной схеме - после чего клиентская web-страница выполняет запрос PHP-скрипту в определенной форме и анализирует его ответ и представляет его пользователю в определенном виде - введенные пользователем могут передаваться следующему PHP-скрипту аналогичным образом
Многоступенчатая передача данных между PHP-скриптами осуществяется следующим образом - сначала web-клиент запрашивает первый PHP-скрипт и смотрит результат его работы - которые содержат например указанные POST-данные для из запроса второму PHP-скрипту и тд Когда очередной PHP-скрипт возвращает данные другого рода например информацию об успешной проведении транзакции - то web-клиент выводит эти данные пользователю Как уже упоминалось ранее для упрощения взаимодейтсвия и избежания сложнообнаружимых ошибок следует правильно разработать формат передачи данных - например PHP-скрипт может возвратить маркер переадресации по GET/POST-запросу или же поле с данными для вывода их пользователю - кстати таким же образом можно обеспечивать поэлементное обновление HTML-страницы
3. Champion - 12 Июля, 2010 - 21:21:08 - перейти к сообщению
Не надо ничего перенаправлять. Надо вывести ту же форму, просто <input name=inp1 value=$_POST[inp1]> и аналогично.
И к чему столько криков, что это не форма авторизации? Какая разница?
4. ALEN - 12 Июля, 2010 - 21:25:02 - перейти к сообщению
A.B.C.
Ну можно св сессию например сохранить, перенаправить нас куда нужно и вывести!
5. JustUserR - 12 Июля, 2010 - 21:45:38 - перейти к сообщению
Champion пишет:
И к чему столько криков, что это не форма авторизации? Какая разница?
Видимо имелось в виду что форма не содержит данные типа пароля которые должны подвергаться необратимому шифрованию
A.B.C. Для интерактивности взаимодейтсвия с пользователем вы можете воспользоваться схемой приведенной выше - но тем не менее если среди передаваемых данных между инстанциями PHP-скриптов имеют те которые отвечают за организацию прав доступа к ресурсу - то следует хранить их отдельно на стороне сервера а со стороны клиента передавать только ключ сессии
6. A.B.C. - 13 Июля, 2010 - 02:07:46 - перейти к сообщению
Всем спасибо за помощь, но:

JustUserR, решение с
Цитата:
JS-скриптом и динамической передачей данных с помощью iframe
не подойдет для меня так как с Ява скриптом почти не знаком да и слишком кажется сложно.

Champion, если я выведу форму типа
Цитата:
<input name=inp1 value=$_POST[inp1]>
она будет пустая т.к. массива $_POST уже не будет существовать к тому времени, между нажатем на кнопку "Отправить" и новым рисование формы несколько скриптов. Можно воспользоваться Сессией, но для каждый раз придется вписывать условия
PHP:
скопировать код в буфер обмена
  1.  if (isset($_POST['a'])) {$_SESSION['a']=$_POST['a'];}


и обратный перевод в:

<input name=inp1 value="<?php if (isset($_SESSION['a'])) {print ($_SESSION['a']);} ?>"]>

универсальный механизм для форм составить нельзя потому что каждый раз в формах разные теги т.е. селекты и инпуты...с разным содержимым и в разных местах...

вот я и хотел как - еибудь Пост сохранить и перекинуть его через несколько скриптов и в форму в значения по умолчанию вывести.
7. JustUserR - 13 Июля, 2010 - 02:36:48 - перейти к сообщению
A.B.C. пишет:
JustUserR, решение с JS-скриптом и динамической передачей данных с помощью iframe не подойдет для меня так как с Ява скриптом почти не знаком да и слишком кажется сложно
Пожалуйста! Данный вариант решения на самом деле не является особенно сложным и используется в интерактивных сайтах - если вы реализуете нижеуказанный вариант то потом сможете добавить интерактивность с указанием пользователю прогресс-бара процесса
A.B.C. пишет:
Вот я и хотел как - еибудь Пост сохранить и перекинуть его через несколько скриптов и в форму в значения по умолчанию вывести
В таком случае можете попробовать сделать опорный PHP-скрипт который будет осуществлять трансляцию POST-запросов по серии других PHP-скриптов - в таком случае схема очень похоже на использование JS-скрипта - но для запуска PHP-скриптов из web-пространста здесь служит CURL/fsockopen или вызов консольного браузера типа /usr/bin/links
8. A.B.C. - 13 Июля, 2010 - 02:40:47 - перейти к сообщению
Спасибо
9. JustUserR - 13 Июля, 2010 - 03:01:14 - перейти к сообщению
A.B.C. пишет:
Спасибо
Пожалуйста! Об использовании функций curl можете посмотреть здесь http://www.php.su/functions/?cat=curl - а обрабатывать полученные данные можно с помощью регулярных выражений или функциями типа http://www.php.su/functions/?cat=domxml если ответ приходит в XML-подобном формате

 

Powered by ExBB FM 1.0 RC1