galym74
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Cheery Извини что задавал вопросы не по тему. Просто у меня в опере все темы, касающися отправки сообщении на почту, были открыты и когда отправлял сообщения не заметил тему. На сайте был установлен почтовый скрипт PHPSendMail v2.1.2. После смены хостинга скрипт перестал работать. Оказывается на новом хостинге не разрешено функция imap_binary который использует этот скрипт. Я в этом деле новичок. Не знаю особенности пхп. Но мне нужно поскарее запустит эту форму. Выкладываю файлы и ссылку на форму. index.php Код: <?php # В данном файле ничего менять не нужно, однако если у вас есть трудности с возвратом на указанную # в настройках страницу, то отредактируйте строку 100 как указано в коментарии. error_reporting(0); require("./config.inc"); require("./header.inc"); # Функции function formtohtml ($str) { if (get_magic_quotes_gpc()) { $str = stripslashes($str); } $str = trim($str); $str = htmlspecialchars ($str, ENT_QUOTES); $str = str_replace("|", "/", $str); $str = str_replace("\r", "", $str); $str = str_replace("\n", "<br>", $str); $str = eregi_replace("(<br>*){2,}","<br><br>",$str); $str = eregi_replace("[ ]{2,}", " ", $str); return $str; } function htmltoform ($str) { $str = str_replace("&", "&", $str); $str = str_replace(""", "\"", $str); $str = str_replace("'", "'", $str); $str = str_replace("<", "<", $str); $str = str_replace(">", ">", $str); $str = str_replace("<br>", "\r\n", $str); return $str; } # Отправка if (!empty($_GET['a']) and $_GET['a'] == "m") { $var['fields'] = array("name"=>"имя", "email"=>"e-mail", "subject"=>"заголовок", "message"=>"текст сообщения"); $notice['error'] = array(); foreach ($var['fields'] as $key => $value) { if (empty($_POST[$key]) || (($_POST[$key] = formtohtml($_POST[$key])) == "0")) $notice['error'][] = $value; } if (empty($notice['error'])) { if (preg_match("/^([a-z,0-9,_,\-,\.])+\@([a-z,0-9,_,\-])+(\.([a-z,0-9])+)+$/",$_POST['email'])) { $t['c'] = file($config['recip_f']); $t['n'] = sizeof($t['c']); for ($i=0;$i<$t['n'];$i++) { $t['c'][$i] = explode("|",trim($t['c'][$i])); } if (!empty($_POST['recip']) and !empty($t['c'][$_POST['recip']-1])) { $var['recip_n'] = $t['c'][$_POST['recip']-1][1]; $var['recip_e'] = $t['c'][$_POST['recip']-1][0]; if (function_exists("imap_binary")) { function mail_convert($str) { $str = trim(imap_binary(addcslashes($str, "\"!@\\!@(!@)"))); return $str; } $var['subj'] = "=?Windows-1251?B?".trim(imap_binary(htmltoform($_POST['subject'])))."?="; $var['header'] = "From: =?Windows-1251?B?".mail_convert(htmltoform($_POST['name']))."?= <".$_POST['email'].">\r\n"; $var['header'] .= "MIME-Version: 1.0\r\n"; $var['header'] .= "Content-Transfer-Encoding: 8bit\r\n"; $var['header'] .= "Content-Type: text/plain; charset=\"Windows-1251\"\r\n"; $var['header'] .= "X-Mailer: PHP v.".phpversion(); $var['message'] = htmltoform($_POST['message']); if (!empty($config['features'])) $var['message'] .= "\r\n\r\n---------------------------------------\r\nIP адрес отправителя: ".$_SERVER['REMOTE_ADDR']; # Пытаемся послать сообщение if (mail("=?Windows-1251?B?".mail_convert(htmltoform($var['recip_n']))."?= <".$var['recip_e'].">",$var['subj'],$var['message'],$var['header'])) { $notice['ok'] = "Сообщение успешно отправлено"; } else { $notice['error'] = "Системная ошибка - сбой функции "mail""; } } else { $notice['error'] = "Ошибка программы - недоступна функция "imap_binary""; } } else { $notice['error'] = "Ошибка настоек программы - неверный получатель"; } } else { $notice['error'] = "Пожалуйста, проверьте правильность e-mail"; } } else { $notice['error'] = "Пожалуйста, введите ".implode(", ",$notice['error']); } } echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\">\r\n"; if (empty($notice['ok'])) { echo "<form name=\"SM\" method=\"POST\" action=\"".$_SERVER['PHP_SELF']."?a=m\">\r\n"; } else { // ПРИ ВОЗНИКНОВЕНИИ ОШИБКИ "METHOD POST NOT ALLOWED" ИЗМЕНИТЬ "POST" на "GET" echo "<form name=\"GT\" method=\"POST\" action=\"".$config['url_path']."\">\r\n"; } # Сообщение о завершении / ошибке if (!empty($notice)) { echo "<tr><td align=\"center\">"; if (!empty($notice['ok'])) { echo "<p><b><font color=\"#008000\">".$notice['ok']."!</font></b></p>"; } elseif (!empty($notice['error'])) { echo "<p><b><font color=\"#800000\">".$notice['error']."!</font></b></p>"; } echo "</td></tr>\r\n"; } # Вывод формы if (empty($notice['ok'])) { echo "<tr><td align=\"center\">"; require("./form.inc"); echo "</td></tr>\r\n"; } echo "<tr><td align=\"center\"><table border=\"0\" cellpadding=\"5\" cellspacing=\"0\"><tr><td>"; # Кнопки if (empty($notice['ok'])) { echo "<input type=\"submit\" value=\"Отправить\"></td>\r\n"; echo "<td><input type=\"reset\" value=\"Сбросить\">\r\n"; } else { echo "<input type=\"submit\" value=\"".$config['url_name']."\">\r\n"; } echo "</td></tr></table></td></tr>\r\n"; if (!empty($config['copyshow'])) { echo "<tr><td align=\"center\"><font style=\"font-size: 10px;\"><a style=\"text-decoration: none\" href=\"http://www.jpcars.com/scripts/phpsendmail.zip\">PHPSendMail</a> v.2.1.2 © 2000-".date("Y")." <a style=\"text-decoration: none\" href=\"http://www.jpcars.com\" target=\"_blank\">JPCars.com</a></font></td></tr>\r\n"; } echo "</form></table>\r\n"; # Футер require("./footer.inc"); ?> | config.inc Код: <?php # Пожалуйста, прочитайте файл readme.txt перед тем как что-либо здесь редактировать! # URL и название ссылки, кнопка на которую будет появляться вместе с сообщением об успешной # отправке. Допускается использование любых ссылок, например, "/", "./folder/", "/folder/index.htm". $config['url_name'] = "Вернуться на главную"; $config['url_path'] = "/"; # Путь к файлу, содержащий список получателей, а также номер получателя по умолчанию. $config['recip_f'] = "./recip.txt"; $config['recip_n'] = 1; # По умолчанию в письме приходят данные об IP адресе с которого пришло сообщение. # Если это лишнее, то смените значение на "0". $config['features'] = 1; # Пути к заголовкам. Обычно подходят те, что прилагаются к скрипту - при желании вы можете # вручную отредактировать header.inc, изменив там название страницы посредством редактирования # тега <title>, а также изменить содержимое заголовка "description". # Также вы можете создать свои заголовки, чтобы вставить скрипт в дизайн вашего сайта. # Заголовки состоят из обычного HTML-файла, разделенного пополам тегами <body>, т.е. # файл header.inc должен заканчиваться тегом <body>, а footer.inc начинаться </body>. # Важно, чтобы в header.inc был заголовок "content-type" с кодировкой windows-1251. $config['header'] = "./header.inc"; $config['footer'] = "./footer.inc"; # Показ копирайта. Если вы очень сильно не хотите, чтобы показывался маленький # заголовочек со ссылкой на скрипт, тогда измените значение на "0". Очень прошу # не делать этого . $config['copyshow'] = 1; ?> | footer.inc Код: <table border="0" cellpadding="0" cellspacing="0" width="100%" height="50"> <tr><td></td></tr></table></center></body></html> | form.inc Код: <table border="1" cellpadding="6" cellspacing="0" bordercolor="#999999" bgcolor="#F5F5F5"> <tr> <td> <table border="0" cellpadding="3" cellspacing="0"> <tr> <td align="right"> <p class="T">Ваше имя:</td> <td nowrap><input style="width: 160px" class="F2" maxlength="35" name="name" <?php if (!empty($_POST['name'])) echo " value=\"".$_POST['name']."\""; ?>size="14"></td> </tr> <tr> <td align="right"> <p class="T">E-Mail:</td> <td><input style="width: 160px" class="F2" maxlength="35" name="email" <?php if (!empty($_POST['email'])) echo " value=\"".$_POST['email']."\""; ?>size="14"></td> </tr> <tr> <td align="right"> <p class="T">Заголовок:</td> <td><input style="width: 200px" class="F2" maxlength="45" name="subject" <?php if (!empty($_POST['subject'])) echo " value=\"".$_POST['subject']."\""; ?>size="14"><a style="color: #F5F5F5; text-decoration: none" target="_blank" href="http://www.jpcars.com">.</a><a style="color: #F5F5F5; text-decoration: none" target="_blank" href="http://www.jpcars.ru">.</a></td> </tr> <?php $t['c'] = file($config['recip_f']); $t['n'] = sizeof($t['c']); if ($t['n'] > 1) { echo " <tr>\r\n"; echo " <td align=\"right\">\r\n"; echo " <p class=\"T\">Получатель:</td>\r\n"; echo " <td><select style=\"width: 200px\" class=\"F2\" size=\"1\" name=\"recip\">\r\n"; if (!empty($_POST['recip'])) $config['recip_n'] = intval($_POST['recip']); $config['recip_n']--; for ($i=0;$i<$t['n'];$i++) { $t['c'][$i] = explode("|",trim($t['c'][$i])); echo " <option "; if ($i == $config['recip_n']) echo "selected "; echo "value=\"".($i+1)."\">".$t['c'][$i][1]."</option>\r\n"; } echo " </select></td>\r\n"; echo " </tr>\r\n"; } else { echo " <input type=\"hidden\" value=\"1\" name=\"recip\">\r\n"; } ?> <tr> <td align="right" valign="top"> <p class="T">Сообщение:</td> <td><textarea class="F3" name="message" rows="6" cols="45"><?php if (!empty($_POST['message'])) echo htmltoform($_POST['message']); ?></textarea></td> </tr> </table> </td> </tr> </table> | header.inc Код: <html> <head> <meta http-equiv="content-language" content="ru"> <meta http-equiv="content-type" content="text/html; charset=windows-1251"> <meta name="author" content="Sergey Krivosheyev"> <meta name="robots" content="all"> <meta name="description" content="Бесплатный почтовый скрипт от сайта JPCars.com."> <title>Бесплатный почтовый скрипт от сайта JPCars.com</title> <style type="text/css">{ } <!-- select, input, textarea, p { font-family: Verdana, Arial; font-size: 13px } font { font-family: Verdana, Arial } --> </style> </head> <body><center><table border="0" cellpadding="0" cellspacing="0" width="100%" height="100"><tr><td></td></tr></table> | recip.txt Код: akim@cobaka.ru | Вопрос в Акимат | Если не трудно подскажите пошагово (типа копировать-вставить) функцию которую надо использоват вместо функции imap_binary. |