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

Форум PHP

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

 

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

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

тема: Вопрос по модулю регистрации пользователей.
 
 автор: pautina   (20.05.2008 в 13:19)   письмо автору
 
 

Здравствуйте уважаемое сообщество. Посмотрите пожалуйста данный участок кода.

<?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("localhost","root","");
          if(!
$a)
        { echo 
"Не могу соединится с базой ".login."!<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) 
                    )"
);  
        
$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 = 'test1.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>";

   }

?>


При нажатии на кнопку регистрации на сайте выполняется данный участок кода test.php.
Форма включает 4 поля - логин, email, пароль, подтверждение пароля.
После введения данных в форму производится проверка введённых в форму полей при помощи регулярных выражений.
Если данные введены правиьно происходит запись этих данных в таблицу login, бд login.

{ $a=mysql_connect("localhost","root",""); 
if(!$a) 
{ echo "Не могу соединится с базой ".login."!<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) 
)"); 
$save = "INSERT INTO login VALUES (0, 
'$login', 
'$email', 
'$password')"; 
$temp = mysql_query($save); 

Вы ни скажете как сделать проверку на дублирование данных, чтобы не было одинаковых имён логина, или email-ов. Т.е. если пользователь регистрируется перед тем как записать данные в таблицу, должна осуществлятся проверка того логина который он ввёл с теми логинами которые уже содержатся в таблице login. Как эту проверку записать программным кодом. Заранее большое спасибо.

   
 
 автор: KPETuH   (20.05.2008 в 13:22)   письмо автору
 
   для: pautina   (20.05.2008 в 13:19)
 

нужно делать выборку из базы по логину и если хоть одна запись в базе есть значит регистрировать нельзя...

вот этот участок лишний
<?
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 mysql_num_rows($sql)>0){
echo 
"Пользователь с таким логином уже существет";
}
else{
//тут идет код записи в базу
}

   
 
 автор: sim5   (20.05.2008 в 13:25)   письмо автору
 
   для: pautina   (20.05.2008 в 13:19)
 

Просто перед тем как заносить в базу, делайте запрос на поиск такого логина в базе, если нет записывать, если есть, просить ввести новый. А вот это для чего вы делаете до проверки?:

$login = htmlspecialchars(stripslashes(trim($_POST['login'])));
$email = htmlspecialchars(stripslashes(trim($_POST['email'])));
$password = htmlspecialchars(stripslashes(trim($_POST['password'])));

Кстати, вы думаете это нужно будет и после проверки?

   
 
 автор: pautina   (20.05.2008 в 13:36)   письмо автору
 
   для: sim5   (20.05.2008 в 13:25)
 

А что участок кода по созданию БД и структуры таблицы разве является лишним? Если нет БД и структуры таблицы куда тогда запишутся значения, в пустоту что ли.

   
 
 автор: KPETuH   (20.05.2008 в 13:38)   письмо автору
 
   для: pautina   (20.05.2008 в 13:36)
 

просто получается что вы все время будете создавать таблицу при регистрации, на само же деле таблица создается один раз и не из скрипта регистрациии точно :) ну и база соответсвенно :)

вот тут погорячился это нужно :)
<?
mysql_select_db
"login");

   
 
 автор: pautina   (20.05.2008 в 13:43)   письмо автору
 
   для: KPETuH   (20.05.2008 в 13:38)
 

Да правда в данном случае таблица и бд будет создаватся всегда при регистрации нового пользователя и это ни совсем правильно.
А как мне создать таблицу не из скрипта регистрации, ни подскажете?

   
 
 автор: KPETuH   (20.05.2008 в 13:49)   письмо автору
 
   для: pautina   (20.05.2008 в 13:43)
 

ну например засуньте в один скрипт код создания всех таблиц и один раз его запустите на выполнение :) или используйте такой инструмент как phpmyadmin...

   
 
 автор: pautina   (20.05.2008 в 15:22)   письмо автору
 
   для: KPETuH   (20.05.2008 в 13:49)
 

А Вы ни могли бы привести весь код, с проверкой на логин. Я конечно извиняюсь. Запутался в скобках.

   
 
 автор: mihdan   (20.05.2008 в 23:11)   письмо автору
 
   для: pautina   (20.05.2008 в 15:22)
 

Возможно вас заинтересует http://php-myadmin.ru/

   
 
 автор: KPETuH   (21.05.2008 в 07:38)   письмо автору
 
   для: pautina   (20.05.2008 в 15:22)
 

ну исходя из вашего кода то примерно так:
<?
if ($sql=mysql_query("select id_user from login where login='".$login."'") and mysql_num_rows($sql)>0){ 
echo 
"Пользователь с таким логином уже существет"

else{ 
    
$save "INSERT INTO login VALUES (0,'$login','$email','$password')"
    
$temp mysql_query($save); 
}

   
 
 автор: pautina   (21.05.2008 в 11:09)   письмо автору
 
   для: KPETuH   (21.05.2008 в 07:38)
 

Вы ни могли бы протестировать данный участок кода. Здесь внесено условие проверки на логин.

<?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 
 { 
if ((
$sql=mysql_query("select id_user from login where login='".$login."'")) and (mysql_num_rows($sql)>      0))
    {  
     echo 
"Пользователь с таким логином уже существет";  
    }  
  }
   else 
    {    
$a=mysql_connect("localhost","root",""); 
          if(!
$a
        { echo 
"Не могу соединится с базой ".login."!<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)  
                    )"
);  
        
$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 = 'test1.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>"

   } 
 
?> 

   
 
 автор: KPETuH   (21.05.2008 в 11:56)   письмо автору
 
   для: pautina   (21.05.2008 в 11:09)
 


<?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("localhost","root","");  
          if(!
$a)  
        { echo 
"Не могу соединится с базой!<br>";  
          echo 
mysql_error();  
          exit;  
        }
    
mysql_select_db"login");  
if ((
$sql=mysql_query("select id_user from login where login='".$login."'")) and (mysql_num_rows($sql)>      0)) 
    {   
     echo 
"Пользователь с таким логином уже существет";   
    }   
  } 
   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 = 'test1.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>";  

   }  
  
?>

   
 
 автор: pautina   (21.05.2008 в 12:26)   письмо автору
 
   для: KPETuH   (21.05.2008 в 11:56)
 

Здесь ругается на ошибку в 133 строке.

   
 
 автор: KPETuH   (21.05.2008 в 12:48)   письмо автору
 
   для: pautina   (21.05.2008 в 12:26)
 

там неправильно скобочка стоит фигурная.... оттуда уберите в 154 поставьте

   
 
 автор: pautina   (21.05.2008 в 13:21)   письмо автору
 
   для: KPETuH   (21.05.2008 в 12:48)
 

Да теперь логин проверяется на дублирование. Но данный модуль всё равно является не полным т.к. нужно сделать проверку на совпадение e-mail, ну и рассмотреть случай когда и email и логин одинаковы.
После проверки на дублирование логина

if (($sql=mysql_query("select id_user from login where login='".$login."'")) 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>";       
     
    }  

Я записал код проверки на дублирование email

if (($sql=mysql_query("select id_user from email where login='".$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>  
              email с таким именем уже существует в БД, введите другой email<p>   
              Чтобы внести исправления надо вернуться <a href = 'javascript:history.back(1)' class = 'enter'>НАЗАД</a>   
              </font>   
              </center>";       
     
    }  

И при проверке скрипта, пользоветель всё равно зарегистрировался, хотя e-mail был такой же как в уже имеющийся в БД.
Посмотрите пожалуйста участок кода проверки на дублирование e-mail.

   
 
 автор: pautina   (21.05.2008 в 13:29)   письмо автору
 
   для: pautina   (21.05.2008 в 13:21)
 

Извините это я ошибся, надо было писать

if (($sql=mysql_query("select id_user from login where email='".$email."'")) and (mysql_num_rows($sql)>      0))  

   
 
 автор: KPETuH   (21.05.2008 в 13:34)   письмо автору
 
   для: pautina   (21.05.2008 в 13:29)
 

можно так

"select id_user from login where login='".$login."' or email='".$email."'"

   
 
 автор: pautina   (21.05.2008 в 13:58)   письмо автору
 
   для: KPETuH   (21.05.2008 в 13:34)
 

Да так можно но тогда как правильно описать вывод сообщения пользоветелю.

   
 
 автор: pautina   (21.05.2008 в 13:46)   письмо автору
 
   для: pautina   (21.05.2008 в 13:29)
 

Для поверки логина и email на дублирование я использую следующий участок кода.

if (($sql=mysql_query("select id_user from login where login='".$login."'")) 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>";       
     
    }  

if (($sql=mysql_query("select id_user from login where email='".$email."'")) 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>";       
     
    }  

И при тестировании скрипта имею следующее:
- если login и email одинаковы (т.е. такие значения уже есть в базе данных), то всё нормально
- если login дублируется a email разный то выводится сообщение о дублировании login и надпись, что пользователь успешно зарегистрирован, почему
- если дублируется email а логин разный то тоже всё норально
Почему при дублировании логина и разных email выходит сообщение что пользователь успешно зарегистрировался.

   
 
 автор: KPETuH   (21.05.2008 в 13:59)   письмо автору
 
   для: pautina   (21.05.2008 в 13:46)
 

используйте запрос написаный мною выше...

   
 
 автор: pautina   (21.05.2008 в 14:11)   письмо автору
 
   для: KPETuH   (21.05.2008 в 13:59)
 

Если использовать запрос

"select id_user from login where login='".$login."' or email='".$email."'"

Как тогда пользователь узнает что именно у него продублировалось.

   
 
 автор: KPETuH   (21.05.2008 в 14:18)   письмо автору
 
   для: pautina   (21.05.2008 в 14:11)
 

так ли это важно?, если все же важно то вам нужно правильно выставить условия с предыдущими запросами так как сокрее всего в if или последовательности вы и накосячили

   
 
 автор: pautina   (21.05.2008 в 14:40)   письмо автору
 
   для: KPETuH   (21.05.2008 в 14:18)
 

Хотелось бы чтобы всё работало правильно.
ни могу понять.
Задана программная инструкция что если логин дублируется, то вывести сообщение что такой логин уже есть, почему происходит запись в базу.
Могу я выставить Вам весь отрезок кода. Может посмотрите.

   
 
 автор: KPETuH   (21.05.2008 в 14:49)   письмо автору
 
   для: pautina   (21.05.2008 в 14:40)
 

прикрепите в виде файла, если никто до меня не посмотрит то завтра отвечу...

   
 
 автор: pautina   (21.05.2008 в 15:00)   письмо автору
9.5 Кб
 
   для: KPETuH   (21.05.2008 в 14:49)
 

Большое Вам спасибо за понимание.
Ещё раз опишу в чем проблема в коде.
- если логин и емайл одинаковы выводится сообщение что данные значения уже зарегистрированны и нужно вернутся на шаг назад (в этом случае всё нормально)
- если емайл повторяется а логин нет, то тоже всё хорошо
- а вот в случае если логин дублируется а емайл нет, то выводится сообщение что логин уже содержится в бд, но при этом пользователь всё равно регистрируется, Почему.

   
 
 автор: KPETuH   (22.05.2008 в 08:07)   письмо автору
 
   для: pautina   (21.05.2008 в 15:00)
 

в строке 148 напишите else

   
 
 автор: pautina   (22.05.2008 в 11:08)   письмо автору
 
   для: KPETuH   (22.05.2008 в 08:07)
 

спасибо очень помогло.
Полная проверка дублирования логинов и емайл выглядит так.

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>";        
      
    }     

   

   
 
 автор: pautina   (22.05.2008 в 12:06)   письмо автору
 
   для: pautina   (22.05.2008 в 11:08)
 

А как решить такой вопрос.
Чтобы при успешной регистрации пользователя на его email высылалось бы сообщение о том что пользователь зарегистрировался на определённом сайте, и приходила бы ссылка зайдя на которою пользователь бы был активирован.

   
 
 автор: KPETuH   (22.05.2008 в 12:45)   письмо автору
 
   для: pautina   (22.05.2008 в 12:06)
 

воспользоваться поиском по данному форуму :)

   
 
 автор: pautina   (22.05.2008 в 13:40)   письмо автору
 
   для: KPETuH   (22.05.2008 в 12:45)
 

А вы ни скажете как осуществить программный код который бы по заданному логину, высылал бы на емайл пароль пользователя.
Т.е есть на сайте ссылка "забыли пароль" пользователь заходит на неё вводит свой логин нажимает кнопку "ок". После чего на его емайл высылается пароль который пользователь вводил при регистрации.

   
 
 автор: KPETuH   (22.05.2008 в 13:49)   письмо автору
 
   для: pautina   (22.05.2008 в 13:40)
 

делаете выборку пароля и мыла из базы по логину, потом с помощью функции mail отправляете письмо с паролем...

   
 
 автор: pautina   (22.05.2008 в 15:01)   письмо автору
 
   для: KPETuH   (22.05.2008 в 13:49)
 

Вы ни могли бы посмотреть следующий участок кода.

<html> ... <body>
<?php
$a
=mysql_connect("localhost","root","");   
          if(!
$a)   
        { echo 
"Не могу соединится с базой!<br>";   
          echo 
mysql_error();   
          exit;   
        } 
        
mysql_select_db"login"); 
if 
(
$sql=mysql_query("select id_user from login where login='".$login."' and password='".$password."'") and (mysql_num_rows($sql)>      0))     
{
echo 
"Вы вошли как пользователь "$login" " 
}
?>
</body></html>

Ни пойму почему ни выводится значение логина. Код вроде правильный.

   
Rambler's Top100
вверх

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