2015-11-14 5 views
1

Недавно я был предупрежден о том, что адреса электронной почты Gmail одинаковы, если вы поместите «.». перед «@ gmail.com». Поэтому «[email protected]» и «[email protected]» отправляются на адрес «[email protected]».MySQL выберите столбец с замененным текстом, где он равен значению

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

Я дезинфицировать адрес электронной почты, они посылают меня, войти в мою базу данных с ПДО, а затем попробуйте запустить этот код:

$data=$db->query("SELECT REPLACE(email,'.','') AS email_without_periods FROM account_data HAVING email_without_periods LIKE '".str_replace($sanitizedEmail,".","")."'"); 

if($row=$data->fetch()){ 
//It found a match between the sanitized email without decimals and the email rows without decimals. Hey, this dude's trying to create multiple accounts! 
    $error="You're trying the email decimal trick! You sneaky devil... "; 
} 

Однако, этот вход не работает: он, кажется, не регистрировать какие-либо строк.

Когда я заменил LIKE '".str_replace($sanitizedEmail,".","")."'" на LIKE '%".str_replace($sanitizedEmail,".","")."%'", он вернул все из строк.

Я в основном хочу найти str_replace($postEmail,".","") в базе данных, но сначала удалить все периоды в email строках. Я использую PDO.

Как это сделать?

+0

Какова ценность '$ sanitizedEmail'? – Barmar

+0

Поскольку вы используете PDO, почему вы не используете подготовленные инструкции вместо объединения в SQL? – Barmar

+2

Вы заменяете все периоды запятыми, а не удаляете их. Используйте 'replace (email, ',', '')', чтобы удалить их. Но вы также удаляете период в 'gmail.com', поэтому он станет' gmailcom'. – Barmar

ответ

2

У вас есть аргументы в неправильном порядке в str_replace. Оно должно быть:

str_replace('.', '', $sanitizedEmail) 

Вы использовали тот же порядок аргументов, как REPLACE функции SQL, но они разные.

+0

Успех! Спасибо, ха-ха. Я чувствую себя глупо ... –

Смежные вопросы