imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 08.06.2004, 15:34     # 1
CaptainFlint
Full Member
 
Аватар для CaptainFlint
 
Регистрация: 19.12.2003
Адрес: Москва
Пол: Male
Сообщения: 514

CaptainFlint Гурее всех гурых :-)
CaptainFlint Гурее всех гурых :-)CaptainFlint Гурее всех гурых :-)
Снова Php: работа с формами.

1. При нажатии кнопки <input type=submit ...> происходит переход по дикому адресу вида httр://.../что-то.php?msg= и дальше длиннющая строка, в основном из процентиков и чисел, т.к. тект засабмиттил русский. И вся эта длиннющая строка отображается в строке адреса. Можно ли этого избежать? Разумеется, чтобы данные всё же передавались
2. Всё в той же формочке, после нажатия submit грузится та же самая форма, но уже содержащая обновлённые данные. Предположим, я что-то меняю извне скрипта (нехорошо, знаю, но бывает надо ). Хочется обновить. Жму F5... Ага, а адрес-то содержит всякие поля дополнительные, и скрипт считает, что надо снова сделать те же действия, что и при нажатии submit'а. Что не есть хорошо, ибо вместо обновления экрана я получаю просто-напросто откат моих изменений Тот же вопрос: что делать? Пока что повесил доп. ссылку "Обновить страницу", ссылающуюся на сам скрипт без всяких submit'ов, но это как-то некрасиво...
CaptainFlint вне форума  
Старый 08.06.2004, 15:50     # 2
ГеныЧ
Junior Member
 
Регистрация: 10.05.2004
Сообщения: 111

ГеныЧ Нуль без палочки
1) Юзай метод на Get, а Post
ГеныЧ вне форума  
Старый 08.06.2004, 15:59     # 3
ivahaev
::VIP::
шайтан-башка
 
Аватар для ivahaev
 
Регистрация: 31.03.2003
Адрес: imho.ws Тюменское отделение
Сообщения: 1 902

ivahaev СуперБогivahaev СуперБог
ivahaev СуперБогivahaev СуперБогivahaev СуперБогivahaev СуперБогivahaev СуперБогivahaev СуперБогivahaev СуперБогivahaev СуперБогivahaev СуперБогivahaev СуперБогivahaev СуперБогivahaev СуперБогivahaev СуперБогivahaev СуперБогivahaev СуперБогivahaev СуперБогivahaev СуперБогivahaev СуперБогivahaev СуперБог
Цитата:
CaptainFlint:
Ага, а адрес-то содержит всякие поля дополнительные, и скрипт считает, что надо снова сделать те же действия, что и при нажатии submit'а. Что не есть хорошо, ибо вместо обновления экрана я получаю просто-напросто откат моих изменений Тот же вопрос: что делать?
Когда браузер спросит по кнопке обновить "Отправить данные снова?", или что-то типа того, ответить нет .
ivahaev вне форума  
Старый 08.06.2004, 16:26     # 4
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
Цитата:
Сообщение от ГеныЧ
1) Юзай метод на Get, а Post
А потом свои переменные получиш так:
$Var1 = $HTTP_POST_VARS["Var1"];
EvroStandart вне форума  
Старый 08.06.2004, 16:31     # 5
CaptainFlint
Full Member
 
Аватар для CaptainFlint
 
Регистрация: 19.12.2003
Адрес: Москва
Пол: Male
Сообщения: 514

CaptainFlint Гурее всех гурых :-)
CaptainFlint Гурее всех гурых :-)CaptainFlint Гурее всех гурых :-)
ivahaev
Никто ничего не спрашивает, просто отсылает Я Оперу юзаю, может из-за этого...
ГеныЧ
В смысле, в скрипте писать не $txt=$_GET['msg'], а $txt=$_POST['msg']? Такое не прокатывает... isset($_POST['msg'])==false.

Добавлено:
Пока писал, не видел сообщения от SamJa...
Кажись, понял... Имелось в виду, сделать так?
<form action=admin.php method=\"post\" ...

