Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: модуль авторизации
 
 автор: pautina   (05.06.2008 в 15:46)   письмо автору
 
 

Уважаемое сообщество. У меня такой вопрос по модулю авторизации пользователей.
Я использовал такой код

<!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 Ссылка зарегистрироватся. Проблема такая при попытке зарегистрироватся и заполнении всех необходимых полей формы выходит сообщение о том что поле повторите пароль является пустым, хотя поле повторите пароль было заполнено, Почему выходит такая ошибка. При проверке на своем компьютере дома регистрация проходит успешно.

   
 
 автор: AcidTrash   (05.06.2008 в 15:57)   письмо автору
 
   для: 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 не корректна.

   
 
 автор: pautina   (05.06.2008 в 16:23)   письмо автору
 
   для: AcidTrash   (05.06.2008 в 15:57)
 

Спасибо всё заработало.

PS
А какую проверку на дублирование email и логина использовали бы Вы?
Для логина и пароля мне кажется достаточно и 30 символов, зачем больше то?

   
 
 автор: AcidTrash   (05.06.2008 в 16:29)   письмо автору
 
   для: pautina   (05.06.2008 в 16:23)
 

>А какую проверку на дублирование email и логина использовали бы Вы?
Про email я имел ввиду неряшливость регулярного выражения, оно у вас много чего лишнего пропустит и много чего валидного не пропустит.

>Для логина и пароля мне кажется достаточно и 30 символов, зачем больше то?
Здесь, я имел ввиду не про длину логина и пароля, а про набор символов который разрешен.

P.S. Насчет дублирования.
Перед заносом данных в БД, сделать запрос к базе на существование введенных данных и если результат будет true, выдать пользователю, что такой логин существует.
Проверка на дублирование email, в данном примере не имеет смысла.

   
 
 автор: pautina   (05.06.2008 в 17:10)   письмо автору
 
   для: 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 выключен. Что мне изменить чтоб я смог зайти.

   
 
 автор: AcidTrash   (05.06.2008 в 17:23)   письмо автору
 
   для: 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']);
    }
?>

   
 
 автор: pautina   (05.06.2008 в 17:36)   письмо автору
 
   для: 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>в БД";
}
?>

Всё равно не работает, что я ни так записал.

   
 
 автор: AcidTrash   (05.06.2008 в 17:41)   письмо автору
 
   для: 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 на пустоту, прежде чем делать запрос.

   
 
 автор: pautina   (05.06.2008 в 18:05)   письмо автору
 
   для: 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 будут другими)

   
 
 автор: AcidTrash   (05.06.2008 в 23:12)   письмо автору
 
   для: pautina   (05.06.2008 в 18:05)
 

>Вход пользователя будет осуществлятся на домашнем компьютере.
И что? Все пользователи вашей системы входят откуда угодно, хоть с домашнего, хоть не с домашнего. :)

>(атрибуты mysql_connect будут другими)
Они будут такими же, пока вы сами не измените.

   
 
 автор: pautina   (06.06.2008 в 09:38)   письмо автору
 
   для: 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'>
          &nbsp; &nbsp; На Вашу электронную почту был выслан пароль
          </font>"

  }
else
{
echo 
"<font color = 'red' size = '2' face = 'Tahoma'>
      &nbsp; &nbsp; Данный электронный почтовый ящик не зарегистрирован в БД
      </font>"
;
}
?>

   
 
 автор: AcidTrash   (06.06.2008 в 09:57)   письмо автору
 
   для: pautina   (06.06.2008 в 09:38)
 

Во первых зачем в строке $to=".$email."; точки перед и после $email, они то и мешают.
Во вторых я вообще не понимаю логику вашего скрипта.

   
 
 автор: pautina   (06.06.2008 в 10:30)   письмо автору
 
   для: 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>&nbsp; &nbsp;Вы забыли пароль?</h4>
Если Вы забыли пароль, введите Ваш электронный адрес, указанный при регистрации, в поле ниже, и пароль будет выслан на него.
</td>
</tr>
<tr>
<td colspan="2">
&nbsp; &nbsp;Электронная почта
&nbsp; &nbsp;<input name="email" type="text" size="12">
&nbsp; &nbsp;<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>&nbsp; &nbsp;Вы забыли пароль?</h4>
Если Вы забыли пароль, введите Ваш электронный адрес, указанный при регистрации, в поле ниже, и пароль будет выслан на него.
</td>
</tr>
<tr>
<td colspan="2">
&nbsp; &nbsp;Электронная почта
&nbsp; &nbsp;<input name="email" type="text" size="12">
&nbsp; &nbsp;<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'>
          &nbsp; &nbsp; На Вашу электронную почту был выслан пароль
          </font>"

  }
else
{
echo 
"<font color = 'red' size = '2' face = 'Tahoma'>
      &nbsp; &nbsp; Данный электронный почтовый ящик не зарегистрирован в БД
      </font>"
;
}
?>
</td>
</tr>
</table>
</form>

</div>
</body>
</html>

Письмо на емайл не приходит, почему ни могу понять.

   
 
 автор: AcidTrash   (06.06.2008 в 11:04)   письмо автору
 
   для: 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>&nbsp; &nbsp;Вы забыли пароль?</h4>
Если Вы забыли пароль, введите Ваш электронный адрес, указанный при регистрации, в поле ниже, и пароль будет выслан на него.
</td>
</tr>
<tr>
<td colspan="2">
&nbsp; &nbsp;Электронная почта
&nbsp; &nbsp;<input name="email" type="text" size="12">
&nbsp; &nbsp;<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'>
          &nbsp; &nbsp; На Вашу электронную почту был выслан пароль
          </font>"
;

  }
}else{

echo 
"<font color = 'red' size = '2' face = 'Tahoma'>
      &nbsp; &nbsp; Данный электронный почтовый ящик не зарегистрирован в БД
      </font>"
;
}
}
?>
</td>
</tr>
</table>
</form>


Если конечно только не то, что сказал mihdan

   
 
 автор: mihdan   (06.06.2008 в 10:49)   письмо автору
 
   для: pautina   (05.06.2008 в 15:46)
 

Может я не прав но у вас бесплатный хостинг Ayola.ru у них в правилах написано "запрещено: ставить почтовик (например: ZMailCasher), заниматься спамом" Может вас забанили?

   
 
 автор: pautina   (06.06.2008 в 11:41)   письмо автору
 
   для: mihdan   (06.06.2008 в 10:49)
 

Спасибо за участок кода.
От сервера ayola пришло письмо, в нём указано что SMTP активируется администрацией по запросу пользователя, я связался со службой тех. поддержки. они активировали smtp.
Ещё в письме было указано
SMTP/POP3 сервер: mail.ayola.net
SMTP/POP3 логин: ----
SMTP/POP3 пароль: ----
Может эти данные как то могут мне помочь в решении вопроса по отправке письма.

   
 
 автор: mihdan   (06.06.2008 в 11:45)   письмо автору
 
   для: pautina   (06.06.2008 в 11:41)
 

Поидеи теперь все должно работать

PS: POP3 (англ. Post Office Protocol) — протокол почтового отделения, используется почтовым клиентом для получения сообщений электронной почты с сервера

   
 
 автор: AcidTrash   (06.06.2008 в 11:47)   письмо автору
 
   для: pautina   (06.06.2008 в 11:41)
 

А здесь больше ничего и не надо, они активировали, значит у вас все должно работать.

   
 
 автор: pautina   (09.06.2008 в 09:13)   письмо автору
 
   для: 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'> 
          &nbsp; &nbsp; На Вашу электронную почту был выслан пароль 
          </font>"


  } 
}else{ 

echo 
"<font color = 'red' size = '2' face = 'Tahoma'> 
      &nbsp; &nbsp; Данный электронный почтовый ящик не зарегистрирован в БД 
      </font>"



?> 
...
</html>

При тестировании модуля имею следующее: Всё работает как нужно кроме отправки логина и пароля на почту. Я могу зарегистрироватся, зайти под своим логином и паролем, но письмо получить не выходит, ни может быть ошибка в коде?

   
 
 автор: mihdan   (09.06.2008 в 11:12)   письмо автору
 
   для: pautina   (09.06.2008 в 09:13)
 

Сколько вам говорить отправка почты на бесплатных серверах (особенно через функцию mail()) обычно запрещена самими хостерами. Если у вас работают сокеты на серверы, то можно попробовать отправить почту через них. Если это вас не устроит - смените хостера на платного - там есть все

   
 
 автор: pautina   (09.06.2008 в 11:40)   письмо автору
 
   для: 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'> 
          &nbsp; &nbsp; На Вашу электронную почту был выслан пароль 
          </font>"


  } 
 }
else
 { 

echo 
"<font color = 'red' size = '2' face = 'Tahoma'> 
      &nbsp; &nbsp; Данный электронный почтовый ящик не зарегистрирован в БД 
      </font>"

 } 

?>

   
 
 автор: mihdan   (09.06.2008 в 11:47)   письмо автору
 
   для: pautina   (09.06.2008 в 11:40)
 

проверьте просто


<?
mail
('vashemail''tema''body');
?>


Если сработает - ищите ошибки в коде

   
 
 автор: pautina   (09.06.2008 в 13:38)   письмо автору
 
   для: 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'> 
          &nbsp; &nbsp; На Вашу электронную почту был выслан пароль 
          </font>"


  } 
 }
else
 { 

echo 
"<font color = 'red' size = '2' face = 'Tahoma'> 
      &nbsp; &nbsp; Данный электронный почтовый ящик не зарегистрирован в БД 
      </font>"

 } 

?>

Спасибо Вам всем большое за содействие.

   
 
 автор: sim5   (09.06.2008 в 13:27)   письмо автору
 
   для: pautina   (09.06.2008 в 11:40)
 

Еще раз охота повторить - не отправляйте заловки писем в таком виде: $subject="Забыли пароль"; Это может быть причиной того, что ваше письмо не примет почтовый сервер. Можете попросить своего хостера, пусть он вам вышлет логи результатов отправки почты. Просмотрите их. Могу вам сказать, как пример, с которым столкнулся - до поры, до времени с одного сервера с отправкой почты в таком же виде, в котором отсылаете и вы, проблем не было. Затем его почта стала блокироваться такими серверами как Яндекс, Рамблер, Майл... К примеру, в логах на почту для mail.ru ответ гласил, что письмо не принято так как содержит рекламу или ВИРУС!
И еще, если вы отсылаете почту как HTML, то что будет, если ваш клиент принимает ее в виде обычного текста?

   
 
 автор: pautina   (09.06.2008 в 13:44)   письмо автору
 
   для: sim5   (09.06.2008 в 13:27)
 

Спасибо, письмо пришло. Мне нужно было поставить закрывающиеся кавычки, и убрать headers.

   
 
 автор: sim5   (09.06.2008 в 14:06)   письмо автору
 
   для: pautina   (09.06.2008 в 13:44)
 

Ну если вы считаете, что у вас проблем не будет, можете проигнорировать мои слова, только как бы вам не наступить на грабли. Остерегайтесь делать то, о чем можете рано или поздно пожалеть. Конфуций

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования