![]() |
Снова Php: работа с формами.
1. При нажатии кнопки <input type=submit ...> происходит переход по дикому адресу вида httр://.../что-то.php?msg= и дальше длиннющая строка, в основном из процентиков и чисел, т.к. тект засабмиттил русский. И вся эта длиннющая строка отображается в строке адреса. Можно ли этого избежать? Разумеется, чтобы данные всё же передавались :biggrin:
2. Всё в той же формочке, после нажатия submit грузится та же самая форма, но уже содержащая обновлённые данные. Предположим, я что-то меняю извне скрипта (нехорошо, знаю, но бывает надо :)). Хочется обновить. Жму F5... Ага, а адрес-то содержит всякие поля дополнительные, и скрипт считает, что надо снова сделать те же действия, что и при нажатии submit'а. Что не есть хорошо, ибо вместо обновления экрана я получаю просто-напросто откат моих изменений :( Тот же вопрос: что делать? Пока что повесил доп. ссылку "Обновить страницу", ссылающуюся на сам скрипт без всяких submit'ов, но это как-то некрасиво... :) |
1) Юзай метод на Get, а Post
|
Цитата:
|
Цитата:
$Var1 = $HTTP_POST_VARS["Var1"]; |
ivahaev
Никто ничего не спрашивает, просто отсылает :) Я Оперу юзаю, может из-за этого... ГеныЧ В смысле, в скрипте писать не $txt=$_GET['msg'], а $txt=$_POST['msg']? Такое не прокатывает... isset($_POST['msg'])==false. Добавлено: Пока писал, не видел сообщения от SamJa... Кажись, понял... Имелось в виду, сделать так? <form action=admin.php method=\"post\" ... Ещё добавлено: Отлично, сработало! Спасибо! С меня плюсик :) Тогда остаётся второй вопрос: как избежать повторного внесения изменений при обновлении страницы? |
правильно понял :)
Если я правильно понял, форма переходин на свою страницу. То есть таже страница загружается снова. Тогда делаеш ещё одну переменную, добавляеш её на форму в спрятанный элемент. Или можно просто проверять передан ли какой-то параметр. Примерно так: if (!$var1) { //esli peremennie nebili peredani } else { //esli peredani } А вообще, я немного недогнал как у тебя это сделано. Проще будет сделать два разных php файла. Тогда при обновлении всё должно остаться. |
SamJa
Тут не совсем то... Сейчас опишу поподробнее. Сам скрипт в целом выглядит примерно так: PHP код:
Т.о., если скрипт запущен сам по себе, то просто отображается форма с текстом из файла. Если же он был вызван через POST, то новый текст сохраняется в файл, и рисуется та же форма с уже модифицированным текстом. В этом втором случае если я жму F5, то происходит то же самое, как если бы я нажал "Сохранить". |
Ну правильно. Если скрипт пишет в файл, нажатием F5 ты его запускаеш снова и он соответственно пишет по второму кругу.
Я всегда делаю отдельные скрипты для записи и просмотра. Скрипт для записи ничего не выводит (если только нет ошибок) и перенаправляет броузер на скрипт просмотра. Тогда можеш обновлять сколько хочеш. |
Кэп, лично я чтобы избежать повторного внесения данных, после обработки делаю в скрипте редирект на обычную страницу с текстом, что данные занесены и т.д. и т.п. ... :)
|
SamJa,
ГеныЧ Хорошо, сделал редирект: внутри того if'а, где делается модификация файла, вставил в конце доп. строчки header("location: admin.php");exit; Вроде, работает. Спасибо всем! |
| Часовой пояс GMT +4, время: 18:51. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.