Ещё добавлено:
Отлично, сработало! Спасибо! С меня плюсик

Тогда остаётся второй вопрос: как избежать повторного внесения изменений при обновлении страницы?

Последний раз редактировалось CaptainFlint; 08.06.2004 в 16:41.
CaptainFlint вне форума  
Старый 08.06.2004, 16:55     # 6
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
правильно понял

Если я правильно понял, форма переходин на свою страницу. То есть таже страница загружается снова.
Тогда делаеш ещё одну переменную, добавляеш её на форму в спрятанный элемент. Или можно просто проверять передан ли какой-то параметр.

Примерно так:
if (!$var1)
{
//esli peremennie nebili peredani
}

else
{
//esli peredani
}

А вообще, я немного недогнал как у тебя это сделано. Проще будет сделать два разных php файла. Тогда при обновлении всё должно остаться.
EvroStandart вне форума  
Старый 08.06.2004, 17:19     # 7
CaptainFlint
Full Member
 
Аватар для CaptainFlint
 
Регистрация: 19.12.2003
Адрес: Москва
Пол: Male
Сообщения: 514

CaptainFlint Гурее всех гурых :-)
CaptainFlint Гурее всех гурых :-)CaptainFlint Гурее всех гурых :-)
SamJa
Тут не совсем то... Сейчас опишу поподробнее.
Сам скрипт в целом выглядит примерно так:
PHP код:
// admin.php
<?php
if (isset($action) and $action="Сохранить")
{
  
// Сохраняем модифицированную запись $msg
  
fopen(...);fwrite(...);fclose(...);
}
// Читаем то, что сейчас записано в файле в переменную $msg
fopen(...);fread(...);fclose(...);
// Теперь выводим форму со считанным текстом:
print "<form action=admin.php method=\"post\">";
print 
"<textarea name=msg>$msg</textarea>";
print 
"<input type=submit name=action value=\"Сохранить\"></form>";
?>
Все переменные из формы определяются через $_POST (можно и register_globals, но он мне не нравится почему-то...).
Т.о., если скрипт запущен сам по себе, то просто отображается форма с текстом из файла. Если же он был вызван через POST, то новый текст сохраняется в файл, и рисуется та же форма с уже модифицированным текстом. В этом втором случае если я жму F5, то происходит то же самое, как если бы я нажал "Сохранить".

Последний раз редактировалось CaptainFlint; 08.06.2004 в 17:22.
CaptainFlint вне форума  
Старый 08.06.2004, 17:31     # 8
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
Ну правильно. Если скрипт пишет в файл, нажатием F5 ты его запускаеш снова и он соответственно пишет по второму кругу.
Я всегда делаю отдельные скрипты для записи и просмотра. Скрипт для записи ничего не выводит (если только нет ошибок) и перенаправляет броузер на скрипт просмотра. Тогда можеш обновлять сколько хочеш.
EvroStandart вне форума  
Старый 08.06.2004, 17:52     # 9
ГеныЧ
Junior Member
 
Регистрация: 10.05.2004
Сообщения: 111

ГеныЧ Нуль без палочки
Кэп, лично я чтобы избежать повторного внесения данных, после обработки делаю в скрипте редирект на обычную страницу с текстом, что данные занесены и т.д. и т.п. ...
ГеныЧ вне форума  
Старый 08.06.2004, 18:21     # 10
CaptainFlint
Full Member
 
Аватар для CaptainFlint
 
Регистрация: 19.12.2003
Адрес: Москва
Пол: Male
Сообщения: 514

CaptainFlint Гурее всех гурых :-)
CaptainFlint Гурее всех гурых :-)CaptainFlint Гурее всех гурых :-)
SamJa,
ГеныЧ
Хорошо, сделал редирект: внутри того if'а, где делается модификация файла, вставил в конце доп. строчки header("location: admin.php");exit; Вроде, работает. Спасибо всем!
CaptainFlint вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 15:38.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.