ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

PHP Mail()
  #1  
Старый 28.07.2008, 19:00
Аватар для comeoff
comeoff
Познающий
Регистрация: 10.03.2008
Сообщений: 81
Провел на форуме:
233979

Репутация: 1
Question PHP Mail()

Всем привет.
Кто поможет доделать скриптик с меня плюсики. Вообщем есть скрипт обратной связи с админом. Нужно сделать так, что бы с одного IP можно было отправлять второе сообщение не более чем через час после отправки первого, в противном случае выводить сообщение:
Вы менее чем час назад уже отправляли письмо через эту форму, если у Вас есть какие то дополнения или вы указали неправильный обратный адрес, то свяжитесь с нами по ICQ. Заранее благодарю всех, кто откликнется.

Сам скрипт:

PHP код:
<table border="0" borderColor=#ff9933 cellpadding="0" cellspacing="0"  width="80%" align=center>
  <tr>
    <td align=left valign=middle width=50% height="10"><p align="justify" class="h">
        <?
$stringmess 
"Все поля отмеченные ( * ) являются обязательными.<br> Во избежания разных неприятностей просьба внимательно заполнять все поля формы";
$form_blok "
<center> <p class=\"text\" align=\"center\"> 
$stringmess</p> </center>
<form method=\"post\" action=\"
$PHP_SELF\">
<p>
<strong class=\"text\">* Ваше имя:</strong><br>
<input type=\"text\" name=\"sender_name\" size=\"30\"></p>
<p>
<strong class=\"text\">* E-mail:</strong><br>
<input type=\"text\" name=\"sender_mail\" size=\"30\"></p>
<strong class=\"text\">* Ваш ICQ</strong><br>
<input type=\"text\" name=\"sender_ICQ\" size=\"30\"></p>
<p><strong class=\"text\">* Сообщение:</strong><br>
<textarea name=\"message\" cols=35 rows=5 wrap=virtual></textarea></p>
<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"  width=\"200\" align=left>
<tr><td align=center valign=top  width=100 height=\"5\">
<input class=but4 type=\"reset\" name=\"reset\" value=\"Очистить\"></td>
<td align=center valign=top width=\"100\" height=\"5\">
<input type=\"hidden\" name=\"op\" value=\"ds\">
<input class=but4 type=\"submit\" name=\"submit\" value=\"Послать\"></p>
</td></tr></table>
</form>
</td></tr></table>
"
;
if (
$op != "ds") {
    echo 
"$form_blok";
}
else if (
$op == "ds"){
   if (
$sender_name ==""){
            
$name_err "<font color=\"red\" class=\"text\">Вы не заполнили поле <b>ИМЯ</b>!</font><br>";
            
$send "no";
    }
        if (
$sender_mail =="") {
            
$mail_err ="<font color=\"red\" class=\"text\">Вы не заполнили поле <b>E-mail</b>!</font><br>";

            
$send "no";
    }
            if (
$sender_ICQ =="") {
            
$icq_err ="<font color=\"red\" class=\"text\">Вы не заполнили поле <b>ICQ</b>!</font><br>";
            
$send "no";
    }
 else if(!
preg_match("/^([a-z,0-9])+\@([a-z,0-9])+(\.([a-z,0-9])+)+$/"$sender_mail))
    {
    
$mail_err1 "<font color=\"red\" class=\"text\">Вы не правильно заполнили поле <b>E-mail</b>!</font><br>";
    
$send "no";
        }
if (
$message ==""){
         
$message_err "<font color=\"red\" class=\"text\">Вы не заполнили поле <b>Сообщение</b>!</font><br>";    
        
$send "no";
}
if (
$send != "no"){
$msg"Тема письма\n";
$msg .= "Имя отправителя:\n\t\t$sender_name\n";
$msg .= "E-mail отправителя:\n\t\t$sender_mail\n";
$msg .= "Сообщение: \n$sender_ICQ\n\n\n";
$msg .= "Сообщение: \n$message\n\n\n";
$to "мыльник админа"
$subject "Тема письма";    
$mailheaders .="Reply-To: $mail\n\n";
mail ($to$subject$msg$mailheaders);
    
$stringmess_ok "Уважаемый $sender_name, ваше сообщение было успешно отправленно. Администрация свяжется с Вами для уточнения всех деталей.<br>"
 echo 
"<center><p class=\"text\">$stringmess_ok</p><br>";
   echo 
"<a href=\"mess.php\" class=\"leftmenu\">Hазад</a><br></center>";
}
else if (
$send == "no") {
echo 
"<center>";
    echo 
"$name_err";
    echo 
"$mail_err";
    echo 
"$icq_err";
    echo 
"$message_err";
    echo 
"$mail_err1";
      echo 
"<a href=\"mess.php\" class=\"leftmenu\">Вернитесь назад и 
                        повторите попытку</a><br>"
;
echo 
"</center>";
    }
}
?>
    </td>
  </tr>
