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 :: Версия для печати :: Отправка данных и F5 | Перемешивание элементов массива
Форумы портала PHP.SU » » Вопросы новичков » Отправка данных и F5 | Перемешивание элементов массива

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

1. NeuroZ - 24 Сентября, 2013 - 10:37:09 - перейти к сообщению
1. Вот есть у меня форма на странице. Допустим action сам на себя. Если не прописывать дополнительных условий, то при нажатии F5 - скрипт обработки формы загрузиться снова.

Вопрос такой: что лучше использовать?
Я пробовал и редирект (сам на себя) в конце обработки формы (чтобы данные по F5 снова не приходили).
Пробовал задавать еще одно скрытое поле в форму, куда генерировал случайное число, которое также записывалась в куку и при обработке, если кука совпадает с постом то происходит обработка.
Может есть более логичный способ?
И еще есть ли разница - указывать в action "#" или прямой путь на эту же страницу?

2. И второй вопрос по массиву. Допустим я попадаю на страницу, где в $_GET у меня записан какой-то ID. Есть массив с кучей ID. Мне нужно сначала вывести элемент из массива, с ID из $_GET, а потом все остальные элементы.

Вопрос: Мне нужно 2 раза цикл с условиями запускать? Или есть более рациональное решение?
(Добавление)
Кстати по второму варианту последнее время использую такой метод:
Форич по массиву - если ГЕТ совпадает с ИД, то записываю в переменную $first, иначе в $second, а в конце вывожу $first.$second

Есть еще варианты решения подобной задачи?
2. esterio - 24 Сентября, 2013 - 10:55:14 - перейти к сообщению
1. конешно редирект самого на себя спасает от повторной отправкы формы. Action можно и не укахивать(тогда браузер отправить на тот же УРЛ), хотя помню один житель форума писал что ето не по стандарту и указивать надо всегда(REQUEST_URI)
Насчет hidden-поля, то так делают для защиты от CSRF(совершение действия от имени пользователя) или же проверяют HTTP_REFERER(как у DeepVarvar-а CMS)
2. ничего не понятно, уточните вопрос. Желательно с примером кода
3. NeuroZ - 24 Сентября, 2013 - 11:21:05 - перейти к сообщению
По второму вопросу:
Есть ссылка вида index.php?item=3
На странице index.php есть многомерный массив
PHP:
скопировать код в буфер обмена
  1. [0] (
  2. [var] => 1
  3. [item] => 1
  4. )
  5. [1] (
  6. [var] => 412
  7. [item] => 2
  8. )
  9. [2] (
  10. [var] => dasd
  11. [item] => 3
  12. )
  13. [3] (
  14. [var] => caxa
  15. [item] => 4
  16. )

*ну не помню я как массивы правильно писать)) но смысл думаю ясен

Выводятся все элементы, но элемент с item = 3 нужно вывести первым, а затем остальные.
(Добавление)
Вариант:
PHP:
скопировать код в буфер обмена
  1. $firstItem = $secondItem = '';
  2. foreach ($myArr as $key => $arr) {
  3. if ($_GET['item'] == $arr['item']) $firstItem = $arr;
  4. else $secondItem .= $arr;
  5. }
  6. echo $firstItem.$secondItem

(Добавление)
$arr = допустим HTML строка в перемешку с элементами массива
(Добавление)
Вопрос в том, что мб существуют какие-нибудь функции, которые позволят напрямую обратиться к родительскому элементу, зная значение его дочернего элемента?

 

Powered by ExBB FM 1.0 RC1