Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Уникальный E-mail адрес

 PHP.SU

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


 Страниц (2): [1] 2 »   

> Без описания
DeepVarvar Супермодератор
Отправлено: 04 Июня, 2015 - 10:57:47
Post Id



Активный участник


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


Помог: 353 раз(а)




Мммм.. Продолжим будить интерес к некоторым нюансам в разработке.
Собсно опрос.
И не сказать что он с подковыркой.

Давайте-ка просто, кто знает в чем прикол, тот зайдет и напишет.
А кто не знает -- зайдет, прочитает и узнает.
 
 Top
Panoptik
Отправлено: 04 Июня, 2015 - 11:05:16
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




нужно еще ж проверить айди текущего пользователя, то есть добавить


(Добавление)
хотя при регистрации это делать лшние, но для универсальности проверки потом при апдейте профиля получается удобней, ибо даже если пользователь будет новым и ид будет 0 то проверка сработает правильно


-----
Just do it
 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Июня, 2015 - 11:08:49
Post Id



Активный участник


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


Помог: 353 раз(а)




Речь именно о регистрации.
Даже еще конкретнее -- только о проверке уникальности адреса.
 
 Top
LIME
Отправлено: 04 Июня, 2015 - 11:09:23
Post Id


Активный участник


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


Помог: 322 раз(а)




Я не знаю в чем прикол, но предположу что можно индексировать дополнительным целочисленным полем с хэшем от email
И проверять оба на случай коллизий
Есть еще несколько вариантов, но не везде применимых
 
 Top
Panoptik
Отправлено: 04 Июня, 2015 - 11:14:07
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




пересмотрел валидатор из фреймворка
http://www.yiiframework.com/doc/api/1.1/CUniqueValidator, которым пользуюсь уже несколько лет и нашел подковырку
а именно case sensitive


-----
Just do it
 
 Top
LIME
Отправлено: 04 Июня, 2015 - 11:14:38
Post Id


Активный участник


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


Помог: 322 раз(а)




Ну или вообще не делать выборку, а вставлять и ждать ошибку.
(Добавление)
Panoptik пишет:
а именно case sensitive
это зависит от collation
И если подковырка в этом, то плохо поставлена задача
 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Июня, 2015 - 11:17:16
Post Id



Активный участник


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


Помог: 353 раз(а)




Подковырка не только в этом.
Точнее кейс сенситив это мелочь по сравнению с тем, в чем на самом деле подковырка.
 
 Top
Panoptik
Отправлено: 04 Июня, 2015 - 11:18:21
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




ну согласитесь что вы в первую очередь не лезете в базу и не проверяете колейшн когда получаете задачку добавить функционал в чужом проекте и лучше все же избежать граблей в будущем и учесть этот момент не смотря на обстоятельства
(Добавление)
ну проблема №2 - длина поля, может принести сюрпризы
(Добавление)
и еще я не совсем понимаю, тут проблема инъекции если емейл чистяком вставляется в запрос, но мы же ведь все подумали что он будет вставлен в виде параметра

CODE (SQL):
скопировать код в буфер обмена
  1.  SELECT (1) ex FROM users WHERE email = :email


-----
Just do it
 
 Top
LIME
Отправлено: 04 Июня, 2015 - 11:20:42
Post Id


Активный участник


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


Помог: 322 раз(а)




Омг
 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Июня, 2015 - 11:28:04
Post Id



Активный участник


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


Помог: 353 раз(а)




Все не в ту степь.
 
 Top
Panoptik
Отправлено: 04 Июня, 2015 - 11:45:04
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




PHP:
скопировать код в буфер обмена
  1. /** @var $dbh PDO */
  2. $sth = $dbh->prepare('DELETE FROM users WHERE email = :email');
  3. $sth->bindParam(':email', 'test@example.com', PDO::PARAM_STR, 120);
  4. if($sth->execute()->rowCount()) {
  5.    echo 'Данный email был занят, но уже можете спокойно продолжать регистрацию :)';
  6. }

(Отредактировано автором: 04 Июня, 2015 - 11:48:53)



-----
Just do it
 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Июня, 2015 - 11:56:34
Post Id



Активный участник


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


Помог: 353 раз(а)




Мило ))
Тогда еще и это: http://xkcd[dot]ru/327/
 
 Top
LIME
Отправлено: 04 Июня, 2015 - 11:57:54
Post Id


Активный участник


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


Помог: 322 раз(а)




DeepVarvar не лезет из головы
Давай колись и пусть это не будет какая-то фигня
(Добавление)
ГыгыгыУлыбка
 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Июня, 2015 - 12:03:09
Post Id



Активный участник


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


Помог: 353 раз(а)




Ну, своими словами я буду долго это аписнять.
Это касается стандартов RFC и реальной жизни.

Дам сцыль на швабру: http://habrahabr[dot]ru/post/224623/
 
 Top
LIME
Отправлено: 04 Июня, 2015 - 12:14:57
Post Id


Активный участник


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


Помог: 322 раз(а)




Не очень понял как вопрос связан с статьей
Или ктото должен был сказать что сначала проверяет регуляркой?
Смысл ссылки для подтверждения в том числе чтоб не париться валидностью
Хотя и это к делу не относится

(Отредактировано автором: 04 Июня, 2015 - 12:15:53)

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


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB