Пишемо реєстрацію на php і javascript - частина 1 php, блог веб-розробників

Постановка задачі

Поля для заповнення:

підготовка

Для початку, створимо необхідну ієрархію папок і файлів. Виглядати вона повинна так:

Зараз ми будемо працювати виключно з папкою registration. Всередині неї розташований підкаталог template, в якому будуть знаходитися всі файли, що відповідають за зовнішній вигляд модуля Реєстрації (html шаблони, css файли і різні зображення). У цій папці створюємо файл registration.php. Він буде містити саму форму реєстрації. Якщо коротко, вона повинна виглядати так:

Вся форма передається методом POST. що необхідно для безпечної передачі даних. Кнопка відправки має name = "GO", за яким ми і будемо відловлювати відправку даних користувачем. У цьому файлі також присутній деякий php-код. Але про це пізніше.

В каталозі registration створюємо кореневої файл index.php. який і буде запускатися при вході на сторінку реєстрації. Він є контролером, що обробляють дії користувача і вирішальний, як буде виглядати сторінка (в цьому файлі буде підключатися шаблон з підкаталогу template, в залежності від різних ситуацій). Сенс такого поділу детально розписаний в статті про MVC. Зараз варто відзначити, що в файлі index.php не повинно бути ніякого висновку, тобто в коді не повинно бути ні рядка html-коду і жодного оператора echo або print.

Всі дані про зареєстрованих користувачів ми будемо зберігати в базі даних MySQL. Для цього нам необхідно створити, наприклад, через phpMyAdmin базу даних (БД), а потім таблицю з необхідними полями. У даній статті, для прикладу, я буду використовувати назву БД наступне: db_name. Назва таблиці - users. Далі додамо в таблицю наступні поля:

Пишемо реєстрацію на php і javascript - частина 1 php, блог веб-розробників

Для зручності роботи в майбутньому створимо в корені сайту папку lib. в яку помістимо 2 файли: connect.php і function_global.php. Надалі в цій папці будуть зберігатися бібліотеки різних функцій.

Перший файл доведеться підключати дуже часто в майбутньому (він відповідає за підключення до БД), а в другому будуть зберігатися часто використовувані функції на сайті.

Як тільки таблиця і ієрархія файлів створені, можна приступити до написання самого функціоналу.

Реалізація

Код файлу connect.php:

У цих рядках, ми перевіряємо, чи є у даного користувача змінні $ _SESSION [ 'id'], $ _COOKIE [ 'login'] і $ _COOKIE [ 'password']. Якщо такі змінні є, то переспрямуємо користувача на головну сторінку сайту:

Якщо ж таких даних не виявилося, то йдемо далі, де перевіряємо, чи була натиснута кнопка з name = "GO". Якщо це так, перевіряємо дані і, якщо все добре, пишемо їх в БД. В іншому випадку, підключаємо шаблон з формою:

Максим. розбиття по панпкам саме для зручності, з розвитком проекту файлів стане горвздо большн.

першою сторінкою сайту все-таки повинна бути не реєстрація, а якась інформація

Реєстрація не буде першим модулем, який бачить пользовательних на головній, але буде першим написаним модулем.

«Справа в тому, що всередині підключається файлу include (« template / registration.php »); присутній умова, яке, при $ regged == true виведе текст, що реєстрація пройшла успішно і не виведе форму реєстрації. »

Виникає питання: Ви точно той файл мали на увазі? бо цьому файлі і натяку на цю умову немає. У підсумку маємо: після натискання на кнопку реєстрації, нас тупо викидає на сторінку з пропозицією зареєструватися ...
Один і той же файл по тексту називаєте по різному (на скільки я зрозумів, мб читав неуважно) якщо вірити ієрархії ваших папок function_global.php, якщо вірити коду modul_global.php

по-моєму, Ви статтю не до кінця написали, або поспішали або просто «забили» 🙂 бо логіка думки обривається так і не закінчивши 🙂 Припустимо, що ми ввели змінну, яка відповідає за виведення форми реєстрації, і що далі? сенс то де? 🙂 Ну вивело нам в підсумку що реєстрація пройшла вдало і що з цього? 🙂 не логічно :)))

в функції перевірки на коректність даних не працює код перевірки, чи є вже такою юзер в базі даних. Користувач додається не дивлячись ні на що

$ Login = $ _POST [ 'login'];
$ Rez = mysql_query ( «SELECT * FROM users WHERE login = $ login»);
if (@mysql_num_rows ($ rez)! = 0) return false;

А якщо прибрати собачку, то і помилочка з'являється. недобре як то ..

Правильніше зробити так
$ Rez = mysql_query ( «SELECT id FROM users WHERE login = $ login OR mail = '$ mail'»);
if ($ rez mysql_num_rows ($ rez)> 0) return false;

login = $ login виправити на login = '$ login'

Роман. цього ні в якому разі не досить. Також необхідно змінну login екранувати функцією mysql_real_escape_string.

Само собою необхідно фільтрувати будь-які дані надходять від користувача, навіть в навчальному скрипті 🙂 Потім дивишся на те що пишуть люди які навчаються на таких ось прикладах і жахаєшся)))

Якщо вже мова зайшла про фільтрації, то повністю шматок коду буде виглядати приблизно так
$ Mail я тут сам додав, так як логічніше при реєстрації перевіряти і мило

Ну і поїхали 🙂 екрануючи, видаляємо прогалини з початку і з кінця рядка і вирізаємо теги
$ Login = mysql_real_escape_string (trim (strip_tags ($ _POST [ 'login'])));
$ Mail = mysql_real_escape_string (trim (strip_tags ($ _POST [ 'mail'])));
$ Rez = mysql_query ( «SELECT id FROM users WHERE login = '$ login' OR mail = '$ mail'»);
if ($ rez mysql_num_rows ($ rez)> 0) return false;

Роман, спасибі за вичерпну відповідь для новачка =)