За последние 24 часа нас посетили 16645 программистов и 1679 роботов. Сейчас ищет 971 программист ...

активация аккаунта через e-mail

Тема в разделе "PHP для новичков", создана пользователем bboyandry, 5 май 2009.

  1. bboyandry

    bboyandry Активный пользователь

    С нами с:
    25 мар 2009
    Сообщения:
    24
    Симпатии:
    0
    Решил сделать активацию пользователя но не догоняю как это можно реализовать. Может кто подскажет как это можно сделать ? Код самой регистрации таков.

    PHP:
    1.  
    2. <?
    3.  
    4.  
    5.   include "/home/localhost/www/phpsite/blocks/connect.php";
    6.  
    7.        $login=$_POST['login'];
    8.        $pass1=$_POST['pass1'];
    9.        $pass2=$_POST['pass2'];
    10.       $regemail=$_POST['regemail'];
    11.       $realname=$_POST['realname'];
    12.       $about=$_POST['about'];
    13.       $country=$_POST['country'];
    14.       $city=$_POST['city'];
    15.  
    16. if (isset($login) && isset($pass1) && isset($pass2) && isset($regemail) && isset($realname) && isset($about) && isset($country) && isset($city) ) {
    17.   if (!empty($login) && !empty($pass1) && !empty($pass2) && !empty($regemail) ) {
    18.             $sql=mysql_query("SELECT * FROM pref_auth WHERE LOWER(login)='".strtolower($login)."'");
    19.             $string = $regemail;
    20.             if (preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$string)) {
    21.                 if (!mysql_num_rows($sql)) {
    22.                     if (strlen($pass1)>=6) {
    23.                         $pass1=md5($pass1);
    24.                         $pass2=md5($pass2);
    25.                         if (strlen($login)>=2) {
    26.                             if (preg_match('/^[a-z\d_]{4,28}$/i', $login)){
    27.                                 if ($pass1==$pass2) {
    28.     if(mysql_query("INSERT INTO pref_auth VALUES(NULL,'$login','$pass1', '$regemail', '$realname', '$about', '$country', '$city')")   ) {
    29.                                       $error="Вы успешно зарегистрированны";
    30.                                      
    31.                                   }else{
    32.                                        $error="Системная ошибка, не могу занести информацию в БД";
    33.                                   }
    34.                                 }else {
    35.                                     $error="Ошибка: Пароли не совпадают";
    36.                                 }
    37.                             }else {
    38.                                 $error="Ошибка: Name должен быть написан транслитом";
    39.                             }
    40.                         }else {
    41.                             $error="Ошибка: Минимальная длина Name 2 символа ";
    42.                         }
    43.                     }else {
    44.                         $error="Ошибка: Минимальная длина пароля 6 символа";
    45.                     }
    46.                 } else {
    47.                     $error="Ошибка: Такой пользователь уже существует";
    48.                 }
    49.             }
    50.             else {
    51.                 $error="Ошибка: Задан не верный формат E-Mail (Пример: <b>petja@gmail.com)";
    52.             }
    53.         }else {
    54.           $error="Ошибка: Обязательные поля нужно заполнить";
    55.         }
    56.      }
    57.       print "
    58.       ".($error?"<div align=center width=60% style='border:1px solid red'>$error</div><br>":"")."
    59.          //сама форма заполнения
    60.         ;
    61.         ?>
    62.  
    63.  
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    bboyandry
    Скажи еще что сам эту регистрацию написал ;-)
     
  3. bboyandry

    bboyandry Активный пользователь

    С нами с:
    25 мар 2009
    Сообщения:
    24
    Симпатии:
    0
    [vs]
    скажу что нет :)
     
  4. Cron

    Cron Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    PHP:
    1.                                        $error="Вы успешно зарегистрированны";
    2.                                      
    3.                                    }else{
    4.                                        $error="Системная ошибка, не могу занести информацию в БД";
    5.                                    }
    6.                                  }else {
    7.                                      $error="Ошибка: Пароли не совпадают";
    8.                                  }
    9.                              }else {
    10.                                  $error="Ошибка: Name должен быть написан транслитом";
    11.                              }
    12.                          }else {
    13.                              $error="Ошибка: Минимальная длина Name 2 символа ";
    14.                          }
    15.                      }else {
    16.                          $error="Ошибка: Минимальная длина пароля 6 символа";
    17.                      }
    18.                  } else {
    19.                      $error="Ошибка: Такой пользователь уже существует";
    20.                  }
    21.              }
    22.              else {
    23.                  $error="Ошибка: Задан не верный формат E-Mail (Пример: <b>petja@gmail.com)";
    24.              }
    25.          }else {
    26.            $error="Ошибка: Обязательные поля нужно заполнить";
    27.          }
    28.      }
    29.  
    Симпатичная лесенка.. :)
     
  5. bboyandry

    bboyandry Активный пользователь

    С нами с:
    25 мар 2009
    Сообщения:
    24
    Симпатии:
    0
    а это плохо разве ? :)

    Может кто по теме напишит :( ?
     
  6. Cron

    Cron Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    Да это плохо. Это очень трудно читать, еще труднее понять и почти невозможно редактировать.
     
  7. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    добавляешь поле active и там отмечаешь товарища как pending, отправляешь ему мыло со ссылкой http://example.com/activate.php?key= и тут как фантазии хватит, проще всего md5(mysql_insert_id());
    Когда человек проходит по ссылке, проверяешь есть ли в базе запись с MD5(id) из его ссылки и меняешь pending на active
     
  8. Cron

    Cron Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    также отмечаешь в базе время, когда отправил письмо с ссылкой. В письме пишешь, что ссылка действует 3 суток.
    Когда пользователь переходит, отмеряешь сколько времени прошло. Если вложился - молодец. Если нет - пишешь, что ссылка устарела и отправлена новая. Тут возвращаешься к началу алгоритма и отправляешь письмо, но уже с какой-нибудь другой ссылкой.
     
  9. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    В этой регистрации не предусмотрено такой функции, чтобы её сделать, надо знать PHP и хоть немного SQL.
     
  10. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    [vs]
    зато есть весёлный инклюд
    include "/home/localhost/www/phpsite/blocks/connect.php";