[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с отправкой данных формы
yurov.igorr
Здравствуйте, уважаемые программисты! Я написал форму для отправки сообщения на e-mail. Проблема в том, что если я не авторизован, то данные формы отправляются нормально, а вот если я авторизован, то некоторые данные не отправляются, а именно: отправляется только текст сообщения и дата. Еще одна проблема в том, что в Яндекс Браузере, если я авторизован, то не просто не отправляются некоторые данные, а выскакивает ошибка, что сессии не совпадают! Вот код формы и скрипта-валидатора со страницы на сайте:
<script type="text/javascript">
function
valid_form(){
valid=true;
if(document.getElementById("name").value=="")
{
alert("Пожалуйста заполните поле 'E-mail'.");
valid=false;
}
else
{
if(document.getElementById("name").value.match(/^\w+(['\.\-\+]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/)==null)
{
alert("Неверный E-mail адрес.");
valid=false;
}
else
{
if(document.getElementById("name2").value=="")
{
alert("Пожалуйста заполните поле 'Имя'.");
valid=false;
}
else
{
if(document.getElementById("name2").value.length<3)
{
alert("Имя слишком короткое.");
valid=false;
}
else
{
if(document.getElementById("login").value=="")
{
alert("Пожалуйста заполните поле 'Логин'.");
valid=false;
}
else
{
if(document.getElementById("message_text").value=="")
{
alert("Пожалуйста заполните поле 'Сообщение'.");
valid=false;
}
else
{
if(document.getElementById("message_text").value.length<100)
{
alert("Сообщение слишком короткое.");
valid=false;
}
}
}
}
}
}
}



return valid;
}
</script>
<?php

session_start();
$memberid = $member_id['user_id'];
$memberemail = $member_id['email'];
$membername = $member_id['fullname'];
$memberlogin = $member_id['name'];
// выводим сообщения
echo $er;
// форма
echo "
<form id='resh_add' name='resh_add' method='post' action='/my_scripts/resh_mail/mail.php' onsubmit='return valid_form();'>
<input name='session_id' type='hidden' value="
.session_id().">
"
;

if (isset($member_id['user_id']))
{
echo "
<table>
<tbody>
<tr>
<td>
Ваш E-mail:<br>
<input type='text' name='name' id='name' value='
$memberemail' disabled class='name'>
</td>
<td>
Ваш логин:<br>
<input type='text' name='login' id='login' value='
$memberlogin' disabled class='login'>
</td>
<td>
Ваше Имя:<br>
<input type='text' name='name2' id='name2' value='
$membername' disabled class='name2'>
</td>
</tr>
</tbody>
</table>
"
;
}
else
{
echo "
<table>
<tbody>
<tr>
<td style='none'>
Ваш E-mail:<br>
<input type='text' name='name' id='name' class='name'>
</td>
<td style='none'>
Ваше Имя:<br>
<input type='text' name='name2' id='name2' class='name2'>
</td>
</tr>
</tbody>
</table>
<input type='hidden' name='login' id='login' value='*UNREGISTERED*' class='login'>
"
;
}
echo "
<br>
Сообщение:<br>
<textarea name='message_text' id='message_text' cols='60' rows='5' class='message_text'></textarea><br><br>

"
;
?>
<button
type='submit' name='submit' id='button' value='Отправить'><img src="/templates/Default/images/gm.png" style="vertical-align:middle;"> Отправить </button>
</form>


А вот код обработчика формы mail.php :
<?php
session_start();
if($_POST['session_id'] != session_id() )
{
exit("Возникла ошибка! Сессии не совпадают! Возможные причины:<br>1. Вы попытались воспользоваться формой отправки сообщения через страницу, не принадлежащей домену ".$_SERVER['HTTP_HOST'].";<br>2. Произошел сбой. Перезагрузите ваш БРАУЗЕР (НЕ страницу);<br>3. Попытка ФЛУДА!<br>Сессии:<br>Session_1: ".$_POST['session_id']."<br>Session_2: ".session_id()."");

}
else
{
// Обработка полей формы
$message_text = htmlspecialchars(trim($_POST['message_text']));
$name2 = $_POST['name2'];
$name = $_POST['name'];
$login = $_POST['login'];

// Проверяем длину сообщения, она не должна превышать $len знаков
$len = 2000;
if(strlen($message_text) > $len)
{
exit("Ошибка. Сообщение не должно превышать ".$len. " знаков. ");
}

// здесь надо вставить email куда отправлять сообщение
$to = "yurov.igorr@mail.ru";
$subject="Письмо от ".$name2.", ".$login;

// конвертируем из windows-1251 в koi8-r
$subject = convert_cyr_string($subject,'w','k');

// это само письмо
$message ="<html>
<head></head>
<body>
Дата: <font color='red'>"
.date("d.m.Y H:i:s"). "</font><br>
Имя пользователя: <font color='red'>"
.$name2."</font><br>
Логин: <font color='red'>"
.$login."</font><br>
E-mail: <font color='red'>"
.$name."</font><br>
<h3>Текст письма:</h3>"
. $message_text."
</body>
</html>
"
;
// конвертируем из windows-1251 в koi8-r
$message = convert_cyr_string($message,'w','k');
// заголовки письма
$headers = "Content-Type: text/html; charset=KOI8-R\r\n";
// от кого письмо
$headers .= "From: ".$name;
if(mail($to,$subject,$message,$headers))
{
echo "Письмо успешно отправлено.<br>Дата: ".date("d.m.Y H:i:s").";";
}
else
{
echo "Ошибка. Письмо не отправлено.";
}
}

?>

Где ошибка? Сайт helpforu.ru. Страница http://helpforu.ru/reshebniki.html (Там надо будет нажать внизу таблицы на ссылку 'Щелкай сюда')
P.S. Если вы будете отправлять сообщения через эту страницу, то пожалуйста, укажите дату (я проверю, что отправилось).
Быстрый ответ:

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