</table>
</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
 
Ответить с цитированием

  #2  
Старый 28.07.2008, 19:03
Аватар для Isis
Isis
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме:
16641028

Репутация: 2371


По умолчанию

Записывый
$_SERVER['REMOTE_ADDR']:time()
в файл и проверяй перед отправкой письма
 
Ответить с цитированием

  #3  
Старый 28.07.2008, 20:14
Аватар для DDoSька
DDoSька
Постоянный
Регистрация: 05.05.2008
Сообщений: 403
Провел на форуме:
2375039

Репутация: 1160
Отправить сообщение для DDoSька с помощью ICQ
По умолчанию

Боишься флуда чтоли?Я чего-то не пойму,если я тебя правильно понял,то проще впихнуть капчу.Она есть в разделе "полезные скрипты"
 
Ответить с цитированием

  #4  
Старый 28.07.2008, 20:21
Аватар для bublebuble
bublebuble
Участник форума
Регистрация: 15.09.2007
Сообщений: 141
Провел на форуме:
473570

Репутация: 81
Отправить сообщение для bublebuble с помощью ICQ
По умолчанию

Цитата:
Сообщение от DDoSька  
Боишься флуда чтоли?Я чего-то не пойму,если я тебя правильно понял,то проще впихнуть капчу.Она есть в разделе "полезные скрипты"
полностью согласен, спасёт намного лучше
 
Ответить с цитированием

  #5  
Старый 31.07.2008, 13:08
Аватар для comeoff
comeoff
Познающий
Регистрация: 10.03.2008
Сообщений: 81
Провел на форуме:
233979

Репутация: 1
По умолчанию

Блин, и примитивную защиту от флуда прикрутил, и письма отправляет, только блин инфу не всё что нужно передаёт. Посмотрите пожалуйста, в чём косяк? Не передаёт поля Имя и Мэил.

PHP код:
<?php
        
$mailto 
"my_mail";
$charset "windows-1251";
$subject "Письмо с сайта http://$HTTP_HOST";
$content "text/plain";
$status=" ";

$errors_name 'Введите ваше имя';
$errors_mailfrom 'Введите свой E-mail';
$errors_incorrect 'Заполните правильно Ваш E-mail';
$errors_message 'Наберите сообщение!';
$errors_code 'Неверный код';

if (isset(
$_POST['message']))
{
$fp fopen('code.txt','r');
$realcode fread($fp,4);
fclose($fp);
if (
$_POST['code'] === $realcode)
{
mail("$mailto","$subject","$message","$headers");
$send 'Ваше письмо отправлено!';
$fp fopen('code.txt','w');
for (
$i=1;$i<5;$i++)
fwrite($fp,mt_rand(0,9));
fclose($fp);
}
else
echo 
"Неверный код!";
}

if (isset(
$name) && $name == "")
{
 
$status "$errors_name";
}
elseif (isset(
$mailfrom) && $mailfrom == "")
{
 
$status "$errors_mailfrom";
}
elseif(isset(
$mailfrom) && !preg_match("/^([a-z,._,0-9])+@([a-z,._,0-9])+(.([a-z])+)+$/"$mailfrom))
{
 
$status "$errors_incorrect";

 unset(
$mailfrom);
}
elseif (isset(
$message) && $message == "")
{
 
$status "$errors_message";
}
elseif (!empty(
$_POST))
{
 
$headers  "MIME-Version: 1.0\r\n";
 
$headers .= "Content-Type: $content charset=$charset\r\n";
 
$headers .= "Date: ".date("Y-m-d (H:i:s)",time())."\r\n";
 
$headers .= "From: \"$name\" <$mailfrom>\r\n";
 
$headers .= "X-Mailer: My Send E-mail\r\n";
 unset(
$name$mailfrom$mailto$subject$message);
 
$status "$send";
}

