PHP.SU

Программирование на PHP, MySQL и другие веб-технологии PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Пользователи Пользователи


 Страниц (4): « 1 2 3 [4]   

> Описание: Сократить или нет
Ammy
Отправлено: 13 Января, 2010 - 12:35:56
Post Id



Member


Покинул форум
Сообщений всего: 133
Дата рег-ции: Сент. 2009  






Цитата:
Активацию аккаунтов через e-mail и вправду неплохо бы сделать, так как это есть наиболее верный способ проверки не только правильности написания e-mail адреса, но и его реальности и принадлежности вводящему данные.

Я проснулась. Сейчас займусь написанием. Из мыслей: при регистрации генерировать произвольную соль, которую обрабатывать md5 шифрованием, и записывать в базу данных, а пользователю mail функцией выслать письмо со ссылкой вида ?do=confirm&id=(int)&hash=(32 chars), и при переходе на неё давить проверку Улыбка
(Добавление)
Ещё придётся так же поля status добавить в таблицу users. Улыбка
(Добавление)
CODE (text):
скопировать код в буфер обмена
  1. select email, login ... where есть email or login;
  2. $errors = array();
  3. цикл $row = mysql_fetch {
  4.     Если $row[login] = $_POST[login] $errors[] = 'Логин уже есть';
  5.     Если $row[email] = $_POST[email] $errors[] = 'Email уже есть';
  6. }


PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $query = mysql_query("SELECT `user`, `email` FROM `users` WHERE `user` = '".mysql_real_escape_string($user)."' OR `email` = '".mysql_real_escape_string($email)."' LIMIT 1") or die(mysql_error());
  4.  
  5. $errors = array();
  6.  
  7. while ($row = mysql_fetch_assoc($query)) {
  8.  
  9.     if ($row['user'] == $_POST['login']) $errors[] = 'Логин уже имеется в базе!';
  10.     if ($row['email'] == $_POST['mail']) $errors[] = 'Адрес уже имеется в базе!';
  11.  
  12. }
  13.  
  14. if ($errors) {
  15.  
  16.   foreach ($errors as $key => $value) echo 'Ошибка ' . $key . ' - '.$value;
  17.  
  18.   die(':p');
  19.  
  20. }
  21.  
  22.  
 
 Top
Champion Супермодератор
Отправлено: 13 Января, 2010 - 12:46:42
Post Id



Эксперт


Покинул форум
Сообщений всего: 3426
Дата рег-ции: Авг. 2008  
Откуда: Москва






Ammy пишет:
LIMIT 1"
А если есть такой логи и такой емейл?)
 
 Top
Ammy
Отправлено: 13 Января, 2010 - 12:52:54
Post Id



Member


Покинул форум
Сообщений всего: 133
Дата рег-ции: Сент. 2009  






Цитата:
А если есть такой логи и такой емейл?)

Верно, нету. Подмигивание Минус один лимит из запроса.
(Добавление)
PHP:
скопировать код в буфер обмена
  1. if ($row['user'] == $_POST['login']) $errors[] = 'Логин уже имеется в базе!';
  2.     if ($row['email'] == $_POST['mail']) $errors[] = 'Адрес уже имеется в базе!';

На это:

PHP:
скопировать код в буфер обмена
  1. if ($row['user'] ==$user) $errors[] = 'Логин уже имеется в базе!';
  2.     if ($row['email'] == $email) $errors[] = 'Адрес уже имеется в базе!';

Так как входящие данные уже ранее записываются в переменные.
(Добавление)
В идеале записано как:

PHP:
скопировать код в буфер обмена
  1.  
  2. $query = mysql_query("SELECT `user`, `email` FROM `users` WHERE `user` = '".mysql_real_escape_string($user)."' OR `email` = '".mysql_real_escape_string($email)."'") or die(mysql_error());
  3.  
  4.         $errors = array();
  5.  
  6.         while ($row = mysql_fetch_assoc($query)) {
  7.  
  8.             if ($row['user']  == $user)  $errors[] = 'логин уже используется!';
  9.             if ($row['email'] == $email) $errors[] = 'адрес уже используется!';
  10.  
  11.         }
  12.  
  13.         if ($errors) {
  14.  
  15.             foreach ($errors as $key => $value) echo $key . '-ая ошибка: ' . $value;
  16.             die();
  17.        }
  18.  

(Добавление)
Можно тестить, изменения внесла.
(Добавление)
Добавлен просмотр профиля.
В списке активен: http://bestdynamic.orgfree.com/i...ex.php?do=secure
По умолчанию: http://bestdynamic.orgfree.com/index.php?do=profile&id=1

(Отредактировано автором: 13 Января, 2010 - 13:06:12)

 
 Top
Champion Супермодератор
Отправлено: 13 Января, 2010 - 13:51:01
Post Id



Эксперт


Покинул форум
Сообщений всего: 3426
Дата рег-ции: Авг. 2008  
Откуда: Москва






Цитата:
Ник: Champion_Robot
Че за попытка плагиата?
 
 Top
Ammy
Отправлено: 13 Января, 2010 - 13:56:47
Post Id



Member


Покинул форум
Сообщений всего: 133
Дата рег-ции: Сент. 2009  






Цитата:
Че за попытка плагиата?

Это я регулярку для никнейма тестировала. Ха-ха
 
 Top
Ammy
Отправлено: 13 Января, 2010 - 17:05:06
Post Id



Member


Покинул форум
Сообщений всего: 133
Дата рег-ции: Сент. 2009  






Исправлены все ошибки, вызывающие notice'ы.
Установлен более жёсткий контроль типов данных, получаемых из куки в сердце контроллера.
Добавлено слежение за активностью пользователя, добавлен вывод блока "Кто в сети", и, возможно, добавлена новая XSS Улыбка
 
 Top
EuGen Администратор
Отправлено: 13 Января, 2010 - 17:53:04
Post Id



Профессионал


Покинул форум
Сообщений всего: 2556
Дата рег-ции: Июнь 2007  
Откуда: Moscow






The connection was reset
То есть, 500 ответ.
Интересно, мой тест уронил что-нибудь в БД?..
 
 Top
Ammy
Отправлено: 13 Января, 2010 - 18:54:45
Post Id



Member


Покинул форум
Сообщений всего: 133
Дата рег-ции: Сент. 2009  






Нет, всё слишком цело. Улыбка
 
 Top
EuGen Администратор
Отправлено: 13 Января, 2010 - 20:21:39
Post Id



Профессионал


Покинул форум
Сообщений всего: 2556
Дата рег-ции: Июнь 2007  
Откуда: Moscow






Хорошо. Впрочем, если бы что-то было повреждено, вопрос был бы к хостеру в общем-то
 
 Top
Ammy
Отправлено: 13 Января, 2010 - 20:31:25
Post Id



Member


Покинул форум
Сообщений всего: 133
Дата рег-ции: Сент. 2009  






Естественно. Улыбка Хотя никаких вопросов и быть не должно, всё for testing purposes. Я была бы только рада таким тестам.
 
 Top
Ammy
Отправлено: 14 Января, 2010 - 00:05:13
Post Id



Member


Покинул форум
Сообщений всего: 133
Дата рег-ции: Сент. 2009  






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



Внесены корректировки в функционал контроллера, чуть оптимизирован тех процесс, и добавлен полный контроль за пользователями, определяющий их действия, разделы / страницы посещения, ip адрес. Меньше информации теперь ложится в основной массив mysql сессии (исключая разную информацию, не являющуюся критически необходимой для основных задач и прав), выдаваемый контроллером после проверки Cookie.

Визуально-технические изменения коснулись следующих разделов:

http://bestdynamic.orgfree.com/i...profile&id=1
http://bestdynamic.orgfree.com/index.php?do=mypage
http://bestdynamic.orgfree.com/index.php

Можно спать спокойно. Улыбка
(Добавление)
Завтра (то есть сегодня) добавлю несколько новых полей, о которых говорил Мелкий. ICQ, Jabber, etc.. И внесу изменения, касающиеся подтверждения пользовательского эл. адреса, а так же проверку mx записи, чтобы лишнего не подсовывали. Это быстро, всё для этого уже есть, но сил сейчас воплотить категорически не хватает.
(Добавление)
Воздушный поцелуй Спокойной ночи всем!
(Добавление)
Добавлен чат, внесены множественные изменения касательно новых полей, и прочее. Стопроцентно и окончательно иду спать.

Чат на главной: index.php

(Отредактировано автором: 14 Января, 2010 - 00:17:38)

 
 Top
Страниц (4): « 1 2 3 [4]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Наработки по собственным проектам »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




 
Powered by ExBB FM 1.0 RC1. InvisionExBB