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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Удаление переменных
 
 автор: Worldmen   (18.05.2007 в 10:05)   письмо автору
 
 

Создал страницу на которой отправляеться сообщение по почте. Обработчик формы находиться на этой же странице. При нажатии на кнопке "Отправить" проверяеться - нажата ли эта кнопка, если нажата - проверяется наличие заполнения полей почтового сообщения, если все впорядке - отправляеться сообщение и удаляю переменные :
unset($_POST['fio']); (таким образом удаляю все переменные.)
До этого все нормально, форма чистая, но если сделать обновление страницы (F5), появляеться сообщение - "Сообщение отправлено успешно" (это мое сообщение) - и оно действительно отправляеться.
Почему? Я ведь удаляю переменные.

   
 
 автор: cheops   (18.05.2007 в 10:15)   письмо автору
 
   для: Worldmen   (18.05.2007 в 10:05)
 

Удаляется только переменная, POST-данные не сбрасываются... следует обязательно программно перегружать страницу после обработки.

   
 
 автор: bronenos   (18.05.2007 в 10:25)   письмо автору
 
   для: cheops   (18.05.2007 в 10:15)
 

не хочется для этого создавать отдельную тему, но какой есть аналог данной функции в жс? я пока делаю только per = null...

   
 
 автор: Worldmen   (18.05.2007 в 11:02)   письмо автору
 
   для: cheops   (18.05.2007 в 10:15)
 

Вопрос - так перегрузить :
<? Header("Location: messag.php"); ?> 

Сделал так - не помогает. Все равно при обновлении страницы отправляет письмо.

   
 
 автор: bronenos   (18.05.2007 в 11:09)   письмо автору
 
   для: Worldmen   (18.05.2007 в 11:02)
 

лучше бы наверное $PHP_SELF
я им не пользуюсь но другие да

   
 
 автор: Trianon   (18.05.2007 в 11:27)   письмо автору
 
   для: Worldmen   (18.05.2007 в 11:02)
 

напишите адрес скрипта полностью, Location: http://domain.adr/path/messag.php
Что нибудь изменилось?

   
 
 автор: Worldmen   (18.05.2007 в 12:15)   письмо автору
 
   для: Trianon   (18.05.2007 в 11:27)
 

И так неполучаеться. Скорей всего проблема в моем коде :

<?
 
if(isset($_POST['b_email'])) // !empty
 

    
$noErr=true// ошибок нет
    
    /*if (empty($_POST['fio']))       // Имя пустое
    { echo " <script language=javascript> alert('Введите Ваше имя') </script>"; $noErr=false;}
    if (empty($_POST['mail_from'])) // емейл пустой
    { echo " <script language=javascript> alert('Вы не ввели контактный e-mail') </script>"; $noErr=false;}
    if (empty($_POST['tema']))      // Тема пустая
    { echo " <script language=javascript> alert('Вы не ввели тему') </script>"; $noErr=false;}
    if (empty($_POST['body']))      // Тело письма
    { echo " <script language=javascript> alert('Вы не ввели свое сообщение') </script>"; $noErr=false;}
    */
    
if($noErr)
    {
        if (!
eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$"$_POST['mail_from']) and $_POST['mail_from']!= ""
        { 
            echo 
" <script language=javascript> alert('Введите корректный E-mail адрес!.') </script>";
        } 
        else 
        { 
            
$body="ФИО - ".$_POST['fio']."<br><br>Сообщение:<br>".$_POST['body']; 
            
sendmail($_POST['mail_from'],'fish65kg@rambler.ru',$_POST['tema'],$body);
            
$_POST['b_email']= null; unset($_POST['b_email']); //удаляем переменную кнопки
            
$_POST['fio']=null;      unset($_POST['fio']);
            unset(
$_POST['mail_from']);
            unset(
$_POST['tema']);
            unset(
$_POST['body']);
            
header("Location:message.php");   
            echo 
" <script language=javascript> alert('Письмо отправлено.') </script>";
        } 
    }    
 }


function 
sendmail($from,$to,$subj,$text

  
$headers  "Reply-To: $from\r\n"
  
$headers .= "From: $from\r\n"
  
$headers .= "Return-Path: $from\r\n"
  
$headers .= "Content-Type: text/html; charset=windows-1251\r\n"
  
$headers .= "Content-Transfer-Encoding: 8bit\r\n"
  
$headers .= "MIME-Version: 1.0\r\n"
  
$subj $subj
  @
mail($to,$subj,$text,$headers); 
}  

   
 
 автор: Саша   (18.05.2007 в 12:19)   письмо автору
 
   для: Worldmen   (18.05.2007 в 12:15)
 

попробуйте после
header("Location:message.php"); написать exit;

http://ua.php.net/manual/ru/function.header.php

   
 
 автор: Trianon   (18.05.2007 в 12:24)   письмо автору
 
   для: Worldmen   (18.05.2007 в 12:15)
 

header("Location:message.php");
echo " <script language=javascript> alert('Письмо отправлено.') </script>";

вот этот момент я не понял.

Во-первых после Location:должен быть пробел и http://адрес
Во-вторых echo " <script language=javascript> alert('Письмо отправлено.') </script>"; должно вызываться уже со страницы перенаправления.

   
 
 автор: Worldmen   (18.05.2007 в 12:51)   письмо автору
 
   для: Trianon   (18.05.2007 в 12:24)
 

Я нашел ошибку . Будете дико смеяться.
Я правил файлы которые не находяться на сервере (локальном), ну а запускал, естественно те которые на сервере.
Так что все работает.
Кстати, после Location пробел не обязательно - проверял.
Огромное спасибо, что далеко меня не послали. :)

   
Rambler's Top100
вверх

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