[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: $error['mailer']
veronica85
Здравствуйте.

Помогите, пожалуйста, разобраться в следующем:

Форму обратной связи делала по урокам.
В файле config.inc.php есть такие строки, отвечающие за адреса, куда будут отправляться письма
$recipient[1] = 'mail@mail.ru';
$recipient[2] = 'mail@mail.ru';

Разве не на все адреса должна приходить почта?

Когда указываю адрес 2символа@2символа.ru, выдается ошибка↓, хотя адрес, который указываю, существует. Использую ящик mail.ru - все доходит без проблем.


$error['mailer'] = "<br/>Извините, произошла непредвиденная ошибка. Ваша анкета не была отправлена";

Что мне делать?



Спустя 8 минут, 26 секунд (24.04.2010 - 23:09) Nikitian написал(а):
Цитата
Что мне делать?

Выложить код и процитировать ошибку.

Спустя 19 минут, 51 секунда (24.04.2010 - 23:29) veronica85 написал(а):
index.php


<?php
//Инициализация сессии
session_start();

//Подключаем файл конфигурации
require("inc/config.inc.php");
//Подключаем файл с функциями
require("inc/functions.inc.php");

//Были ли нажата кнопка
if(@$_POST['do']!=''){
//Создаем переменные
$_ERR='';
$page='';
$head='';
//Переопределяем переменную
$keystring = $_REQUEST['keystring'];

//Сравниваем
if ($keystring != $_SESSION['captcha_keystring'] OR empty($keystring)) {
//Составляем уведомление
$page.='<p style="color:red">Ошибка: '.$error['captcha'].'</p>';
unset($_SESSION['captcha_keystring']);
}
else {
//Если мэйл обязателен
if($requirements['email']==1){
//Проверяем
if(checkmail($_POST['field']['email']) ===0 ){ $_ERR.=$error['email'];}
}
else { //Если нет
//Было ли заполнено

if($_POST['field']['email']!=''){
//Тогда проверяем
if(checkmail($_POST['field']['email']) ===0 ){ $_ERR.=$error['email'];}
}
}

//Запускаем цикл
for($i=1;$i<=count($requirements);$i++){
//Проверяем
if($requirements[$i] ==1) {
//Проверяем существование переменной
if(!isset($_POST['field'][$i]) OR $_POST['field'][$i]=='' ) { $_ERR.=$error[$i];}
}
}

//Если есть ошибки
if($_ERR !='') {
$page.='<p style="color:red">Ошибка: '.$_ERR.'</p>';
} else {
//Подгружаем шаблон формы
$_tmpl = @join('',@file($_file));

//Парсим шаблон
for($k=1;$k<=count($requirements);$k++){
//Проверяем массив ли это?
if(is_array($_POST['field'][$k])) {
//Формируем строку из массива
$_string = implode(",",$_POST['field'][$k]);
//Заменяем метку
$_tmpl = str_replace('[FIELD'.$k.']',$_string,$_tmpl);

} else {
//Заменяем метки
$_tmpl = str_replace('[FIELD'.$k.']',$_POST['field'][$k],$_tmpl);
}
}

//Заменяем метку эл.адреса
$_tmpl = str_replace('[EMAIL]',$_POST['field']['email'],$_tmpl);
//Заменяем служебные метки
$_tmpl = str_replace('[DATA]',date("d.m.Y H:i:s"),$_tmpl);
$_tmpl = str_replace('[IP]',getenv('REMOTE_ADDR'),$_tmpl);
$_tmpl = str_replace('[BROWSER]',getenv('HTTP_USER_AGENT'),$_tmpl);
$_tmpl = str_replace('[URL]',getenv('HTTP_REFERER'),$_tmpl);

//Разбираем массив получателей
$_to = implode(",",$recipient);

//Отправляем письмо
if(@mail($_to, $_subject, $_tmpl, $_headers)){
if($_redirect == 0){
//Перенаправляем пользователя на страницу
header("Location:".$_success_url);
}
if($_redirect == 1) {
//Перенаправляем пользователя на страницу при помощи js с нулевой задержкой
$head .= '<script type="text/javascript">
setTimeout(
\'location.replace("'.$_success_url.'")\', 0);
</script>
<noscript>
<meta http-equiv="refresh" content="0; url='
.$_success_url.'">
</noscript>'
;
}
$page.='<p style="color:#ca2720">Спасибо. Ваше сообщение отправлено</p>';
} else {
$page.='<p style="color:red">Ошибка: '.$error['mailer'].'</p>';
}
}
}

if($page==''){ $page.='<p style="color:red">Ошибка: '.$error['render'].'</p>';}
//Разрушаем сессию
unset($_SESSION['captcha_keystring']);
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<
html>
<
head>
<?=$head;?>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<
title></title>
<
link href="/css/default.css" rel="stylesheet" type="text/css" />
</
head>
<
body>

<
h1>Написать письмо</h1>

<!--
уведомелния-->
<?=$page;?>
<!--/уведомления-->

<!--
BEGIN FORM-->
<
form action="" method="post" style="width: 320px;" >
<
span class="req">*</span> Ваше имя:<br/>
<
input type="text" name="field[1]" value="<?= $_POST['field']['1']?>" maxlength="50" size="50"/><br/>
<
span class="req">*</span> Ваш e-mail:<br/>
<
input type="text" name="field[email]" value="<?=$_POST['field']['email']?>" maxlength="255" size="50" /><br/>
 Заголовок:<br/>
<
input type="text" name="field[2]" value="<?= $_POST['field']['2']?>" maxlength="50" size="50" /><br/>
<
span class="req">*</span> Текст сообщения:<br/>
<
textarea name="field[3]" wrap="on" rows="7" cols="49"><?=$_POST['field']['3']?></textarea><br/>
<
a name="captcha"></a>
<
p><span class="req">*</span> Введите число:    <input type="text" name="keystring" size="10"></p>
<
p><img src="kcaptcha/img.php" id="image"></br>
  <a href="#captcha" onClick="document.getElementById('image').src='kcaptcha/img.php?rand='+Math.round(1000 * Math.random());" id="cap">обновить</a></p>
<
input type="submit" value="Отправить" class="btn" name="do" />
<
div style="clear: both;"></div>
<
p><span class="req">*</span> - поля, необходимые для заполнения</p>
</
form>
<!--
END FORM-->

</
body>
</
html>

functions.inc.php


<?php
function
checkmail($mail) {
// режем левые символы и крайние пробелы
$mail=trim($mail);
// если пусто - выход
if (strlen($mail)==0) return 0;
if (!preg_match("/^[a-z0-9_-]{1,20}+(\.){0,2}+([a-z0-9_-]){0,20}@(([a-z0-9-]+\.)+(com|net|org|mil|".
"edu|gov|arpa|info|biz|inc|name|ru|[a-z]{2})|[0-9]{1,3}\.[0-9]{1,3}\.[0-".
"9]{1,3}\.[0-9]{1,3})$/is",$mail))
return 0;
return $mail;
}
?>

config.inc.php


<?php

//Настраиваем массив ошибок
$error = array();
//Ошибки для каждого поля
$error['1'] = "<br/>Необходимо ввести имя";
$error['2'] = "<br/>Необходимо ввести заголовок";
$error['3'] = "<br/>Пожалуйста, введите текст сообщения";

//Служебные ошибки
$error['email'] = "<br/>Введите корректный e-mail адрес";
$error['captcha'] = "<br/>Не верно введен код подтверждения";
$error['render'] = "<br/>Извините, произошла непредвиденная ошибка";
$error['mailer'] = "<br/>Извините, произошла непредвиденная ошибка. Ваша анкета не была отправлена";

//Настраиваем обязательность(1)/необязательность(0)
$requirements = array();
$requirements['email'] = 1;
$requirements['1'] = 1;
$requirements['2'] = 0;
$requirements['3'] = 1;

//Настраиваем получателей
//дополнительный адрес настраивается путем добавления еще одного элемента массива

$recipient = array();
$recipient[1] = 'mail@mail.ru';
//$recipient[2] = '00@00.ru';

//Указываем путь к шаблону письма

$_file = 'tmpl/index.html';
//Метод редиректа
$_redirect = 1;

//Заголовки письма
$_headers = 'MIME-Version: 1.0' . "\r\n";
$_headers .= 'Content-type: text/html; charset=windows-1251' . "\r\n";
$_headers .= 'From: Сообщение <no-replay@mail.ru>'. "\r\n";
//Тема с которой письмо будет приходить к вам на ящики
$_subject ='C сайта';
?>

Спустя 2 часа, 12 минут, 40 секунд (25.04.2010 - 01:41) Nikitian написал(а):
Попробуйте такой index.php:
index.php


<?php
//Инициализация сессии
session_start();

//Подключаем файл конфигурации
require("inc/config.inc.php");
//Подключаем файл с функциями
require("inc/functions.inc.php");

//Были ли нажата кнопка
if(@$_POST['do']!=''){
//Создаем переменные
$_ERR='';
$page='';
$head='';
//Переопределяем переменную
$keystring = $_REQUEST['keystring'];

//Сравниваем
if ($keystring != $_SESSION['captcha_keystring'] OR empty($keystring)) {
//Составляем уведомление
$page.='<p style="color:red">Ошибка: '.$error['captcha'].'</p>';
unset($_SESSION['captcha_keystring']);
}
else {
//Если мэйл обязателен
if($requirements['email']==1){
//Проверяем
if(checkmail($_POST['field']['email']) ===0 ){ $_ERR.=$error['email'];}
}
else { //Если нет
//Было ли заполнено

if($_POST['field']['email']!=''){
//Тогда проверяем
if(checkmail($_POST['field']['email']) ===0 ){ $_ERR.=$error['email'];}
}
}

//Запускаем цикл
for($i=1;$i<=count($requirements);$i++){
//Проверяем
if($requirements[$i] ==1) {
//Проверяем существование переменной
if(!isset($_POST['field'][$i]) OR $_POST['field'][$i]=='' ) { $_ERR.=$error[$i];}
}
}

//Если есть ошибки
if($_ERR !='') {
$page.='<p style="color:red">Ошибка: '.$_ERR.'</p>';
} else {
//Подгружаем шаблон формы
$_tmpl = @join('',@file($_file));

//Парсим шаблон
for($k=1;$k<=count($requirements);$k++){
//Проверяем массив ли это?
if(is_array($_POST['field'][$k])) {
//Формируем строку из массива
$_string = implode(",",$_POST['field'][$k]);
//Заменяем метку
$_tmpl = str_replace('[FIELD'.$k.']',$_string,$_tmpl);

} else {
//Заменяем метки
$_tmpl = str_replace('[FIELD'.$k.']',$_POST['field'][$k],$_tmpl);
}
}

//Заменяем метку эл.адреса
$_tmpl = str_replace('[EMAIL]',$_POST['field']['email'],$_tmpl);
//Заменяем служебные метки
$_tmpl = str_replace('[DATA]',date("d.m.Y H:i:s"),$_tmpl);
$_tmpl = str_replace('[IP]',getenv('REMOTE_ADDR'),$_tmpl);
$_tmpl = str_replace('[BROWSER]',getenv('HTTP_USER_AGENT'),$_tmpl);
$_tmpl = str_replace('[URL]',getenv('HTTP_REFERER'),$_tmpl);

//Разбираем массив получателей
//$_to = implode(",",$recipient);

$r=true;
foreach($recipient as $_to){
//Отправляем письмо
$r=$r&&@mail($_to, $_subject, $_tmpl, $_headers);
}
if($r){
if($_redirect == 0){
//Перенаправляем пользователя на страницу
header("Location:".$_success_url);
}
if($_redirect == 1) {
//Перенаправляем пользователя на страницу при помощи js с нулевой задержкой
$head .= '<script type="text/javascript">
setTimeout(
\'location.replace("'.$_success_url.'")\', 0);
</script>
<noscript>
<meta http-equiv="refresh" content="0; url='
.$_success_url.'">
</noscript>'
;
}
$page.='<p style="color:#ca2720">Спасибо. Ваше сообщение отправлено</p>';
} else {
$page.='<p style="color:red">Ошибка: '.$error['mailer'].'</p>';
}
}
}

if($page==''){ $page.='<p style="color:red">Ошибка: '.$error['render'].'</p>';}
//Разрушаем сессию
unset($_SESSION['captcha_keystring']);
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<
html>
<
head>
<?=$head;?>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<
title></title>
<
link href="/css/default.css" rel="stylesheet" type="text/css" />
</
head>
<
body>

<
h1>Написать письмо</h1>

<!--
уведомелния-->
<?=$page;?>
<!--/уведомления-->

<!--
BEGIN FORM-->
<
form action="" method="post" style="width: 320px;" >
<
span class="req">*</span> Ваше имя:<br/>
<
input type="text" name="field[1]" value="<?= $_POST['field']['1']?>" maxlength="50" size="50"/><br/>
<
span class="req">*</span> Ваш e-mail:<br/>
<
input type="text" name="field[email]" value="<?=$_POST['field']['email']?>" maxlength="255" size="50" /><br/>
Заголовок:<br/>
<
input type="text" name="field[2]" value="<?= $_POST['field']['2']?>" maxlength="50" size="50" /><br/>
<
span class="req">*</span> Текст сообщения:<br/>
<
textarea name="field[3]" wrap="on" rows="7" cols="49"><?=$_POST['field']['3']?></textarea><br/>
<
a name="captcha"></a>
<
p><span class="req">*</span> Введите число: <input type="text" name="keystring" size="10"></p>
<
p><img src="kcaptcha/img.php" id="image"></br>
<
a href="#captcha" onClick="document.getElementById('image').src='kcaptcha/img.php?rand='+Math.round(1000 * Math.random());" id="cap">обновить</a></p>
<
input type="submit" value="Отправить" class="btn" name="do" />
<
div style="clear: both;"></div>
<
p><span class="req">*</span> - поля, необходимые для заполнения</p>
</
form>
<!--
END FORM-->

</
body>
</
html>


И конфиг немного подправим, чисто из соображений обучения и понимания:
config.inc.php


<?php

//Настраиваем массив ошибок
$error = array();
//Ошибки для каждого поля
$error['1'] = "<br/>Необходимо ввести имя";
$error['2'] = "<br/>Необходимо ввести заголовок";
$error['3'] = "<br/>Пожалуйста, введите текст сообщения";

//Служебные ошибки
$error['email'] = "<br/>Введите корректный e-mail адрес";
$error['captcha'] = "<br/>Не верно введен код подтверждения";
$error['render'] = "<br/>Извините, произошла непредвиденная ошибка";
$error['mailer'] = "<br/>Извините, произошла непредвиденная ошибка. Ваша анкета не была отправлена вовсе, либо отправлена не всем получателям";

//Настраиваем обязательность(1)/необязательность(0)
$requirements = array();
$requirements['email'] = 1;
$requirements['1'] = 1;
$requirements['2'] = 0;
$requirements['3'] = 1;

//Настраиваем получателей
//дополнительный адрес настраивается путем добавления еще одного элемента массива

$recipient = array();
$recipient[1] = 'mail@mail.ru';
//$recipient[2] = '00@00.ru';

//Указываем путь к шаблону письма

$_file = 'tmpl/index.html';
//Метод редиректа
$_redirect = 1;

//Заголовки письма
$_headers = 'MIME-Version: 1.0' . "\r\n";
$_headers .= 'Content-type: text/html; charset=windows-1251' . "\r\n";
$_headers .= 'From: Сообщение <no-replay@mail.ru>'. "\r\n";
//Тема с которой письмо будет приходить к вам на ящики
$_subject ='C сайта';
?>


Код не проверял, но вроде должно работать.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.