echo 
"
<table width=465 border=\"0\">
  <tr>
    <td height=\"50\" align=\"center\" colspan=\"2\"><font color=\"blue\">
$status</font></td>
  </tr>
  <form method=\"post\">
    <tr>
      <td width=164><font size=\"2\">Ваше имя* </font></td>
      <td width=291><input type=\"text\" name=\"name\"></td>
    </tr>
    <tr>
      <td><font size=\"2\">Ваш e-mail* </font></td>
      <td width=291><input type=\"text\" name=\"mailfrom\"></td>
    </tr>
    <tr>
      <td><p align=\"left\"><font size=\"2\">Сообщение* </font></p>&nbsp;</td>
      <td width=291><textarea name=\"message\" cols=\"33\" rows=\"10\">Текст сообщения.</textarea></td>
    </tr>
    <tr>
      <td><font size=\"2\">Введите цифры с картинки* </font></td>
      <td width=291><input type=\"text\" name=\"code\">
      </td>
    </tr>
    <tr>
      <td align=\"left\"></td>
      <td width=291 colspan=\"2\"><img src=\"code.php\"></td>
    </tr>
    <tr>
      <td align=\"center\" colspan=\"2\"><input type=\"submit\" value=\"Отправить\" style=\"border: 1px solid #000000\"></td>
    </tr>
  </form>
</table>\r\n"
;
?>

Последний раз редактировалось comeoff; 31.07.2008 в 13:11..
 
Ответить с цитированием

  #6  
Старый 31.07.2008, 13:35
Аватар для Naydav
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
По умолчанию

$mailfrom = isset($_POST['mailfrom']) ? $_POST['mailfrom'] : null;
$name = isset($_POST['name']) ? $_POST['name'] : null;
$message = isset($_POST['message']) ? $_POST['message'] : null;

А вообще логика скрипта кривая

На 15 строке провереем существования поля message
PHP код:
if (isset($_POST['message'])) 
На 20 совпдение кода
PHP код:
if ($_POST['code'] === $realcode
Если 2 условия совпало отправляем письмо
PHP код:
mail("$mailto","$subject","$message","$headers"); 
Но сдесь не присвоено значение $message, $headers
Идем дальше
Цитата:
$send = 'Ваше письмо отправлено!';
В 33 строке
PHP код:
if (isset($name) && $name == "")
{
 
$status "$errors_name";

если я не ввел имя, у меня $status переприсваиваеться "$errors_name", и это после отправки письма, ошибка после отправки
mail("$mailto","$subject","$message","$headers");

Нужно перенести mail в конец проверок и и вывести значения из $_POST массива, а еще лучше переписать все это нафих

Последний раз редактировалось Naydav; 31.07.2008 в 13:48..
 
Ответить с цитированием

  #7  
Старый 25.09.2008, 11:57
Аватар для comeoff
comeoff
Познающий
Регистрация: 10.03.2008
Сообщений: 81
Провел на форуме:
233979

Репутация: 1
По умолчанию

Блин, не пойму в чём дело. Юзал скрипт обратной связи:
PHP код:
<?
print"
<FORM method=\"POST\" action=\"zakaz.php?ok=send\">
<P>Ваше Имя:<br>
<INPUT type=\"text\" name=\"Name\" size=30>
</p>
<P>Ваш e-mail:<br>
<INPUT type=\"text\" name=\"Email\" size=30>
</p>
<P>Ваш ICQ:<br>
<INPUT type=\"text\" name=\"ICQ\" size=30>
</p>
<P>Сообщение:<br>
<textarea name=\"Message\" cols=30 rows=5></textarea>
</p>
<input onclick=\"submit\" name=\"image\" type=\"image\" src=\"/image.gif\" style=\"width:100px; height:100px; border:0\" />
</FORM>"
;

switch(
$ok) :
default :


break;
case(
"send") :

if (
$Email == "") {print "<script language=JavaScript>window.alert('Введите e-mail!');</script>"; exit;}
if (
$ICQ == "") {print "<script language=JavaScript>window.alert('Введите ICQ!');</script>"; exit;}
if (
$Message == "") {print "<script language=JavaScript>window.alert('Введите текст!');</script>"; exit;}
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)?)$"$Email) and $Email != "") {print "<script language=JavaScript>window.alert('Не правельный E-mail');</script>"; exit;}
$er 1;

  
$ip $REMOTE_ADDR;
  
$date date("d.m.Y");

  
$info "Name:\t$Name\n";
  
