PHP.SU

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

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

> Найдено сообщений: 14
burndalen Отправлено: 07 Мая, 2011 - 06:51:14 • Тема: Огранка код • Форум: Кодировки и все смежное

Ответов: 7
Просмотров: 3054
Zuldek
Ну так и?
burndalen Отправлено: 06 Мая, 2011 - 12:13:15 • Тема: Огранка код • Форум: Кодировки и все смежное

Ответов: 7
Просмотров: 3054
Zuldek
Вы куда то пропали
burndalen Отправлено: 04 Мая, 2011 - 15:04:27 • Тема: Огранка код • Форум: Кодировки и все смежное

Ответов: 7
Просмотров: 3054
Zuldek
Ок я тогда подожду когда у вас будет время, так как сам в этом очень плохо разбираюсь а это нужно сделать себе на раз
burndalen Отправлено: 04 Мая, 2011 - 14:46:41 • Тема: Огранка код • Форум: Кодировки и все смежное

Ответов: 7
Просмотров: 3054
Zuldek
Вы большой молодец вы могли бы уже своими мысли вставить уже в готовый скрипт его код выше? И нужен ли исходик html страницы где форма для этого?
burndalen Отправлено: 04 Мая, 2011 - 14:18:40 • Тема: Огранка код • Форум: Кодировки и все смежное

Ответов: 7
Просмотров: 3054
Добрый день, всем, есть следующий код PHP скрипта формы обратной связи:
CODE (htmlphp):
скопировать код в буфер обмена
  1. [/code]
  2. <?php
  3. header('Content-Type: text/html; charset=Windows-1251');
  4. if(isset($_GET["mail"]))
  5.    echo 'Ваше письмо отправлено...';
  6. $admin = 'email';
  7. if ( isset( $_POST['sendMail'] ) ) {
  8.    $name  = substr( $_POST['name'], 0, 64 );
  9.    $email   = substr( $_POST['email'], 0, 64 );
  10.    $subject = substr( $_POST['subject'], 0, 64 );
  11.    $message = substr( $_POST['message'], 0, 250 );
  12.   }
  13.  
  14.    // обработка ошибок
  15.    $error = '';
  16.    if ( empty( $name ) ) $error = $error.'<li>Не заполнено поле "Имя"</li>';
  17.    if ( empty( $email ) ) $error = $error.'<li>Не заполнено поле "E-mail"</li>';
  18.    if ( empty( $subject ) ) $error = $error.'<li>Не заполнено поле "Тема"</li>';
  19.    if ( empty( $message ) ) $error = $error.'<li>Не заполнено поле "Сообщение"</li>';
  20.    if ( !empty( $email ) and !preg_match( "#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i", $email ) )
  21.        $error = $error.'<li>поле "E-mail" должно соответствовать формату somebody@somewhere.ru</li>';
  22.    if ( !empty( $error ) ) {
  23.        $_SESSION['sendMailForm']['error']   = '<p>При заполнении формы были допущены ошибки:
  24.        </p><ul>'.$error.'</ul>';
  25.        $_SESSION['sendMailForm']['name']    = $name;
  26.        $_SESSION['sendMailForm']['email']   = $email;
  27.        $_SESSION['sendMailForm']['subject'] = $subject;
  28.        $_SESSION['sendMailForm']['message'] = $message;
  29.        header( 'Location: '.$_SERVER['PHP_SELF'] );
  30.        // перенаправление в корневую страницу если есть ошибки
  31.        die();
  32.    }
  33.  
  34.    $body = "АВТОР:".$name." E-MAIL".$email." ТЕМА:".$subject." СООБЩЕНИЕ:".$message;
  35.    if ( mail($admin, "Заполнена форма на сайте", $body) ){
  36.        $_SESSION['success'] = true;
  37.      echo "Сообщение успешно отправлено";
  38.    }
  39.    else
  40.   {
  41.        $_SESSION['success'] = false;
  42.    header( 'Location: '.$_SERVER['PHP_SELF'] );
  43.    die();
  44.    }
  45. ?>
  46. [code=htmlphp]


Достаточно добротный и рабочий код, но есть две хорошоватости:

1) письма с заполненной формы приходят в непонятной кодировке;
2) после нажатия кнопки отправить пользователь получает белый экран с собщением что оно успешно ушло, хотелось бы конечно чтобы это напись возникала всплывающе, на той же странице не давая белый экран.

У кого какие мысли, да под мыслями конечно автор темы понимает конкретные строчки кода Улыбка
burndalen Отправлено: 03 Мая, 2011 - 10:35:16 • Тема: Подправить PHP код • Форум: Кодировки и все смежное

Ответов: 15
Просмотров: 8629
Не много подправив синтаксические ошибки код сейчас выглядит вот так:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. if(isset($_GET["mail"]))
  4.     echo 'Ваше письмо отправлено...';
  5. session_start();
  6. $admin = 'admin email';
  7. if ( isset( $_POST['sendMail'] ) ) {
  8.     $name  = substr( $_POST['name'], 0, 64 );
  9.     $email   = substr( $_POST['email'], 0, 64 );
  10.     $subject = substr( $_POST['subject'], 0, 64 );
  11.     $message = substr( $_POST['message'], 0, 250 );
  12.         }
  13.  
  14.     // обработка ошибок
  15.     $error = '';
  16.     if ( empty( $name ) ) $error = $error.'<li>Не заполнено поле "Имя"</li>';
  17.     if ( empty( $email ) ) $error = $error.'<li>Не заполнено поле "E-mail"</li>';
  18.     if ( empty( $subject ) ) $error = $error.'<li>Не заполнено поле "Тема"</li>';
  19.     if ( empty( $message ) ) $error = $error.'<li>Не заполнено поле "Сообщение"</li>';
  20.     if ( !empty( $email ) and !preg_match( "#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i", $email ) )
  21.         $error = $error.'<li>поле "E-mail" должно соответствовать формату somebody@somewhere.ru</li>';
  22.     if ( !empty( $error ) ) {
  23.         $_SESSION['sendMailForm']['error']   = '<p>При заполнении формы были допущены ошибки:
  24.         </p><ul>'.$error.'</ul>';
  25.         $_SESSION['sendMailForm']['name']    = $name;
  26.         $_SESSION['sendMailForm']['email']   = $email;
  27.         $_SESSION['sendMailForm']['subject'] = $subject;
  28.         $_SESSION['sendMailForm']['message'] = $message;
  29.         header( 'Location: '.$_SERVER['PHP_SELF'] );
  30.         // перенаправление в корневую страницу если есть ошибки
  31.         die();
  32.     }
  33.  
  34.     $body = "АВТОР:".$name." E-MAIL".$email." ТЕМА:".$subject." СООБЩЕНИЕ:".$message;
  35.     if ( mail($admin, "Заполнена форма на сайте", $body) ){
  36.         $_SESSION['success'] = true;
  37.         header( 'Location: '.$_SERVER['PHP_SELF'].'?mail=1');
  38.     }
  39.     else
  40.         {
  41.         $_SESSION['success'] = false;
  42.     header( 'Location: '.$_SERVER['PHP_SELF'] );
  43.     die();
  44.     }
  45. ?>
  46.  


Соответственно проблемы сохранились те же, а именно:

1) проблема с кодировкой в приходящих с заполненной формы писем;
2) пользователь получает белый экран вместо сообщения ваше письмо успешно отправлено.

нужен help ;)
burndalen Отправлено: 02 Мая, 2011 - 17:12:52 • Тема: Подправить PHP код • Форум: Кодировки и все смежное

Ответов: 15
Просмотров: 8629
CODE (htmlphp):
скопировать код в буфер обмена
  1. [/code]
  2. <?php
  3. if(isset($_GET["mail"]))
  4.    echo 'Ваше письмо отправлено...';
  5. $admin = 'email';
  6. if ( isset( $_POST['sendMail'] ) ) {
  7.    $name  = substr( $_POST['name'], 0, 64 );
  8.    $email   = substr( $_POST['email'], 0, 64 );
  9.    $subject = substr( $_POST['subject'], 0, 64 );
  10.    $message = substr( $_POST['message'], 0, 250 );
  11.         }
  12.  
  13.    // обработка ошибок
  14.    $error = '';
  15.    if ( empty( $name ) ) $error = $error.'<li>Не заполнено поле "Имя"</li>';
  16.    if ( empty( $email ) ) $error = $error.'<li>Не заполнено поле "E-mail"</li>';
  17.    if ( empty( $subject ) ) $error = $error.'<li>Не заполнено поле "Тема"</li>';
  18.    if ( empty( $message ) ) $error = $error.'<li>Не заполнено поле "Сообщение"</li>';
  19.    if ( !empty( $email ) and !preg_match( "#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i", $email ) )
  20.        $error = $error.'<li>поле "E-mail" должно соответствовать формату somebody@somewhere.ru</li>';
  21.    if ( !empty( $error ) ) {
  22.        $_SESSION['sendMailForm']['error']   = '<p>При заполнении формы были допущены ошибки:
  23.        </p><ul>'.$error.'</ul>';
  24.        $_SESSION['sendMailForm']['name']    = $name;
  25.        $_SESSION['sendMailForm']['email']   = $email;
  26.        $_SESSION['sendMailForm']['subject'] = $subject;
  27.        $_SESSION['sendMailForm']['message'] = $message;
  28.        header( 'Location: '.$_SERVER['PHP_SELF'] );
  29.        // перенаправление в корневую страницу если есть ошибки
  30.        die();
  31.    }
  32.  
  33.    $body = "АВТОР:".$name." E-MAIL".$email." ТЕМА:".$subject." СООБЩЕНИЕ:".$message;
  34.    if ( mail($admin, "Заполнена форма на сайте", $body) ){
  35.        $_SESSION['success'] = true;
  36.        header( 'Location: '.$_SERVER['PHP_SELF'].'?mail=1');
  37.    }
  38.    else
  39.         {
  40.        $_SESSION['success'] = false;
  41.    header( 'Location: '.$_SERVER['PHP_SELF'] );
  42.    die();
  43.    }
  44. ?>
  45. [code=htmlphp]


Верно?
burndalen Отправлено: 02 Мая, 2011 - 10:46:38 • Тема: Подправить PHP код • Форум: Кодировки и все смежное

Ответов: 15
Просмотров: 8629
Как видите сейчас уже этих строчек нет, это достаточно конкретно?! Улыбка
burndalen Отправлено: 02 Мая, 2011 - 07:30:59 • Тема: Подправить PHP код • Форум: Кодировки и все смежное

Ответов: 15
Просмотров: 8629
вот сейчас код выглядит весь вот так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. [/code]
  2. <?php
  3. if(isset($_GET["mail"]))
  4.    echo 'Ваше письмо отправлено...';
  5. $admin = 'email';
  6. if ( isset( $_POST['sendMail'] ) ) {
  7.    $name  = substr( $_POST['name'], 0, 64 );
  8.    $email   = substr( $_POST['email'], 0, 64 );
  9.    $subject = substr( $_POST['subject'], 0, 64 );
  10.    $message = substr( $_POST['message'], 0, 250 );
  11.  
  12.    // обработка ошибок
  13.    $error = '';
  14.    if ( empty( $name ) ) $error = $error.'<li>Не заполнено поле "Имя"</li>';
  15.    if ( empty( $email ) ) $error = $error.'<li>Не заполнено поле "E-mail"</li>';
  16.    if ( empty( $subject ) ) $error = $error.'<li>Не заполнено поле "Тема"</li>';
  17.    if ( empty( $message ) ) $error = $error.'<li>Не заполнено поле "Сообщение"</li>';
  18.    if ( !empty( $email ) and !preg_match( "#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i", $email ) )
  19.        $error = $error.'<li>поле "E-mail" должно соответствовать формату somebody@somewhere.ru</li>';
  20.    if ( !empty( $error ) ) {
  21.        $_SESSION['sendMailForm']['error']   = '<p>При заполнении формы были допущены ошибки:
  22.        </p><ul>'.$error.'</ul>';
  23.        $_SESSION['sendMailForm']['name']    = $name;
  24.        $_SESSION['sendMailForm']['email']   = $email;
  25.        $_SESSION['sendMailForm']['subject'] = $subject;
  26.        $_SESSION['sendMailForm']['message'] = $message;
  27.        header( 'Location: '.$_SERVER['PHP_SELF'] );
  28.        // перенаправление в корневую страницу если есть ошибки
  29.        die();
  30.    }
  31.  
  32.    $body = "АВТОР:".$name." E-MAIL".$email." ТЕМА:".$subject." СООБЩЕНИЕ:".$message;
  33.    if ( mail($admin, "Заполнена форма на сайте", $body) ){
  34.        $_SESSION['success'] = true;
  35.        header( 'Location: '.$_SERVER['PHP_SELF'].'?mail=1');
  36.    }
  37.    else
  38.        $_SESSION['success'] = false;
  39.    header( 'Location: '.$_SERVER['PHP_SELF'] );
  40.    die();
  41. }
  42. ?>
  43. [code=htmlphp]
burndalen Отправлено: 01 Мая, 2011 - 22:00:04 • Тема: Подправить PHP код • Форум: Кодировки и все смежное

Ответов: 15
Просмотров: 8629
Я вас понял что вообще хорошо разбираться и все такое, вот жаль что только в этом случае вряд ли я бы вас тревожил
burndalen Отправлено: 01 Мая, 2011 - 16:08:53 • Тема: Подправить PHP код • Форум: Кодировки и все смежное

Ответов: 15
Просмотров: 8629
[quote=molchun201][/quote]
А поконкретней? Я код то весь выложил скажите что и где убрать или добавить в какой строке?
burndalen Отправлено: 01 Мая, 2011 - 16:00:11 • Тема: Подправить PHP код • Форум: Кодировки и все смежное

Ответов: 15
Просмотров: 8629
сейчас код выгляд вот так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. [/code]
  2. <?php
  3.  header( "Content-Type: text/html; charset=UTF-8");
  4.  $admin = 'email';
  5.  if ( isset( $_POST['sendMail'] ) ) {
  6.  $name  = substr( $_POST['name'], 0, 64 );
  7.  $email   = substr( $_POST['email'], 0, 64 );
  8.  $subject = substr( $_POST['subject'], 0, 64 );
  9.  $message = substr( $_POST['message'], 0, 250 );
  10.  
  11. // обработка ошибок
  12.  $error = '';
  13.  if ( empty( $name ) ) $error = $error.'<li>Не заполнено поле "Имя"</li>';
  14.  if ( empty( $email ) ) $error = $error.'<li>Не заполнено поле "E-mail"</li>';
  15.  if ( empty( $subject ) ) $error = $error.'<li>Не заполнено поле "Тема"</li>';
  16.  if ( empty( $message ) ) $error = $error.'<li>Не заполнено поле "Сообщение"</li>';
  17.  if ( !empty( $email ) and !preg_match( "#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i", $email ) )
  18.  $error = $error.'<li>поле "E-mail" должно соответствовать формату somebody@somewhere.ru</li>';
  19.  if ( !empty( $error ) ) {
  20.  $_SESSION['sendMailForm']['error']   = '<p>При заполнении формы были допущены ошибки:
  21. </p><ul>'.$error.'</ul>';
  22.  $_SESSION['sendMailForm']['name']    = $name;
  23.  $_SESSION['sendMailForm']['email']   = $email;
  24.  $_SESSION['sendMailForm']['subject'] = $subject;
  25.  $_SESSION['sendMailForm']['message'] = $message;
  26.  header( 'Location: '.$_SERVER['PHP_SELF'] );
  27. // перенаправление в корневую страницу если есть ошибки
  28.  die();
  29.  }
  30.  
  31.  // формирование письма
  32.  $body = "АВТОР:\r\n".$name."\r\n\r\n";
  33.  $body .= "E-MAIL:\r\n".$email."\r\n\r\n";  
  34.  $body .= "ТЕМА:\r\n".$subject."\r\n\r\n";
  35.  $body .= "СООБЩЕНИЕ:\r\n".$message;
  36.  $body = quoted_printable_encode( $body );
  37.  $theme   = '=?UTF-8?B?'.base64_encode('Заполнена форма на сайте').'?=';
  38.  $headers = "From: ".$_SERVER['SERVER_NAME']." <".$email.">\r\n";
  39.  $headers = $headers."Return-path: <".$email.">\r\n";
  40.  $headers = $headers."Content-Type: content=text/html; charset=windows-1251";
  41.  $headers = $headers."Content-Transfer-Encoding: quoted-printable\r\n\r\n";
  42.  
  43.  if ( mail($admin, $theme, $body, $headers) ){
  44.  $_SESSION['success'] = true;
  45.  echo "ok";
  46.  }
  47.  else
  48.  $_SESSION['success'] = false;
  49.  header( 'Location: '.$_SERVER['PHP_SELF'] );
  50.  die();
  51.  }
  52.  function quoted_printable_encode ( $string ) {
  53.  // rule #2, #3 (leaves space and tab characters in tact)
  54.  $string = preg_replace_callback (
  55.  '/[^\x21-\x3C\x3E-\x7E\x09\x20]/',
  56.  'quoted_printable_encode_character',
  57.  $string
  58.  );
  59.  $newline = "=\r\n"; // '=' + CRLF (rule #4)
  60.  // make sure the splitting of lines does not interfere with escaped characters
  61.  // (chunk_split fails here)
  62.  $string = preg_replace ( '/(.{73}[^=]{0,3})/', '$1'.$newline, $string);
  63.  return $string;
  64.  }
  65.  
  66.  function quoted_printable_encode_character ( $matches ) {
  67.  $character = $matches[0];
  68.  return sprintf ( '=%02x', ord ( $character ) );
  69.  }
  70.  ?>
  71. [code=htmlphp]


Письмо с сервера уходит но пользователь получает на белом фоне вот такой экран:
"ok
Warning: Cannot modify header information - headers already sent by (output started at /var/www/u1635271/data/www/bbapple.ru/send.php:45) in /var/www/u1635271/data/www/bbapp le.ru/send.php on line 49"

что сдесь можно исправить?
burndalen Отправлено: 01 Мая, 2011 - 13:53:39 • Тема: Подправить PHP код • Форум: Кодировки и все смежное

Ответов: 15
Просмотров: 8629
Ну что ж там обычный хостинг с поддержкой PHP
burndalen Отправлено: 01 Мая, 2011 - 08:30:43 • Тема: Подправить PHP код • Форум: Кодировки и все смежное

Ответов: 15
Просмотров: 8629
Добрый день, есть следующий скрипт:

<?php
session_start();
header( "Content-Type: text/html; charset=UTF-8");
$admin = 'email';
if ( isset( $_POST['sendMail'] ) ) {
$name = substr( $_POST['name'], 0, 64 );
$email = substr( $_POST['email'], 0, 64 );
$subject = substr( $_POST['subject'], 0, 64 );
$message = substr( $_POST['message'], 0, 250 );

// обработка ошибок
$error = '';
if ( empty( $name ) ) $error = $error.'<li>Не заполнено поле "Имя"</li>';
if ( empty( $email ) ) $error = $error.'<li>Не заполнено поле "E-mail"</li>';
if ( empty( $subject ) ) $error = $error.'<li>Не заполнено поле "Тема"</li>';
if ( empty( $message ) ) $error = $error.'<li>Не заполнено поле "Сообщение"</li>';
if ( !empty( $email ) and !preg_match( "#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i", $email ) )
$error = $error.'<li>поле "E-mail" должно соответствовать формату somebody@somewhere.ru</li>';
if ( !empty( $error ) ) {
$_SESSION['sendMailForm']['error'] = '<p>При заполнении формы были допущены ошибки:
</p><ul>'.$error.'</ul>';
$_SESSION['sendMailForm']['name'] = $name;
$_SESSION['sendMailForm']['email'] = $email;
$_SESSION['sendMailForm']['subject'] = $subject;
$_SESSION['sendMailForm']['message'] = $message;
header( 'Location: '.$_SERVER['PHP_SELF'] );
// перенаправление в корневую страницу если есть ошибки
die();
}

// формирование письма
$body = "АВТОР:\r\n".$name."\r\n\r\n";
$body .= "E-MAIL:\r\n".$email."\r\n\r\n";
$body .= "ТЕМА:\r\n".$subject."\r\n\r\n";
$body .= "СООБЩЕНИЕ:\r\n".$message;
$body = quoted_printable_encode( $body );
$theme = '=?UTF-8?B?'.base64_encode('Заполнена форма на сайте').'?=';
$headers = "From: ".$_SERVER['SERVER_NAME']." <".$email.">\r\n";
$headers = $headers."Return-path: <".$email.">\r\n";
$headers = $headers."Content-type: text/plain; charset=\"UTF-8\"\r\n";
$headers = $headers."Content-Transfer-Encoding: quoted-printable\r\n\r\n";

if ( mail($admin, $theme, $body, $headers) )
$_SESSION['success'] = true;
else
$_SESSION['success'] = false;
header( 'Location: '.$_SERVER['PHP_SELF'] );
die();
}
function quoted_printable_encode ( $string ) {
// rule #2, #3 (leaves space and tab characters in tact)
$string = preg_replace_callback (
'/[^\x21-\x3C\x3E-\x7E\x09\x20]/',
'quoted_printable_encode_character',
$string
);
$newline = "=\r\n"; // '=' + CRLF (rule #4)
// make sure the splitting of lines does not interfere with escaped characters
// (chunk_split fails here)
$string = preg_replace ( '/(.{73}[^=]{0,3})/', '$1'.$newline, $string);
return $string;
}

function quoted_printable_encode_characte r ( $matches ) {
$character = $matches[0];
return sprintf ( '=%02x', ord ( $character ) );
}
?>

Все в нем хорошо только:
а) вот сообщения от него приходят в виде:

�����:
Имя

E-MAIL:
example@domain.com

����:
?????? ? ?????

���������:
Тестовое сообщение

и
6) пользователь принажатии кнопки отправить получает белый экран (хотелось бы чтобы он оставался на странице и получал что то типа всплывающего "ваше сообщение отправлено"

Кто может помочь конкретными сторчками кода в конкретные места этого скрипта?

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB