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

Форум PHP

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

 

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

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

тема: Post в php4 и php5
 
 автор: Русдюк   (03.03.2009 в 00:41)   письмо автору
 
 

Здравствуйте.
У меня такая проблема с различиями php4 и php5. Одна форма у меня дублируется на двух сайтах.
На php4 все работает. Подскажите, пожалуйста, что нужно изменить, чтоб работало и на php5.
Не пинайте ногами, я не программист, сам код писал не я, просто нужно срочно доделать, вот и вливаюсь.
Вот сам код:

<?php
$mail = $_POST["quest"];
if (isset ($name))
{
$name = substr($name,0,20); //Не может быть более 20 символов
if (empty($name))
{
echo "<center><b>Не указано имя !!!<p>";
echo "<a href=faq.htm>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$name = "не указано";
}

$i = "не указано";
if ($name == $i AND $email == $i AND $mess == $i)
{
echo "Ошибка ! Скрипту не были переданы параметры !";
exit;
}

$to = "***@mail.ru";
$subject = "Вопрос с сайта";
$message = "Имя: $name . Телефон: $phone . Электронный адрес: $gopa . Вопрос: $quest . IP-адрес: $REMOTE_ADDR";
mail ($to,$subject,$message) or print "Не могу отправить письмо !!!";
echo "<center><b>Спасибо.</a>";


echo "<a href=index.htm>На главную</a>";
exit;
?>


Соответственно, еще есть страничка с формой.
На е-мейл приходит письмо, но оно не содержит того, что вписано в форму.
Заранее спасибо!

  Ответить  
 
 автор: Zend72   (04.03.2009 в 05:50)   письмо автору
 
   для: Русдюк   (03.03.2009 в 00:41)
 


<?php 
$name 
$_POST["name"];
$phone $_POST["phone"];
$gopa  $_POST["gopa"];
$quest  $_POST["quest"];
$ip $_SERVER["REMOTE_ADDR"];
if (isset (
$name)) 

$name substr($name,0,20); //Не может быть более 20 символов 
if (empty($name)) 

echo 
"<center><b>Не указано имя !!!<p>"
echo 
"<a href=faq.htm>Вернуться и правильно заполнить форму.</a>"
exit; 


else 

$name "не указано"


$i "не указано"
if (
$name == $i AND $email == $i AND $mess == $i

echo 
"Ошибка ! Скрипту не были переданы параметры !"
exit; 


$to "***@mail.ru"
$subject "Вопрос с сайта"
$message "Имя: $name . Телефон: $phone . Электронный адрес: $gopa . Вопрос: $quest . IP-адрес: $ip"
mail($to,$subject,$message) or print "Не могу отправить письмо !!!"
echo 
"<center><b>Спасибо.</a>"


echo 
"<a href=index.htm>На главную</a>"
exit(); 
?>

  Ответить  
 
 автор: sim5   (04.03.2009 в 05:55)   письмо автору
 
   для: Zend72   (04.03.2009 в 05:50)
 

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

  Ответить  
 
 автор: Zend72   (04.03.2009 в 06:25)   письмо автору
 
   для: sim5   (04.03.2009 в 05:55)
 

Так?

<?php 
$name 
$_POST["name"];
$phone $_POST["phone"];
$gopa  $_POST["gopa"];
$quest  $_POST["quest"];
$ip $_SERVER["REMOTE_ADDR"];
if (isset (
$name)) 

$name substr($name,0,20); //Не может быть более 20 символов 
if (empty($name)) 

echo 
"<center><b>Не указано имя !!!<p>"
echo 
"<a href=faq.htm>Вернуться и правильно заполнить форму.</a>"
exit; 


else 

$name "не указано"


$i "не указано"
if (
$name == $i AND $email == $i AND $mess == $i

echo 
"Ошибка ! Скрипту не были переданы параметры !"
exit; 


$to "***@mail.ru"
$subject "Вопрос с сайта"
$message "Имя: $name . Телефон: $phone . Электронный адрес: $gopa . Вопрос: $quest . IP-адрес: $ip"

mail($to"=?koi8-r?B?".base64_encode($subject)."/r/n"$message"Content-Type: text/html; charset=koi8-r\r\n") or print "Не могу отправить письмо !!!"
echo 
"<center><b>Спасибо.</a>"


echo 
"<a href=index.htm>На главную</a>"
exit(); 
?>

  Ответить  
 
 автор: sim5   (04.03.2009 в 06:30)   письмо автору
 
   для: Zend72   (04.03.2009 в 06:25)
 

Ну так намного лучше. :) Только нагляднее да и удобнее, определять заголовки вне аргументов функции, передавая их потом ей. К тому же \r\n, это под Win платформу, а значит лучше и это сперва определить, а уж затем...

PS. "=?koi8-r?B?" . base64_encode($subject) . "?="
и
"/r/n" ??

  Ответить  
 
 автор: Zend72   (04.03.2009 в 07:43)   письмо автору
 
   для: sim5   (04.03.2009 в 06:30)
 

Так вот оно что ;-)

Общий вид кодированного текста:
=?<code_page>?<encode_method>?<encode_text>?=
Где:
<code_page>::=KOI8-R | Windows-1251
- "коя" или "винды"

<encode_method>::=B | Q
- Base64 или QuotedPrint

<encode_text>
- кодированный текст


Ээм... А если так?

<?php  
  $name 
$_POST["name"]; 
  
$phone $_POST["phone"]; 
  
$gopa  $_POST["gopa"]; 
  
$quest  $_POST["quest"]; 
  
$ip $_SERVER["REMOTE_ADDR"]; 
  if (isset (
$name))  
  {  
    
$name substr($name,0,20); //Не может быть более 20 символов  
    
if (empty($name))  
    {  
      echo 
"<center><b>Не указано имя !!!<p>";  
      echo 
"<a href=faq.htm>Вернуться и правильно заполнить форму.</a>";  
      exit;  
    }  
  }  
  else  
  {  
  
$name "не указано";  
  }  

  
$i "не указано";  
  if (
$name == $i AND $email == $i AND $mess == $i)  
  {  
    echo 
"Ошибка ! Скрипту не были переданы параметры !";   
    exit;  
  }  

  
$to "***@mail.ru";  
  
$subject "Вопрос с сайта";
  
$subject =  "=?koi8-r?B?".base64_encode($subject)."?=\n";

  
// Формируем заголовки
  
$headers  "Reply-To: $to\r\n"
  
$headers .= "From: $to\r\n"
  
$headers .= "Return-Path: $to\r\n"
  
$headers .= "Content-Type: text/html; charset=koi8-r\r\n"
  
$headers .= "Content-Transfer-Encoding: 8bit\r\n"
  
$headers .= "MIME-Version: 1.0\r\n";

  
// Выясним что там с ОС
  
if (strtoupper(substr(PHP_OS03)) == 'MAC')
  
$headers str_replace("\r\n""\r"$headers);
  else if (
strtoupper(substr(PHP_OS03)) != 'WIN')
  
$headers str_replace("\r\n""\n"$headers);

  
// бла бла бла 
  
$message "Имя: $name . Телефон: $phone . Электронный адрес: $gopa . Вопрос: $quest . IP-адрес: $ip";  

  
// Отправляем...
  
mail($to$subject$message$headers) or print "Не могу отправить письмо !!!";  

  echo 
"<center><b>Спасибо.</a>";  
  echo 
"<a href=index.htm>На главную</a>";  
  exit();  
?>

  Ответить  
 
 автор: sim5   (04.03.2009 в 08:55)   письмо автору
 
   для: Zend72   (04.03.2009 в 07:43)
 

Странно только, что сперва код перевода строки прописали явно, а после этого идет его определение, что требует str_replace в последствии. Не лучше ли это делать до заголовков, и затем добавлять в них определенное?

PS. Да и сервер, это либо WIN либо UNIX, ну может в каких-то случаях MAC, в общем проще так:
$CR = substr(PHP_OS, 0, 3) = "WIN" ? "\r\n" : "\n";

  Ответить  
Rambler's Top100
вверх

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