Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как запретить повторную отправку данных

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]   [41-50]  [51-52] 

 
 автор: Николай2357   (23.06.2008 в 23:35)   письмо автору
 
   для: AVS   (23.06.2008 в 23:06)
 

Сразу вписывать было нечего, все варианты, которые предлагались я добросовестно проверял. Моего скудного умишки нехватило додуматься использовать "идентефикатор" в качестве дополнительного параметра. Вам смешно, но все кагда-то начинали.
Еще раз спасибо, давайте закроем тему.

   
 
 автор: AVS   (23.06.2008 в 23:06)   письмо автору
 
   для: Николай2357   (23.06.2008 в 22:18)
 

Надо было сразу вписать это в свой код и проверить как будет работать, а не писать все время про "одну страницу".

   
 
 автор: Николай2357   (23.06.2008 в 22:18)   письмо автору
 
   для: Trianon   (23.06.2008 в 16:37)
 

Вот Вам огромное спасибо, натыкали носом, отправили на луну.
И все таки хидер.
Я же знал, все просто, а топик из-за флуда раздули огогого!
Я же только учусь, чего меня в этом упрекать, всего одна строчка
header("Location: ".$SERVER['PHP_SELF']."?aname=$aname");
и вопрос снят.
Еще раз всем огромное спасибо за участие.

   
 
 автор: sim5   (23.06.2008 в 18:05)   письмо автору
 
   для: Николай2357   (23.06.2008 в 16:39)
 

Чуть ниже Trianon написал - никто не запрещает в хидере указать анкер, не один JS имеет такую возможность. Вам просто нужно выстроить свой код так, чтобы он разделялся на четыре части:
1. Инициализация всех переменных, которые будут участвовать в обработке формы, для того, чтобы при ошибках выдавать пользователю уже введенное им.
2. Вывод вашей разукрашенной странички по анкеру, если был переход и остановка скрипта.
3. Проверка полученных данных из формы - если ошибки, устанавливаем код ошибки, иначе делаем необходимые операции над данными и переход на себя.
4. Вывод формы при ошибках и отсутствии перехода (по умолчанию).

Можно поступить немного иначе. Не передавать имя или еще что-то иное в хидере, кроме как анкера, а все остальное сессией. Эта установка в сессии, может служить признаком, что прием прошел на ОК, и данному юзеру уже ни за что опять не открыть форму (или только по истечении некоего времени (антифлуд)).

   
 
 автор: Незнайка   (23.06.2008 в 16:41)   письмо автору
 
   для: Николай2357   (23.06.2008 в 16:39)
 

>Хочу на луну!
Неубедительно ("Плохо просите"...)

   
 
 автор: Николай2357   (23.06.2008 в 16:39)   письмо автору
 
   для: AVS   (23.06.2008 в 16:05)
 

Хочу на луну! Скажите мне ктонибудь, что я дурак, и ничего не понимаю ни в PHP, ни в жизни. Только аргументировано.
Проблема то вот в чем, если все нормально, форма прошла, то к сообщению в файл .dat добавляется уникальный, разовый анкер с id= ... date("U"), div - у присваивается тоже разовый id=...d_date("U"), в скрипт "наехивается" id анкера, а в стили id div-а с просьбой раскрасит буквы в красный цвет. В результате юзер после отправки формы видит свои каракули красным цветом и сразу, без перемотки страницы вниз. Это разовая процедура, следующий раз прежнее сообщение будет череньким.
Самое смешное, что все это работает. Только если обновить... я уже писал.
Если сделать переадресацию кудабы то нибыло, весь смак этой процедуры пропадает.
И еще раз напомню, по ряду причин нужна одна страничка, со скриптом и выводом.
Вот.
Спасибо за внимание.

   
 
 автор: Trianon   (23.06.2008 в 16:37)   письмо автору
 
   для: Николай2357   (23.06.2008 в 12:13)
 

Очень грубо - примерно так:
<?php 
  
if(!isset($_GET['aname'])
  {
      
$aname=$col=date("U");
      ....
Ваш код до
      
//А вот почему нельзя редерикт, 
     
header("Location: ".$SERVER['PHP_SELF']."?aname=$aname");
    exit();
  }
  else 
$aname $col intval($_GET['aname']);
 ...
Ваш код после
  
// ..хочется красиво
?>


В локейшене можете свой анкер добавить, кстати....

   
 
 автор: sim5   (23.06.2008 в 16:34)   письмо автору
 
   для: Николай2357   (23.06.2008 в 15:17)
 

Ну что обижаться? Вам сколько раз говорили, что проблему F5 решит переход - хотите одной страницей все, да нет проблем, делайте внутри страницы переход. Вы ведь сами уперлись, что вам не подходит header() (а можно и метатегом). Причем объясняете это некой проблемой. Ну тогда объясните в чем она состоит, лично я не вижу в вашем коде, по крайней мере в части его представленной, того, что было бы проблемой для использования в нем хидера.
Как вам советовать, если вы отметаете разумное, ведь вы с помощью этого JS сценария пытаетесь сделать тот же самый эквивалент хидера. Но суть то не в самом переходе, а в условиях обуславливающих его и последствиях перехода.

   
 
 автор: AVS   (23.06.2008 в 16:05)   письмо автору
 
   для: Николай2357   (23.06.2008 в 15:17)
 

Коля, иди на Луну. ))) Тебе же сказали:


<?php
if (форма добавлена в базу) { 
   
header('Location: '.$_SERVER['PHP_SELF'].'?rnd='.time()); 

?>

   
 
 автор: Николай2357   (23.06.2008 в 15:17)   письмо автору
 
   для: sim5   (23.06.2008 в 14:34)
 

Я уже писал, что далек от совершенста, поэтому и задаю "глупые" вопросы на форумах, ведь помоему они для этого и сделаны.
А вовсе не для того, чтобы тыкать носом в ребусы "у вас ничего сверхестественного".
Не хотите вникать, ладно, я все равно решу эту проблему с Вашей помощью или без.
Я не изобретаю велосипед, а хочу сделать маленький самокатик, желательно своими руками, и если что то не получается, прошу совета, помоему это нормально.
Можно написать супер пупер мега класс, прикрутить туда регулярку, сессии и бог весть знает что, а можно решить одной функцией или выражением. Если нельзя, так и скажите, я вот, к примеру, не понимаю, как в этом случае осуществить переход внутри страницы.

PS. location.href = location.href.replace(/#.*$/,"")+"#<? echo $aname; ?>" мне посоветовали на другом форумe http://forum.htmlbook.ru/viewtopic.php?id=9264 люди, которые в отличии от Вас всетаки вникают в проблему, прежде чем давать "совет".

   

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]   [41-50]  [51-52] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования