Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проверка логина и e-mail в регистрации 
V
    Опции темы
sanchos14931
Дата 19.3.2009, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 27.5.2008
Где: Нягань

Репутация: нет
Всего: нет



Здравствуйте форумчане.
Я выкладывал скрипт регистрации кото рый брал с другого источникаю... Вот его совершенствуюю.
Существует форма регистрации 
Код

<form action="registration.php" method="post">
<table>
<tr>
   <td width="139">Логин* :</td>
   <td width="154"><input type="text" name="rLogin" value="" size="25" maxlength="30" /></td>
</tr>
<tr>
   <td>Пароль* :</td>
   <td><input type="password" name="rPass" value="" size="25" maxlength="30" /></td>
</tr>
<tr>
   <td>Повторите пароль* :</td>
   <td><input type="password" name="rPass2" size="25" maxlength="30" /></td>
</tr>
<tr>
   <td>E-mail* :</td>
   <td><input type="text" name="rEmail" value="" size="25" maxlength="30" /></td>
</tr>
<tr>
  <td>ICQ</td>
  <td><label>
    <input name="rICQ" type="text" id="rICQ" size="25" maxlength="9">
  </label></td>
</tr>
<tr>
  <td></td>
  <td><input type="reset" name="reset" value="Очистить" />
    <input type="submit" name="ok" value="Готово" /></td>
</tr>
</table>
</form>




вот код куда он отправляет данные
Код


  <meta http-equiv="refresh" content='3; url= auth.php'>
<?
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   $rLogin = trim($_POST['rLogin']);
   $rPass  = trim($_POST['rPass']);
   $rPass2 = trim($_POST['rPass2']);
   $rEmail = trim($_POST['rEmail']); 
   $rICQ   = trim($_POST['rICQ']);
   if ($rLogin == '') {
      die("Поле 'Логин' не заполнено<br />\n");
   // Логин может состоять из букв, цифр и подчеркивания
   }elseif (!preg_match("/^\w{3,}$/", $rLogin)) {
      die("В поле 'Логин' введены недопустимые символы<br />\n");
   }
   if ($rEmail == '') {
      die("Поле 'E-mail' не заполнено<br />\n");
   // Проверяем e-mail на корректность
   }elseif (!preg_match("/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/", $rEmail)) {
      die("Указанный 'E-mail' имеет недопустимый формат<br />\n");
   }
   if ($rPass == '' || $rPass2 == '') {
      die("Поле 'Пароль' не заполнено<br />\n");
   }elseif($rPass !== $rPass2) {
      die("Поля 'Пароль' и 'Повтор пароля' не совпадают<br />\n");
   // Пароль может состоять из букв, цифр и подчеркивания
   }elseif(!preg_match("/^\w{3,}$/", $rPass)) {
      die("В поле 'Пароль' введены недопустимые символы<br />\n");
   }
   // В базе данных у нас будет храниться md5-хеш пароля
   $mdPassword = $rPass;
   // А также временная метка (зачем - позже)
   $time = time();
   // Устанавливаем соединение с бд(не забудьте подставить ваши значения сервер-логин-пароль)
   $link = mysql_connect('localhost','$user','$password');
   if (!$link) {
      die("Не могу соединиться с базой данных");
   }else {
      // Выбираем базу данных
      mysql_select_db('$name_bd', $link);
      $res = mysql_query ("SELECT * FROM users ", $link);
      $myrow = mysql_fetch_array ($res);
      if ($rLogin == $myrow['login'])
      {
      echo "Такой логин уже существует";
      exit ();
      }
      if ($rEmail == $myrow['email'])
      {
      echo "Такой e-mail уже существует";
      exit ();
}
       // Записываем в базу (не используем addslashes - экранировать нечего)
      mysql_query("INSERT INTO users (login, pass, email, timestamp, ICQ)
                   VALUES ('$rLogin','$mdPassword','$rEmail',$time,'$rICQ')",$link);
     // Получаем Id, под которым юзер добавился в базу
$id = mysql_result(mysql_query("SELECT LAST_INSERT_ID()", $link), 0);
// Составляем "keystring" для активации
$key = md5(substr($rEmail, 0 ,2).$id.substr($rLogin, 0 ,2));
$date = date("d.m.Y",$time);
// Компонуем письмо
$title = 'Потвеждение регистрации на сайте SwSa.ru';
$headers  = "Content-type: text/plain; charset=windows-1251\r\n";
$headers .= "From: Администрация  \r\n";
$subject = '=?koi8-r?B?'.base64_encode(convert_cyr_string($title, "w","k")).'?=';
$letter = <<< LTR
   Здравствуйте!
   
   Ваши регистрационные данные:
      логин: $rLogin
      пароль: $rPass
   
   Для активации аккаунта вам следует пройти по ссылке:
   http://registr/key.php?login=$rLogin&key=$key
   
   Данная ссылка будет доступна в течении 5 дней.
   
   $date
LTR;
// Отправляем письмо
if (!mail($rEmail, $subject, $letter, $headers)) {
   // Если письмо не отправилось, удаляем юзера из базы
   mysql_query("DELETE FROM users WHERE login='".$login."' LIMIT 1", $link);
   echo 'Произошла ошибка при отправке письма. Попробуйте зарегистрироваться еще раз.';
}else {
   echo 'Вы успешно зарегистрировались в системе. На указанный вами
   e-mail было отправлено письмо со ссылкой для активации аккаунта.
   У вас 5 дней!';
}
      mysql_close($link);
   }
}
?>




все проверяю ошибок нет, но когда я пробую занести базу с имеющемся уже в ней логином или e-mail то он пропускает это 
Код

$res = mysql_query ("SELECT * FROM users ", $link);
      $myrow = mysql_fetch_array ($res);
      if ($rLogin == $myrow['login'])
      {
      echo "Такой логин уже существует";
      exit ();
      }
      if ($rEmail == $myrow['email'])
      {
      echo "Такой e-mail уже существует";
      exit ();
}


 
и добавляет в базу пользователя с уже имеющемся логином или e-mail ' ом
как исправить???


mysql_erorr пробовал, пишет что ошибок нет



заранее благодарен
PM MAIL WWW ICQ   Вверх
enof
Дата 19.3.2009, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Код

$res = mysql_query ("SELECT * FROM users ", $link);
$myrow = mysql_fetch_array ($res);
if ($rLogin == $myrow['login'])
{
    echo "Такой логин уже существует";
    exit ();
}

че за бред?
Цитата(sanchos14931 @  19.3.2009,  19:22 Найти цитируемый пост)
Я выкладывал скрипт регистрации кото рый брал с другого источника

зачем?
PM MAIL ICQ Skype   Вверх
sanchos14931
Дата 19.3.2009, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 27.5.2008
Где: Нягань

Репутация: нет
Всего: нет



Цитата(enof @  19.3.2009,  19:31 Найти цитируемый пост)
че за бред?

ну я выбрал из базы из таблицы users 
все поля...
потом переделал в массив 
и вывел если переменная $rEmail равна $myrow['email'] то такой логин существует, и так же с логином



enof, а какие еще варианты сделать проверку
PM MAIL WWW ICQ   Вверх
enof
Дата 19.3.2009, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Цитата(sanchos14931 @  19.3.2009,  19:40 Найти цитируемый пост)
все поля...
потом переделал в массив 
и вывел

в каком месте? даже если бы сделали правильно, то представте, что у вас очень много пользователей smile 
Цитата(sanchos14931 @  19.3.2009,  19:40 Найти цитируемый пост)
какие еще варианты

читать мануал.
вот недавно тема была
http://forum.vingrad.ru/forum/topic-251168/kw-mysql.html


Это сообщение отредактировал(а) enof - 19.3.2009, 19:54
PM MAIL ICQ Skype   Вверх
sanchos14931
Дата 19.3.2009, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 27.5.2008
Где: Нягань

Репутация: нет
Всего: нет



ну из темы http://forum.vingrad.ru/forum/topic-251168/kw-mysql.html я понял что можно подсчитать сколько записей есть в таблице, но как использовать это в моем случае???
PM MAIL WWW ICQ   Вверх
enof
Дата 19.3.2009, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Цитата(sanchos14931 @  19.3.2009,  20:07 Найти цитируемый пост)
но как использовать это в моем случае??? 

издеваетесь? smile  smile 
если записей большем чем ноль, т.е. 1, то такой логин есть, если записей 0, то такого логина нет.
PM MAIL ICQ Skype   Вверх
sanchos14931
Дата 19.3.2009, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 27.5.2008
Где: Нягань

Репутация: нет
Всего: нет



я сейчас очень сильно туплю  smile  не не могли бы вы привести пример, извините за издевательство  smile 
PM MAIL WWW ICQ   Вверх
enof
Дата 19.3.2009, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Код

$result = mysql_query("SELECT COUNT(*) as `cnt` FROM `users` WHERE `login`='$rLogin'");
if(mysql_result($result, 0, 'cnt') > 0)
    echo "Такой логин уже есть";


Это сообщение отредактировал(а) enof - 19.3.2009, 20:22
PM MAIL ICQ Skype   Вверх
sanchos14931
Дата 20.3.2009, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 27.5.2008
Где: Нягань

Репутация: нет
Всего: нет



enof, спасибо большое... smile все работает smile 
PM MAIL WWW ICQ   Вверх
azesmcar
Дата 20.3.2009, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



sanchos14931, вообще в базе делают логин уникальным ключом, и емейл тоже.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1386 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.