$info .= "E-Mail:\t$Email\n";
  
$info .= "E-Mail:\t$ICQ\n";
  
$info .= "Message:\t$Message\n\n";
  
  
$send_to "мыло доставки";             
  
$subject "Тема и дата $date";          
  
  
$headers "From: Ip адрес: $ip: \n";
  
$headers .= "Reply-To: $email\n\n";
  
  
$send mail($send_to$subject$info$headers);
  if(
$send == 1)
  {
  
  print (
"<script language=JavaScript>window.alert('Отправлено $date');</script>");

  }
  else
  
  print (
"<script language=JavaScript>window.alert('Ошибка');</script>");

break;
endswitch;
?>
Всё работало норм, письма приходили, а щас чёта не работает. В чём косяк?
 
Ответить с цитированием

  #8  
Старый 25.09.2008, 23:20
Аватар для Звeрь
Звeрь
Banned
Регистрация: 25.02.2008
Сообщений: 229
Провел на форуме:
1384476

Репутация: 300
Отправить сообщение для Звeрь с помощью ICQ
По умолчанию

у меня не работает
и не работает Введите цифры с картинки*
Цитата:

<?php

$mailto = "my_mail";
$charset = "windows-1251";
$subject = "Письмо с сайта http://$HTTP_HOST";
$content = "text/plain";
$status=" ";

$errors_name = 'Введите ваше имя';
$errors_mailfrom = 'Введите свой E-mail';
$errors_incorrect = 'Заполните правильно Ваш E-mail';
$errors_message = 'Наберите сообщение!';
$errors_code = 'Неверный код';

if (isset($_POST['message']))
{
$fp = fopen('code.txt','r');
$realcode = fread($fp,4);
fclose($fp);
if ($_POST['code'] === $realcode)
{
mail("$mailto","$subject","$message","$headers");
$send = 'Ваше письмо отправлено!';
$fp = fopen('code.txt','w');
for ($i=1;$i<5;$i++)
fwrite($fp,mt_rand(0,9));
fclose($fp);
}
else
echo "Неверный код!";
}

if (isset($name) && $name == "")
{
$status = "$errors_name";
}
elseif (isset($mailfrom) && $mailfrom == "")
{
$status = "$errors_mailfrom";
}
elseif(isset($mailfrom) && !preg_match("/^([a-z,._,0-9])+@([a-z,._,0-9])+(.([a-z])+)+$/", $mailfrom))
{
$status = "$errors_incorrect";

unset($mailfrom);
}
elseif (isset($message) && $message == "")
{
$status = "$errors_message";
}
elseif (!empty($_POST))
{
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: $content charset=$charset\r\n";
$headers .= "Date: ".date("Y-m-d (H:i:s)",time())."\r\n";
$headers .= "From: \"$name\" <$mailfrom>\r\n";
$headers .= "X-Mailer: My Send E-mail\r\n";
unset($name, $mailfrom, $mailto, $subject, $message);
$status = "$send";
}

echo "
<table width=465 border=\"0\">
<tr>
<td height=\"50\" align=\"center\" colspan=\"2\"><font color=\"blue\">$status</font></td>
</tr>
<form method=\"post\">
<tr>
<td width=164><font size=\"2\">Ваше имя* </font></td>
<td width=291><input type=\"text\" name=\"name\"></td>
</tr>
<tr>
<td><font size=\"2\">Ваш e-mail* </font></td>
<td width=291><input type=\"text\" name=\"mailfrom\"></td>
</tr>
<tr>
<td><p align=\"left\"><font size=\"2\">Сообщение* </font></p>&nbsp;</td>
<td width=291><textarea name=\"message\" cols=\"33\" rows=\"10\">Текст сообщения.</textarea></td>
</tr>
<tr>
<td><font size=\"2\">Введите цифры с картинки* </font></td>
<td width=291><input type=\"text\" name=\"code\">
</td>
</tr>
<tr>
<td align=\"left\"></td>
<td width=291 colspan=\"2\"><img src=\"code.php\"></td>
</tr>
<tr>
<td align=\"center\" colspan=\"2\"><input type=\"submit\" value=\"Отправить\" style=\"border: 1px solid #000000\"></td>
</tr>
</form>
</table>\r\n";
?>

Последний раз редактировалось Звeрь; 25.09.2008 в 23:23..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
Что такое Php? PAPA212 Болталка 13 28.12.2007 20:44
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