|
|
|
| Уважаемое сообщество. У меня такой вопрос по модулю авторизации пользователей.
Я использовал такой код
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
<style type="text/css">
#content {left:0px; top:0px; right:0px; width:100%; height:100px; position:absolute; background-color:#2afcb4;}
#content-reg { left:5px; width:20%; top:105px; background-color:#bec7f9; position:absolute; font-size:13px; font-family:Tahoma}
#content-center { top:105px; left:21%; right:21%; width:58%; background-color:#bec7f9; position:absolute; }
</style>
</head>
<body leftmargin="0" rightmargin="0" topmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
<div id="content">
<img src="image/content.gif" width="990" height="100" border="0">
</div>
<div id="content-center">
<center>
<br>
<?php
if (isset($_POST['save_p']))
{
$login = htmlspecialchars(stripslashes(trim($_POST['login'])));
$email = htmlspecialchars(stripslashes(trim($_POST['email'])));
$password = htmlspecialchars(stripslashes(trim($_POST['password'])));
if (empty($login))
{
echo "<center>
<font color = 'blue' size = '3' face = 'Tahoma'>
поле <b>Ваш логин</b> осталось пустым! Это недопустимо. <p>
Чтобы внести исправления надо вернуться <a href = 'javascript:history.back(1)' class = 'enter'>НАЗАД</a>
</font>
</center>";
}
else
if (!preg_match("|^[-a-z\d]+$|i", $login))
{
echo "<center>
<font color = 'blue' size = '3' face = 'Tahoma'>
поле <b>Ваш логин</b> <font color = 'black' size = '4' face = 'Times'>\"".$login."\"</font> использует
запрещённый символ! Это недопустимо.<p>
Чтобы внести исправления надо вернуться <a href = 'javascript:history.back(1)' class = 'enter'>НАЗАД</a>
</font>
</center>";
}
else
if (empty($email))
{
echo "<center>
<font color = 'blue' size = '3' face = 'Tahoma'>
поле <b>E-mail</b> осталось пустым! Это недопустимо. <p>
Чтобы внести исправления надо вернуться <a href = 'javascript:history.back(1)' class = 'enter'>НАЗАД</a>
</font>
</center>";
}
else
if (!preg_match("/[0-9a-z_]+@[-0-9a-z_^\.]+\.[a-z]{2,4}$/i", $email))
{
echo "<center>
<font color = 'blue' size = '3' face = 'Tahoma'>
поле <b>E-mail</b> <font color = 'black' size = '4' face = 'Times'>\"".$email."\"</font>
использует запрещённый символ! Это недопустимо.<br>
Введите E-mail в виде: <b>mmm@sait.ru</b><p>
Чтобы внести исправления надо вернуться <a href = 'javascript:history.back(1)' class = 'enter'>НАЗАД</a>
</font>
</center>";
}
else
if (empty($password))
{
echo "<center>
<font color = 'blue' size = '3' face = 'Tahoma'>
поле <b>Пароль</b> осталось пустым! Это недопустимо. <p>
Чтобы внести исправления надо вернуться <a href = 'javascript:history.back(1)' class = 'enter'>НАЗАД</a>
</font>
</center>";
}
else
if (!preg_match("|^[-_a-z\d]+$|i", $password))
{
echo "<center>
<font color = 'blue' size = '3' face = 'Tahoma'>
поле <b>Пароль</b> <font color = 'black' size = '4' face = 'Times'>\"".$password."\"</font>
использует запрещённый символ! Это недопустимо.<p>
Чтобы внести исправления надо вернуться <a href = 'javascript:history.back(1)' class = 'enter'>НАЗАД</a>
</font>
</center>";
}
else
if (empty($repeatpas))
{
echo "<center>
<font color = 'blue' size = '3' face = 'Tahoma'>
поле <b>Повторите пароль</b> осталось пустым! Это недопустимо. <p>
Чтобы внести исправления надо вернуться <a href = 'javascript:history.back(1)' class = 'enter'>НАЗАД</a>
</font>
</center>";
}
else
if (!preg_match("|^[-_a-z\d]+$|i", $repeatpas))
{
echo "<center>
<font color = 'blue' size = '3' face = 'Tahoma'>
поле <b>Повторите пароль</b> <font color = 'black' size = '4' face = 'Times'>\"".$repeatpas."\"</font>
использует запрещённый символ! Это недопустимо.<p>
Чтобы внести исправления надо вернуться <a href = 'javascript:history.back(1)' class = 'enter'>НАЗАД</a>
</font>
</center>";
}
else
if ($password != $repeatpas)
{
echo "<center>
<font color = 'blue' size = '3' face = 'Tahoma'>
Ваши пароли <font color = 'black' size = '4' face = 'Times'>\"".$password."\" и \"".$repeatpas."\"</font>
не совпадают! Это недопустимо.<p>
Чтобы внести исправления надо вернуться <a href = 'javascript:history.back(1)' class = 'enter'>НАЗАД</a>
</font>
</center>";
}
else
{
$a=mysql_connect("sql-2.ayola.net","mypage152","aqmse2zywf");
if(!$a)
{ echo "Не могу соединится с базой!<br>";
echo mysql_error();
exit;
}
mysql_query( "CREATE DATABASE login" );
mysql_select_db( "login");
mysql_query("CREATE TABLE login (
id_user SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
login TINYTEXT NOT NULL,
email TINYTEXT NOT NULL,
password TINYTEXT NOT NULL,
PRIMARY KEY (id_user)
)");
if ($sql=mysql_query("select id_user from login where login='".$login."' and email != '".$email."'") and (mysql_num_rows($sql)> 0))
{
echo "<center>
<font color = 'blue' size = '3' face = 'Tahoma'>
Ошибка введённых в форму данных <font color = 'black' size = '4' face = 'Times'>\"".$login."\"</font>
Логин с таким именем уже существует в БД, введите другой логин<p>
Чтобы внести исправления надо вернуться <a href = 'javascript:history.back(1)' class = 'enter'>НАЗАД</a>
</font>
</center>";
}
else
if ($sql=mysql_query("select id_user from login where email='".$email."' and login != '".$login."'") and (mysql_num_rows($sql)>0))
{
echo "<center>
<font color = 'blue' size = '3' face = 'Tahoma'>
Ошибка введённых в форму данных <font color = 'black' size = '4' face = 'Times'>\"".$email."\"</font>
email с таким именем уже существует в БД, введите другой email<p>
Чтобы внести исправления надо вернуться <a href = 'javascript:history.back(1)' class = 'enter'>НАЗАД</a>
</font>
</center>";
}
else
if ($sql=mysql_query("select id_user from login where login='".$login."' and email='".$email."'") and (mysql_num_rows($sql)> 0))
{
echo "<center>
<font color = 'blue' size = '3' face = 'Tahoma'>
Ошибка введённых в форму данных <font color = 'black' size = '4' face = 'Times'>\"".$login."\"</font>
Логин с таким именем уже существует в БД, введите другой логин<p>
</font>
<font color = 'blue' size = '3' face = 'Tahoma'>
Ошибка введённых в форму данных <font color = 'black' size = '4' face = 'Times'>\"".$email."\"</font>
email с таким именем уже существует в БД, введите другой email<p>
Чтобы внести исправления надо вернуться <a href = 'javascript:history.back(1)' class = 'enter'>НАЗАД</a>
</font>
</center>";
}
else
{
$save = "INSERT INTO login VALUES (0,'$login','$email','$password')";
$temp = mysql_query($save);
if ($temp)
{
echo "<center><strong><font color = 'red' size = '2' face = 'Tahoma'>
Вы успешно зарегистрированы в системе.
</font></strong>";
}
else
echo "<center><font color = 'black' size = '4'><b>Ошибка при добавлении нового партнёра.
Пожалуйста, зайдите позже</b></font></center>";
}
}
}
else
{
echo "<font color = 'blue' size = '4' face = 'Georgia'>Регистрация нового пользователя</font><p>
<font color = 'gray'><b>все поля обязательны к заполнению</b></font>";
echo "<form action = 'register.php' method = 'post'>";
echo "<TABLE border = '0' width = '100%' cellpadding = '7' class = 'screen'>
<TR valign = 'top'>
<TD><b>Ваш логин:</b><br>(пустое значение запрещено)</TD>
<TD><input type = 'text' size = '30' name = 'login' maxlength = '30'
value = '".$_POST['login']."' class = 'edit'><br>
<font color = 'gray' size = '1' face = 'Verdana'>имя должно состоять не более чем из 30 символов и
включать только строчные буквы латинского алфавита, цифры и символ тире <b>(-)</b></font></TD>
</TR>
<TR valign = 'top'>
<TD><b>E-mail:</b><br>(пустое значение запрещено)</TD>
<TD><input type = 'text' size = '30' maxlength = '40' name = 'email'
value = '".$_POST['email']."' class = 'edit'><br>
<font color = 'gray' size = '1' face = 'Verdana'>Ваш личный (контактный) адрес электронной почты</font></TD>
</TR>
<TR valign = 'top'>
<TD><b>Пароль:</b><br>(пустое значение запрещено)</TD>
<TD><input type = 'password' size = '30' maxlength = '30' name = 'password'
value = '".$_POST['password']."' class = 'edit'><br>
<font color = 'gray' size = '1' face = 'Verdana'>пароль, который Вы будете использовать для входа
в аккаунт</font></TD>
</TR>
<TR valign = 'top'>
<TD><b>Повторите пароль:</b><br>(пустое значение запрещено)</TD>
<TD><input type = 'password' size = '30' maxlength = '30' name = 'repeatpas'
value = '".$_POST['repeatpas']."' class = 'edit'><br>
<font color = 'gray' size = '1' face = 'Verdana'>повторите Ваш пароль</font></TD>
</TR>
</TABLE>
<p>";
echo "<center>
<input type = 'submit' name = 'save_p' value = 'Сохранить данные' class = 'button'>";
echo "</form></center>";
}
?>
<br>
</center>
</div>
</body>
</html>
|
Этот файл выставлен в сети по адресу http://mypage.zx6.ru Ссылка зарегистрироватся. Проблема такая при попытке зарегистрироватся и заполнении всех необходимых полей формы выходит сообщение о том что поле повторите пароль является пустым, хотя поле повторите пароль было заполнено, Почему выходит такая ошибка. При проверке на своем компьютере дома регистрация проходит успешно. | |
|
|
|
|
|
|
|
для: pautina
(05.06.2008 в 15:46)
| | register_globals на сервере выключен.
Добавить
$repeatpas= htmlspecialchars(stripslashes(trim($_POST['repeatpas'])));
|
По хорошему нужно экранировать спецсимволы функцией mysql_escape_string().
if (!get_magic_quotes_gpc())
{
$repeatpas = mysql_escape_string($_POST['repeatpas']);
}
|
P.S.
1 Зачем вы ограничиваете пользователя в используемых символах в логине и пароле?
2 Проверка email не корректна. | |
|
|
|
|
|
|
|
для: AcidTrash
(05.06.2008 в 15:57)
| | Спасибо всё заработало.
PS
А какую проверку на дублирование email и логина использовали бы Вы?
Для логина и пароля мне кажется достаточно и 30 символов, зачем больше то? | |
|
|
|
|
|
|
|
для: pautina
(05.06.2008 в 16:23)
| | >А какую проверку на дублирование email и логина использовали бы Вы?
Про email я имел ввиду неряшливость регулярного выражения, оно у вас много чего лишнего пропустит и много чего валидного не пропустит.
>Для логина и пароля мне кажется достаточно и 30 символов, зачем больше то?
Здесь, я имел ввиду не про длину логина и пароля, а про набор символов который разрешен.
P.S. Насчет дублирования.
Перед заносом данных в БД, сделать запрос к базе на существование введенных данных и если результат будет true, выдать пользователю, что такой логин существует.
Проверка на дублирование email, в данном примере не имеет смысла. | |
|
|
|
|
|
|
|
для: AcidTrash
(05.06.2008 в 16:29)
| | Можно ещё вопрос у меня почему то не получается войти под зарегистрированным логином и паролем. http://mypage.zx6.ru Кнопка вход.
Код такой.
...
<?php
$a=mysql_connect("sql-2.ayola.net","mypage152","aqmse2zywf");
if(!$a)
{ echo "Не могу соединится с базой!<br>";
echo mysql_error();
exit;
}
mysql_select_db( "mypage152");
if
( $sql=mysql_query("select id_user from login where login='".$login."' and password='".$password."'") and (mysql_num_rows($sql)>0) )
{
echo "Вы вошли как пользователь <br> <b>'".$login."'</b>";
}
else
if
( $sql=mysql_query("select id_user from login where login='".$login."' and password != '".$password."'") and (mysql_num_rows($sql)>0) )
{
echo "Логин '".$login."' содержится в БД, <br> но пароль неправильный";
}
else
{
echo "Вы вввели неправильные данные, <br> такого логина и пароля нет <br>в БД";
}
?>
...
|
Всегда выдаётся что я ввёл неправильные данные, Опять же на домашнем компьютере всё работало а в сети нет. это как то связано с тем что register_globals выключен. Что мне изменить чтоб я смог зайти. | |
|
|
|
|
|
|
|
для: pautina
(05.06.2008 в 17:10)
| | Опять же вы забыли о выключеном register_globals и подготовке данных к sql-запросу.
<?php
if (!get_magic_quotes_gpc())
{
$login = mysql_escape_string($_POST['login']);
$password = mysql_escape_string($_POST['password']);
}
?>
|
| |
|
|
|
|
|
|
|
для: AcidTrash
(05.06.2008 в 17:23)
| | Извините. Я изменил код для входа таким образом.
<?php
if (!get_magic_quotes_gpc())
{
$login = mysql_escape_string($_POST['login']);
$password = mysql_escape_string($_POST['password']);
}
$a=mysql_connect("sql-2.ayola.net","mypage152","aqmse2zywf");
if(!$a)
{ echo "Не могу соединится с базой!<br>";
echo mysql_error();
exit;
}
mysql_select_db( "mypage152");
if
( $sql=mysql_query("select id_user from login where login='".$login."' and password='".$password."'") and (mysql_num_rows($sql)>0) )
{
echo "Вы вошли как пользователь <br> <b>'".$login."'</b>";
}
else
if
( $sql=mysql_query("select id_user from login where login='".$login."' and password != '".$password."'") and (mysql_num_rows($sql)>0) )
{
echo "Логин '".$login."' содержится в БД, <br> но пароль неправильный";
}
else
{
echo "Вы вввели неправильные данные, <br> такого логина и пароля нет <br>в БД";
}
?>
|
Всё равно не работает, что я ни так записал. | |
|
|
|
|
|
|
|
для: pautina
(05.06.2008 в 17:36)
| |
<?php
$a=mysql_connect("sql-2.ayola.net","mypage152","aqmse2zywf");
if(!$a)
{ echo "Не могу соединится с базой!<br>";
echo mysql_error();
exit;
}
mysql_select_db( "mypage152");
$login = $_POST['login'];
$password = $_POST['password'];
if (!get_magic_quotes_gpc())
{
$login = mysql_escape_string($login);
$password = mysql_escape_string($password);
}
if
( $sql=mysql_query("select id_user from login where login='".$login."' and password='".$password."'") and (mysql_num_rows($sql)>0) )
{
echo "Вы вошли как пользователь <br> <b>'".$login."'</b>";
}
else
if
( $sql=mysql_query("select id_user from login where login='".$login."' and password != '".$password."'") and (mysql_num_rows($sql)>0) )
{
echo "Логин '".$login."' содержится в БД, <br> но пароль неправильный";
}
else
{
echo "Вы вввели неправильные данные, <br> такого логина и пароля нет <br>в БД";
}
?>
|
Если уж по простому. Хотя не мешало бы сначала проверить массивы POST на пустоту, прежде чем делать запрос. | |
|
|
|
|
|
|
|
для: AcidTrash
(05.06.2008 в 17:41)
| | А вот смотрите сейчас код для входа пользователя немного изменён.
При условии что было добавлено,
...
$login = $_POST['login'];
$password = $_POST['password'];
if (!get_magic_quotes_gpc())
{
$login = mysql_escape_string($login);
$password = mysql_escape_string($password);
}
...
Вход пользователя будет осуществлятся на домашнем компьютере. (атрибуты mysql_connect будут другими) | |
|
|
|
|
|
|
|
для: pautina
(05.06.2008 в 18:05)
| | >Вход пользователя будет осуществлятся на домашнем компьютере.
И что? Все пользователи вашей системы входят откуда угодно, хоть с домашнего, хоть не с домашнего. :)
>(атрибуты mysql_connect будут другими)
Они будут такими же, пока вы сами не измените. | |
|
|
|
|
|
|
|
для: AcidTrash
(05.06.2008 в 23:12)
| | Вы не помотрите данный участок кода, Почему-то не работает отправка логина и пароля на емаил. Код такой.
<?php
$a=mysql_connect("sql-2.ayola.net","mypage152","aqmse2zywf");
if(!$a)
{ echo "Не могу соединится с базой!<br>";
echo mysql_error();
exit;
}
mysql_select_db( "mypage152");
$email = $_POST['email'];
if (!get_magic_quotes_gpc())
{
$login = mysql_escape_string($email);
}
if
( $sql=mysql_query("select id_user from login where email='".$email."'") and (mysql_num_rows($sql)>0) )
{
$to=".$email.";
$subject="Забыли пароль";
$message="Вы воспользовались функцией забыли пароль
Ваш логин:".$login."
Ваш пароль:".$password."
IP-адрес:$REMOTE_ADDR";
mail ($to,$subject,$message);
echo "<font color = 'red' size = '2' face = 'Tahoma'>
На Вашу электронную почту был выслан пароль
</font>";
}
else
{
echo "<font color = 'red' size = '2' face = 'Tahoma'>
Данный электронный почтовый ящик не зарегистрирован в БД
</font>";
}
?>
|
| |
|
|
|
|
|
|
|
для: pautina
(06.06.2008 в 09:38)
| | Во первых зачем в строке $to=".$email."; точки перед и после $email, они то и мешают.
Во вторых я вообще не понимаю логику вашего скрипта. | |
|
|
|
|
|
|
|
для: AcidTrash
(06.06.2008 в 09:57)
| | Я убрал точки перед и после $email, $login, $password. Письмо на email не пришло, и страница загрузилась, но браузер ничего не выдал.
как это всё выглядит.
На странице http://mypage.zx6.ru/ есть ссылка забыли пароль (Служит для отправки логина и пароля на емайл, при условии что пользователь сайта не может зайти) Как только пользователь активирует её выполняется страница zab_password.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
...
<body leftmargin="0" rightmargin="0" topmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
<div id="content">
<img src="image/content.gif" width="990" height="100" border="0">
</div>
<div id="content-text">
<form method="post" action="zab_password2.php">
<table cellpadding="5" cellspacing="0">
<tr>
<td>
<h4> Вы забыли пароль?</h4>
Если Вы забыли пароль, введите Ваш электронный адрес, указанный при регистрации, в поле ниже, и пароль будет выслан на него.
</td>
</tr>
<tr>
<td colspan="2">
Электронная почта
<input name="email" type="text" size="12">
<input type="submit" name="zab_password" value="Выслать">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
|
На странице вводится емайл который пользователь использовал при регистрации. Нажимаем кнопку выслать и запускается файл zab_password2.php
<html>
...
<body leftmargin="0" rightmargin="0" topmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
<div id="content">
<img src="image/content.gif" width="990" height="100" border="0">
</div>
<div id="content-text">
<form method="post" action="zab_password2.php">
<table cellpadding="5" cellspacing="0">
<tr>
<td>
<h4> Вы забыли пароль?</h4>
Если Вы забыли пароль, введите Ваш электронный адрес, указанный при регистрации, в поле ниже, и пароль будет выслан на него.
</td>
</tr>
<tr>
<td colspan="2">
Электронная почта
<input name="email" type="text" size="12">
<input type="submit" name="zab_password" value="Выслать">
</td>
</tr>
<tr>
<td>
<?php
$a=mysql_connect("sql-2.ayola.net","mypage152","aqmse2zywf");
if(!$a)
{ echo "Не могу соединится с базой!<br>";
echo mysql_error();
exit;
}
mysql_select_db( "mypage152");
$email = $_POST['email'];
if (!get_magic_quotes_gpc())
{
$email = mysql_escape_string($email);
}
if
( $sql=mysql_query("select id_user from login where email='".$email."'") and (mysql_num_rows($sql)>0) )
{
$to="$email";
$subject="Забыли пароль";
$message="Вы воспользовались функцией забыли пароль
Ваш логин:"$login"
Ваш пароль:"$password"
IP-адрес:$REMOTE_ADDR";
mail ($to,$subject,$message);
echo "<font color = 'red' size = '2' face = 'Tahoma'>
На Вашу электронную почту был выслан пароль
</font>";
}
else
{
echo "<font color = 'red' size = '2' face = 'Tahoma'>
Данный электронный почтовый ящик не зарегистрирован в БД
</font>";
}
?>
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
|
Письмо на емайл не приходит, почему ни могу понять. | |
|
|
|
|
|
|
|
для: pautina
(06.06.2008 в 10:30)
| | Попробуйте вот это
<html>
<body leftmargin="0" rightmargin="0" topmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
<div id="content">
<img src="image/content.gif" width="990" height="100" border="0">
</div>
<div id="content-text">
<form method="post" action="zab_password2.php">
<table cellpadding="5" cellspacing="0">
<tr>
<td>
<h4> Вы забыли пароль?</h4>
Если Вы забыли пароль, введите Ваш электронный адрес, указанный при регистрации, в поле ниже, и пароль будет выслан на него.
</td>
</tr>
<tr>
<td colspan="2">
Электронная почта
<input name="email" type="text" size="12">
<input type="submit" name="zab_password" value="Выслать">
</td>
</tr>
<tr>
<td>
<?php
if(!empty($_POST['zab_password'])){
$a=mysql_connect("sql-2.ayola.net","mypage152","aqmse2zywf");
if(!$a)
{ echo "Не могу соединится с базой!<br>";
echo mysql_error();
exit;
}
mysql_select_db( "mypage152");
$email = $_POST['email'];
if (!get_magic_quotes_gpc())
{
$email = mysql_escape_string($email);
}
$sql=mysql_query("select login,password from login where email='".$email."'");
if(mysql_num_rows($sql)>0)
{
while($row=mysql_fetch_assoc($sql)){
$to=$email;
$subject="Забыли пароль";
$message="Вы воспользовались функцией забыли пароль
Ваш логин:".$row['login']."
Ваш пароль:".$row['password']."
IP-адрес:".$_SERVER['REMOTE_ADDR'];
$headers = "From: $from\r\n";
$headers .= "Content-Type: text/html; charset=windows-1251";
mail($to,$subject,$message,$headers);
echo "<font color = 'red' size = '2' face = 'Tahoma'>
На Вашу электронную почту был выслан пароль
</font>";
}
}else{
echo "<font color = 'red' size = '2' face = 'Tahoma'>
Данный электронный почтовый ящик не зарегистрирован в БД
</font>";
}
}
?>
</td>
</tr>
</table>
</form>
|
Если конечно только не то, что сказал mihdan | |
|
|
|
|
|
|
|
для: pautina
(05.06.2008 в 15:46)
| | Может я не прав но у вас бесплатный хостинг Ayola.ru у них в правилах написано "запрещено: ставить почтовик (например: ZMailCasher), заниматься спамом" Может вас забанили? | |
|
|
|
|
|
|
|
для: mihdan
(06.06.2008 в 10:49)
| | Спасибо за участок кода.
От сервера ayola пришло письмо, в нём указано что SMTP активируется администрацией по запросу пользователя, я связался со службой тех. поддержки. они активировали smtp.
Ещё в письме было указано
SMTP/POP3 сервер: mail.ayola.net
SMTP/POP3 логин: ----
SMTP/POP3 пароль: ----
Может эти данные как то могут мне помочь в решении вопроса по отправке письма. | |
|
|
|
|
|
|
|
для: pautina
(06.06.2008 в 11:41)
| | Поидеи теперь все должно работать
PS: POP3 (англ. Post Office Protocol) — протокол почтового отделения, используется почтовым клиентом для получения сообщений электронной почты с сервера | |
|
|
|
|
|
|
|
для: pautina
(06.06.2008 в 11:41)
| | А здесь больше ничего и не надо, они активировали, значит у вас все должно работать. | |
|
|
|
|
|
|
|
для: AcidTrash
(06.06.2008 в 11:47)
| | Вы знаете я зарегистрировался ещё на 2-х бесплатных хостингах с поддержкой php, mysql. Выставил на данных ресурсах имеющийся модуль авторизации. Но почему то ни работает отправка логина и пароля на емайл. Я использовал тот участок кода (для отправки на емайл) который Вы посоветовали.
<html>
...
<?php
if(!empty($_POST['zab_password'])){
$a=mysql_connect("sql-2.ayola.net","mypage152","aqmse2zywf");
if(!$a)
{ echo "Не могу соединится с базой!<br>";
echo mysql_error();
exit;
}
mysql_select_db( "mypage152");
$email = $_POST['email'];
if (!get_magic_quotes_gpc())
{
$email = mysql_escape_string($email);
}
$sql=mysql_query("select login,password from login where email='".$email."'");
if(mysql_num_rows($sql)>0)
{
while($row=mysql_fetch_assoc($sql)){
$to=$email;
$subject="Забыли пароль";
$message="Вы воспользовались функцией забыли пароль
Ваш логин:".$row['login']."
Ваш пароль:".$row['password']."
IP-адрес:".$_SERVER['REMOTE_ADDR'];
$headers = "From: $from\r\n";
$headers .= "Content-Type: text/html; charset=windows-1251";
mail($to,$subject,$message,$headers);
echo "<font color = 'red' size = '2' face = 'Tahoma'>
На Вашу электронную почту был выслан пароль
</font>";
}
}else{
echo "<font color = 'red' size = '2' face = 'Tahoma'>
Данный электронный почтовый ящик не зарегистрирован в БД
</font>";
}
}
?>
...
</html>
|
При тестировании модуля имею следующее: Всё работает как нужно кроме отправки логина и пароля на почту. Я могу зарегистрироватся, зайти под своим логином и паролем, но письмо получить не выходит, ни может быть ошибка в коде? | |
|
|
|
|
|
|
|
для: pautina
(09.06.2008 в 09:13)
| | Сколько вам говорить отправка почты на бесплатных серверах (особенно через функцию mail()) обычно запрещена самими хостерами. Если у вас работают сокеты на серверы, то можно попробовать отправить почту через них. Если это вас не устроит - смените хостера на платного - там есть все | |
|
|
|
|
|
|
|
для: mihdan
(09.06.2008 в 11:12)
| | Вы знаете к сожелению у меня нет возможности выставить это всё на платном хостинге.
Поэтому я вынужден тестировать пока всё на бесплатном, и вот на этом бесплатном хостинге - www.eomy.net Адрес ресурса http://mypage.croe.net, Указано что функция mail() активна и пользователь может получать письма с сервера на свой емайл, Если это так то возможно ошибка в участке кода который осуществляет отправку письма, но вот только ошибки там я никакой ни нашёл, по моему всё должно работать, но письмо не приходит,
Участок кода такой
<?php
if(!empty($_POST['zab_password']))
{
$a=mysql_connect("localhost","mypage","0RyE5EwX");
if(!$a)
{ echo "Не могу соединится с базой!<br>";
echo mysql_error();
exit;
}
mysql_select_db("mypage");
$email = $_POST['email'];
if (!get_magic_quotes_gpc())
{
$email = mysql_escape_string($email);
}
$sql=mysql_query("select login,password from login where email='".$email."'");
if(mysql_num_rows($sql)>0)
{
while($row=mysql_fetch_assoc($sql))
{
$to=$email;
$subject="Забыли пароль";
$message="Вы воспользовались функцией забыли пароль
Ваш логин:".$row['login']."
Ваш пароль:".$row['password']."
IP-адрес:".$_SERVER['REMOTE_ADDR'];
$headers = "From: $from\r\n";
$headers .= "Content-Type: text/html; charset=windows-1251";
mail($to,$subject,$message,$headers);
echo "<font color = 'red' size = '2' face = 'Tahoma'>
На Вашу электронную почту был выслан пароль
</font>";
}
}
else
{
echo "<font color = 'red' size = '2' face = 'Tahoma'>
Данный электронный почтовый ящик не зарегистрирован в БД
</font>";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: pautina
(09.06.2008 в 11:40)
| | проверьте просто
<?
mail('vashemail', 'tema', 'body');
?>
|
Если сработает - ищите ошибки в коде | |
|
|
|
|
|
|
|
для: mihdan
(09.06.2008 в 11:47)
| | Спасибо Вам большое.
Оказывается функция отправки письма работала только на ресурсе http://www.mypage2.tu2.ru Бесплатный хостинг предоставляет сервер www.hostland.su.
И сдесь оказывается нужно было использовать код без heders, и нужно было поставить закрывающюю кавычку после ip адреса. Письмо с логином и пароль на мыло пришло
Код использовался такой
<?php
if(!empty($_POST['zab_password']))
{
$a=mysql_connect("localhost","mypage21","24mosak666");
if(!$a)
{ echo "Не могу соединится с базой!<br>";
echo mysql_error();
exit;
}
mysql_select_db("mypage21");
$email = $_POST['email'];
if (!get_magic_quotes_gpc())
{
$email = mysql_escape_string($email);
}
$sql=mysql_query("select login,password from login where email='".$email."'");
if(mysql_num_rows($sql)>0)
{
while($row=mysql_fetch_assoc($sql))
{
$to=$email;
$subject="Забыли пароль";
$message=" Вы воспользовались функцией забыли пароль
Ваш логин: ".$row['login']."
Ваш пароль: ".$row['password']."
IP-адрес: ".$_SERVER['REMOTE_ADDR']." ";
//$headers = "From: $from\r\n";
//$headers .= "Content-Type: text/html; charset=windows-1251";
mail($to,$subject,$message);
echo "<font color = 'red' size = '2' face = 'Tahoma'>
На Вашу электронную почту был выслан пароль
</font>";
}
}
else
{
echo "<font color = 'red' size = '2' face = 'Tahoma'>
Данный электронный почтовый ящик не зарегистрирован в БД
</font>";
}
}
?>
|
Спасибо Вам всем большое за содействие. | |
|
|
|
|
|
|
|
для: pautina
(09.06.2008 в 11:40)
| | Еще раз охота повторить - не отправляйте заловки писем в таком виде: $subject="Забыли пароль"; Это может быть причиной того, что ваше письмо не примет почтовый сервер. Можете попросить своего хостера, пусть он вам вышлет логи результатов отправки почты. Просмотрите их. Могу вам сказать, как пример, с которым столкнулся - до поры, до времени с одного сервера с отправкой почты в таком же виде, в котором отсылаете и вы, проблем не было. Затем его почта стала блокироваться такими серверами как Яндекс, Рамблер, Майл... К примеру, в логах на почту для mail.ru ответ гласил, что письмо не принято так как содержит рекламу или ВИРУС!
И еще, если вы отсылаете почту как HTML, то что будет, если ваш клиент принимает ее в виде обычного текста? | |
|
|
|
|
|
|
|
для: sim5
(09.06.2008 в 13:27)
| | Спасибо, письмо пришло. Мне нужно было поставить закрывающиеся кавычки, и убрать headers. | |
|
|
|
|
|
|
|
для: pautina
(09.06.2008 в 13:44)
| | Ну если вы считаете, что у вас проблем не будет, можете проигнорировать мои слова, только как бы вам не наступить на грабли. Остерегайтесь делать то, о чем можете рано или поздно пожалеть. Конфуций | |
|
|
|