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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Отправка письма функ. mail() - немогу импортировать переменные [3]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
EuGen Администратор
Отправлено: 06 Ноября, 2007 - 16:39:26
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




А по-моему, приведенный код выдаст ошибку parse_error на первой же строке. То что вряд ли.
Советую Вам избавиться от неправильных "to:" в адресе получателя, html в заголовке письма, и проверок постфактум.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
wmz38
Отправлено: 06 Ноября, 2007 - 23:11:43
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Апр. 2007  


Помог: 0 раз(а)




EuGen пишет:
А по-моему, приведенный код выдаст ошибку parse_error на первой же строке. То что вряд ли.
Советую Вам избавиться от неправильных "to:" в адресе получателя, html в заголовке письма, и проверок постфактум.

Несовсем понял выделенную фразу
 
 Top
evgenijj
Отправлено: 07 Ноября, 2007 - 09:23:59
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Цитата:

Постфактум - (от лат. post factum - после сделанного) - после того, как что-либо уже сделано, совершилось.
 
 Top
wmz38
Отправлено: 07 Ноября, 2007 - 15:47:01
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Апр. 2007  


Помог: 0 раз(а)




Здравствуйте.
evgenijj, не могли бы вы подсказать в какой последовательности нужно переписать скрипт, чтобы выполнялась проверка формы а потом шла отправка.
Если не сложно подскажите пожалуйста в какой последовательности надо это делать, например:
1. проверка
2. отправка
3. итд..
Я на самом деле не прошу вас или кого то еще написать рабочий скрипт ЗА меня, я сам код напишу, главное алгоритм.
 
 Top
