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

HTML+CSS+JavaScript

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

 

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

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

тема: Регистрация в модальном окне с проверкой
 
 автор: sedoy   (09.08.2014 в 14:03)   письмо автору
 
 

Ребята, есть php код регистрации, как реализовать проверку(выпадающее сообщение и подцветка input) не закрывая модальное окно с формой регистрации, немного погуглив, я наткнулся на ajax, но у меня это не срабатывает.

Прошу помочь с написанием))

Вот код регистрации на php:
    $error = ''; 
    
    $login = mysql_real_escape_string(trim($_POST['login']));
    $pass = trim($_POST['pass']);
    $pass2 = trim($_POST['pass2']);
    $email = mysql_real_escape_string(trim($_POST['email']));

    
    if(empty($login)) $error .= '<li>Не указан логин</li>';
    if(empty($pass)) $error .= '<li>Не указан пароль</li>';
    if(empty($pass2)) $error .= '<li>Введите подтверждение пароля</li>';
    if(empty($email)) $error .= '<li>Не указан Email</li>';

    
    if(empty($error)){

        $sql = "SELECT customer_id FROM customers WHERE email = '$email' LIMIT 1";
        $result = mysql_query($sql) or die(mysql_error());
        $row = mysql_num_rows($result); 
        if($row){

            $_SESSION['reg']['res'] = "<div class='error'>Пользователь с таким email уже зарегистрирован на сайте. Введите другой логин.</div>";
            $_SESSION['reg']['email'] = $email;

        }else{

            $pass = md5($pass);
            $pass2 = md5($pass2);
            $sql = "INSERT INTO customers (email, login, password, password_2)
                        VALUES ('$email', '$login', '$pass', '$pass2')";
            $res = mysql_query($sql) or die(mysql_error());
            if(mysql_affected_rows() > 0){

                $_SESSION['reg']['res'] = "<div class='success'>Регистрация прошла успешно.</div>";
                $_SESSION['auth']['user'] = $name;
            }
        }
    }else{

        $_SESSION['reg']['res'] = "<div class='error'>Не заполнены обязательные поля: <ul> $error </ul></div>";
        $_SESSION['reg']['login'] = $login;
        $_SESSION['reg']['email'] = $email;

    }

  Ответить  
 
 автор: confirm   (09.08.2014 в 16:07)   письмо автору
 
   для: sedoy   (09.08.2014 в 14:03)
 

Афигеть - зачем хранить пароль и его подтверждение, они что у вас по логике разные?
И причем тут JS?

  Ответить  
 
 автор: sedoy   (09.08.2014 в 17:10)   письмо автору
 
   для: confirm   (09.08.2014 в 16:07)
 

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

  Ответить  
 
 автор: confirm   (09.08.2014 в 17:42)   письмо автору
 
   для: sedoy   (09.08.2014 в 17:10)
 

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

"SELECT customer_id FROM customers WHERE email = '$email' LIMIT 1"
а сообщение:
Пользователь с таким email уже зарегистрирован на сайте. Введите другой логин.

Другими словами, два одинаковых адреса быть не может и тем не менее LIMIT 1 требуется? А почему допускается повтор логина?

И для чего вам подтверждение пароля, вы понимаете для чего он нужен? А если понимаете, то почему пассивны к нему?

  Ответить  
 
 автор: sedoy   (10.08.2014 в 06:03)   письмо автору
 
   для: confirm   (09.08.2014 в 17:42)
 

Хорошо, я полностью с Тобой согласен, прошу подсказать еще баги, и информацию про регистрацию, я в этом деле сам видишь не профи.

  Ответить  
 
 автор: confirm   (10.08.2014 в 08:12)   письмо автору
 
   для: sedoy   (10.08.2014 в 06:03)
 

Это не баги, а не понимание понятия регистрация.

1. Эл. почта - для связи. Может служить и логином для входа, но ни в коем случае "логином", который "светится" на странице, тем более, что у вас требуется ввод и логина, то есть "псевдонима", который и будут видеть пользователи. Тогда почему вы не проверяете занят ли этот логин при регистрации? Как вы полагаете, могут ли быть на страницах этого форума два "седых" пользователя?

2. Такая регистрация, как у вас, по зубам даже самому примитивному роботу. Ну как минимум при регистрации используют каптчу. Кроме этого, финалом регистрации служит активация, которая использует как раз эл. адрес. А у вас что? Вы даже толком ничего не проверяете, и тем не менее $_SESSION['auth']['user'] = $name; пишется. Это что, да и вообще откуда берется?

3. Ajax - значит в процессе ввода данных требующих быть уникальными (кстати, два разных пользователя, то есть логина, могут использовать один и тот же адрес почты, например семья), можно проверять уже в процессе заполнения формы - по потере фокуса, кнопкой проверить и т.п.

4. Пароль - это должно быть что-то надежное, и чем длиннее пароль, тем надежнее. А ваш скрипт свободно пропустит пароль в один символ. А подтверждение пароля нужно прежде всего самому пользователю, для того, чтобы он не допустил ошибки, держа в уме один, а заполняя совсем иной. Кроме этого, если серьезно, то нужно предусмотреть и средства восстановления пароля.

5. Хранение пароля, это далеко не md5(). Лучше пароль "подсолить", то есть хешируется не чистый пароль, а с дополнениями. Если вам доступна РНР версии 5.5 и под нее пишется, то лучше использовать Password Hashing. Если нет, значит md5() с "солью", а можно и crypt().

Вот исходя из этого и строится и асинхронный диалог клиент-сервер, и диалоги конечного результата. Предусматривая диалоги, сразу решается вопрос вывода ответа сервера, и при асинхронном диалоге ваши <li>Сообщение</li> уж точно не к месту. То есть нужно под диалог строить удобную структуру html-кода содержащего форму, чтобы клиентскому скрипту можно было обеспечивать "визуализацию" его с меньшими затратами.

Ну а сам чисто Ajax прост как валенок.

  Ответить  
Rambler's Top100
вверх

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