Top.Mail.Ru
Ответы
Аватар пользователя
10 лет назад
от
Изменено

Как запретит регистрацию одного мейла дважды на сайте? инфо о пользователях храниться в phpmyadmin

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок
10лет

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

Аватар пользователя
Мыслитель
10лет

1)Создаём тестовую таблицу

CREATE TABLE IF NOT EXISTS `test_table` (
`id` INT(11) UNSIGNED AUTO_INCREMENT,
`email` VARCHAR(255) UNIQUE,
PRIMARY KEY(`id`)) ENGINE= MYISAM

2)Пишем скриптик reg.php

<?php

if(isset($_POST['reg'])) {//Если кнопка нажата

$email = trim(htmlspecialchars($_POST['email']));//Получаем адрес эл. почты

if(!empty($email)) {//Если пользователь ввёл адрес

if(!filter_var($email, FILTER_VALIDATE_EMAIL)) echo 'Некорректный адрес эл. почты';//Проверяем на корректность
else {//Если адрес корректный

$mysqli = new mysqli('localhost', 'root', '', 'db_name');//Соединяемся с БД
$query = $mysqli->query("SELECT `email` FROM `test_table` WHERE `email` = '$email'");//Делаем запрос
if($query->num_rows == 0) echo 'Можете зарегистрироваться';//Если количество строк 0 то адрес можно зарегистрировать
else echo 'Хулиган!! ! Такой адрес уже зарегистрирован';//В противном случии нужно настучать в бубен

}

}

else echo 'Введите адрес эл. почты';

}

?>

<form action="" method="post">
<input type="text" name="email" placehlder="email" />
<input type="submit" name="reg" value="Регистрация" />
</form>

Аватар пользователя
Оракул
10лет

Во-первых, инфо хранится не в phpmyadmin, а в базе данных MySQL - phpmyadmin всего лишь визуализирует работу с базой. Во-вторых, раз уж все равно пользуешься ним, добавь полю email уникальный индекс (UNIQUE), тогда дубликаты будут исключены. Заодно, таким образом ты ускоришь поиск по базе.

Далее, чтобы не просто выкидывать юзера с ошибкой, а вывести ему извещение о том, что он неправ, нужно выбрать свой путь самурая: если ты хочешь повторную регистрацию запретить вообще, проверяй успешно ли прошел запрос INSERT - если не прошел, значит такой email уже есть в базе. Если хочешь перезаписывать пользователя (например, при восстановлении пароля) , используешь REPLACE вместо INSERT - он либо добавит новую запись, либо обновит существующую.

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

Аватар пользователя
Знаток
10лет

$email = $_POST['email'];
$result = mysql_query("SELECT email FROM user WHERE email='$email' ");

$myrow = mysql_fecth_array($result);

if($myrow['email']) // Если существует пользователь с таким email-ом

{

echo "А-я-яй! С такого email-a Вы зарегистрированы. "

}