evgenijj
Отправлено: 07 Ноября, 2007 - 17:02:02
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Примерно так
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  define( 'ADMIN_EMAIL', 'admin@mail.ru' );
  4.  
  5.  if( isset( $_SESSION['sendMail'] ) )
  6.  {
  7.    if ( $_SESSION['sendMail'] )
  8.      echo 'Ваш заказ успешно отправлен<br/>';
  9.    else
  10.      echo 'Произошла ошибка при отправке заказа<br/>';
  11.    unset( $_SESSION['sendMail'] );
  12.    die();
  13.  }
  14.  
  15.  if ( isset( $_POST['sendOrder'] ) )
  16.  {
  17.    // Обрезаем переменные до длины, указанной в параметре maxlength тега input
  18.    $name    = substr( $_POST["name"], 0, 30 );
  19.    $surname = substr( $_POST["surname"], 0, 30 );
  20.    $email   = substr( $_POST["email"], 0, 30 );
  21.    $phone   = substr( $_POST["phone"], 0, 30 );
  22.    $address = substr( $_POST["address"], 0, 250 );
  23.    // Обрезаем лишние пробелы
  24.    $name    = trim( $name );
  25.    $surname = trim( $surname );
  26.    $email   = trim( $email );
  27.    $phone   = trim( $phone );
  28.    $address = trim( $address );  
  29.    // Проверяем, заполнены ли обязательные поля
  30.    $error = '';
  31.    if ( empty( $name ) ) $error = $error.'<li>не заполнено поле "Имя"</li>';
  32.    if ( empty( $surname ) ) $error = $error.'<li>не заполнено поле "Фамилия"</li>';
  33.    if ( empty( $email ) ) $error = $error.'<li>не заполнено поле "E-mail"</li>';
  34.    // Проверяем поля формы на недопустимые символы
  35.    if ( !empty( $name ) and !eregi( '^[а-я]+$', $name ) )
  36.      $error = $error.'<li>поле "Имя" содержит недопустимые символы</li>';
  37.    if ( !empty( $surname ) and !eregi( '^[-а-я]+$', $surname ) )
  38.      $error = $error.'<li>поле "Фамилия" содержит недопустимые символы</li>';
  39.    if ( !empty( $phone ) and !eregi( '^[-)([:blank:]0-9]+$', $phone ) )
  40.      $error = $error.'<li>поле "Телефон" содержит недопустимые символы</li>';
  41.    if ( !empty( $address ) and !preg_match( '#^[-_\\[\\])(".\\/,:;\\s0-9a-zа-я]+$#i', $address ) )
  42.      $error = $error.'<li>поле "Адрес" содержит недопустимые символы</li>';
  43.    // Проверяем корректность e-mail
  44.    if ( !empty( $email ) and !preg_match( '#^[-0-9a-z_.]+@[-0-9a-z.]+.[a-z]{2,6}$#i', $email ) )
  45.      $error = $error.'<li>поле "Адрес e-mail" должно соответствовать формату somebody@somewhere.ru</li>';
  46.    // Если были допущены ошибки при заполнении формы
  47.    //echo $error;
  48.    //die();
  49.    if ( !empty( $error ) )
  50.    {
  51.      $_SESSION['orderForm'] = array();
  52.      $_SESSION['orderForm']['error'] = '<p class="errorMsg">При заполнениии формы были допущены ошибки:</p>'.
  53.          '<ul class="errorMsg">'.$error.'</ul>';
  54.      $_SESSION['orderForm']['name'] = $name;
  55.      $_SESSION['orderForm']['surname'] = $surname;
  56.      $_SESSION['orderForm']['email'] = $email;
  57.      $_SESSION['orderForm']['phone'] = $phone;
  58.      $_SESSION['orderForm']['address'] = $address;       
  59.      header( 'Location: '.$_SERVER['PHP_SELF'] );
  60.      die();
  61.    }
  62.    // ЗДЕСЬ КОД ДЛЯ ПОЛУЧЕНИЯ ИЗ БД ИНФОРМАЦИИ О ЗАКАЗАННОМ ТОВАРЕ
  63.    // ............................................................
  64.    // Все поля заполнены правильно - отправляем e-mail
  65.    $message = "<h3>Заказ в магазине</h3>";
  66.    $message = $message."<table cellspacing='2' cellpadding='2' width='50%'>";
  67.    $message = $message."<tr bgcolor='#F5F5F5'><td>Имя: </td><td>".$name."</td></tr>";
  68.    $message = $message."<tr bgcolor='#F5F5F5'><td>Фамилия: </td><td>".$surname."</td></tr>";
  69.    $message = $message."<tr bgcolor='#F5F5F5'><td>E-mail: </td><td>".$email."</td></tr>";
  70.    $message = $message."<tr bgcolor='#F5F5F5'><td>Телефон: </td><td>".$phone."</td></tr>";
  71.    $message = $message."<tr bgcolor='#F5F5F5'><td>Адрес: </td><td>".$address."</td></tr>";
  72.    $message = $message."</table>";
  73.    $message = $message."<h3>Вы заказали</h3>";
  74.    // ЗДЕСЬ ПИШЕМ ИНФОРМАЦИЮ О ЗАКАЗАННОМ ТОВАРЕ
  75.    // ............................................................
  76.    // посылаем уведомление покупателю
  77.    $headers = "From: ".$_SERVER['SERVER_NAME']." <".ADMIN_EMAIL.">\\n";
  78.    $headers = $headers."Content-type: text/html; charset=\\"windows-1251\\"\\n";
  79.    $headers = $headers."Return-path: <".ADMIN_EMAIL.">\\n";
  80.    if ( mail( $email, "Заказ в магазине ".$_SERVER['SERVER_NAME'], $message, $headers ) ) {
  81.      $_SESSION['sendMail'] = true;
  82.    } else {
  83.      $_SESSION['sendMail'] = false;
  84.    }
  85.    header( 'Location: '.$_SERVER['PHP_SELF'] );  
  86.  }
  87.  else
  88.  {
  89.    // Если при заполнении формы были допущены ошибки
  90.    if ( isset( $_SESSION['orderForm'] ) )
  91.    {
  92.      echo $_SESSION['orderForm']['error'];
  93.      $name    = htmlspecialchars( $_SESSION['orderForm']['name'] );
  94.      $surname = htmlspecialchars( $_SESSION['orderForm']['surname'] );
  95.      $mail    = htmlspecialchars( $_SESSION['orderForm']['email'] );
  96.      $phone   = htmlspecialchars( $_SESSION['orderForm']['phone'] );
  97.      $address = htmlspecialchars( $_SESSION['orderForm']['address'] );
  98.      unset( $_SESSION['orderForm'] );    
  99.    }
  100.    else
  101.    {
  102.      $name    = '';
  103.      $surname = '';
  104.      $mail    = '';
  105.      $phone   = '';
  106.      $address = '';
  107.    }
  108.    
  109.    echo '<form name="orderForm" action="'.$_SERVER['PHP_SELF'].'" method="POST">';
  110.    echo 'Имя: <input type="text" name="name" value="'.$name.'" maxlength="30" /><br/>';
  111.    echo 'Фамилия: <input type="text" name="surname" value="'.$surname.'"  maxlength="30" /><br/>';
  112.    echo 'E-mail: <input type="text" name="email" value="'.$mail.'" maxlength="30" /><br/>';
  113.    echo 'Телефон: <input type="text" name="phone" value="'.$phone.'" maxlength="30" /><br/>';
  114.    echo 'Адрес доставки:<br/>';
  115.    echo '<textarea name="address">'.$address.'</textarea><br/>';
  116.    echo '<input type="submit" name="sendOrder" value="Отправить" />';
  117.    echo '</form>';
  118.  }
  119. ?>
  120.  
 
 Top
wmz38
Отправлено: 07 Ноября, 2007 - 21:14:19
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Апр. 2007  


Помог: 0 раз(а)




Спасибо, многое прояснилось - в коде все понятно на 100%.\n\n(Добавление)
Вот что пишет, есть соображения?
Цитата:

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at public_html/test2.php:1) in public_html/test2.php on line 3

line 3 - это
 
 Top
evgenijj
Отправлено: 08 Ноября, 2007 - 07:54:08
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




 
 Top
EuGen Администратор
Отправлено: 08 Ноября, 2007 - 09:50:06
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Вы пытаетесь отослать заголовки после того, как начался вывод. Собственно, вывод у Вас начался в строке 3 (test2.php). Убедитесь, что Ваш вывод будет всегда после отсылки заголовков.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
wmz38
Отправлено: 09 Ноября, 2007 - 14:43:50
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Апр. 2007  


Помог: 0 раз(а)




Спасибо я разобрался
 
 Top
Страниц (3): « 1 2 [3]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB