Помощник
|
Емейл не записывается в базу данных при регистрации |
trisgot
|
Сообщение
#1
|
||
|
|
||
|
|||
gifas |
5.3.2016, 23:42;
Ответить: gifas
Сообщение
#2
|
|
Этот код полон ошибок, начиная от изменения (ибо это не защита базы, а защита вывода) пароля при вводе в базу (очистка того, что никогда не выводится), будет сюрприз. Заканчивая md5, которая вообще никакая и дефакто запрещена к применению повсеместно, кроме кешей и прочих доп. вещей.
Если емаил не заносится, то проверяете что там при вводе в базу.
Функция имеет локальную область видимости и вы получите notice, ибо в функцию приходит $login, а обновляется $email. Раз об этом не сказали, то ошибки выключены. Так не делается. UPD. Неправильно прочитал тему. Но тоже таким макаром - через проверку что на входе SQL выражения Сообщение отредактировал jytyx - 5.3.2016, 23:57 |
|
|
trisgot
|
Сообщение
#3
|
|
jytyx, я только еще разбираюсь в php, и в основном по видео урокам делала, а про md5 так было предложено в уроках. Вообщем мне легче пока убрать активацию через емейл)) я мало что поняла, что вы мне ответили, мне пока сложно)
|
|
|
gifas |
6.3.2016, 1:15;
Ответить: gifas
Сообщение
#4
|
|
я только еще разбираюсь в php, по каким урокам вы занимаетесь, если не секрет, чтобы не дискредитировать автора, не нужно имени и не надо ссылок, хотя бы где вы их нашли и кто посоветовал? Честно, в Вашем коде просто лень разбираться и смотреть. нет никакого контроля кода. У меня квалификация не настолько высока, чтобы такой код разбирать) Сообщение отредактировал jytyx - 6.3.2016, 1:16 |
|
|
trisgot
|
Сообщение
#5
|
|
jytyx, нашла на ютубе уроки Михаила Русакова, никто не советовал, просто он простым языком объясняет, поэтому и делала по его видео урокам. Про активацию по емейл там нужно было самой добавить))
|
|
|
gifas |
6.3.2016, 23:09;
Ответить: gifas
Сообщение
#6
|
|
trisgot, Ясно. Тогда просто добавлю некоторые замечания.
Вкратце. Настройте редактор, первое мое сообщение об использовании $email и $login в нормальной ide выдало бы вам две ошибки - об отсутствии инициализации $email и о неиспользовании $login. Вы обращаетесь к массиву if ($_SESSION['error_captcha'] Допустим, на этот момент ключа такого вообще нет, то вы получите уведомление. Настройте показ ошибок Если распечатки их на рабочем сайте, то они могут вывести инфу любому, поэтому нужно позаботиться - проверка по вашему ip или передача чего в адрес, чтобы только вы видел. Да и работаете же вы на локалхосте. Вы дублируете код. Что, например, если я скажу, что в htmlspecialchars нужно выставить кодировку и вид кавычек? А в таком виде её применять небезопасно (был баг не помню в какой версии, IE страдал). Вам придется исправлять во многих местах. Должно быть одно место. Вообще, это защита вывода (гуглите о XSS). Пароль не выводится нигде, изменять его не очень хорошая затея. Обычно защищают от xss на выходе, ибо в базе все равно что-там (но от sql-иньекций на входе) Вы не защищаете базу от SQL-иньекций. Для этого в php есть спецфункция. для хеша пароля юзайте password_hash (но с ней не стоит умничать и добавлять свою соль, может наоборот получиться) или спец библиотеки Во втором случае - насчет ссылки активации по md5 можно легко узнать пароль, а это потеря смысла его строгого хеширования. Если эта ссылка попадет куда не туда или останется в базе, то шифрования нет. Юзер может оставить письмо у себя в клиенте, хакер вытянуть оттуда этот хеш и либо так поломать (md5 же) либо из кода выдрать, как-то так. Возможно, использовать что-то другое и md5, по хеш которой не даст ничего полезного. Тогда да - md5 быстрая. это её преимущество. Функция mail одиноко брошена в коде. Что будет, если она не сработает или сработает с ошибкой? strlen возвращает количество байт. Учитывайте, когда будете писать в разметке какова длина пароля! Для юникода это не количество символов в строке. return $real_password == $password; - вы попались на классическую уязвимость в php, при определенных обстоятельствах в каких-то там версиях последствия очень неприятны. Даже при использовании === (вообще == это зло, оно непредсказуемо и должно использоваться лишь в исключительных случаях, много раз подумать зачем и когда, ибо сравнивает с приведением типа) есть атака по времени, поэтому для секьюрного сравнения строк есть разные функции, в свежих версиях php есть hash_equals Не проверяете, что поступает в функцию на допустимые значения или пустоту, функции берут на себя слишком много, жестко записываете значения и смешиваете верстку и код, не проверяете что пришло из базы, содержит ли массив ключ. Не проверяете, что в $mysqli после открытия соединения. php это не html и css. отличие - это каскадный отказ или просто отказ сайта. Косяк в верстке может сделать сайт нерабочим, но чаще - ограниченно рабочим. Косяк в php (да и js) может его вообще положить или дать доступ хакеру. Ошибки в вашем коде не должны ложить сайт, они должны отключать регистрацию и уведомлять. Для более тонкого контроля и созданы исключения. с чистым SQL мало кто работает (исключение - высокопроизводительные, специфические запросы), процедурное программирование вымирает (хотя некоторые cms, даже crm - suite, vtiger, еще и написаны так, но уже в современных фреймворках вы его не найдете.) Вас проклянут за длинную ленту функций юзайте точку останова в редакторе или вардамп. Точка\распечатка перед regUser - посмотрели что в емаил. Вошли в функкцию - посмотрели, что в $mysqli и далее как там у вас инсерт работает. Дописали проверку на ошибку от базы, закрыли соединение (при закрытии тоже может быть ошибка, учитывайте), проверили в редакторе, или через консоль, или через mysqlworkbench, что соединение действительно закрыто. Проверили базу. Если опять не пишется, посмотрели лог своей mysql (включить в конфиге на все запросы) как заходит запрос в базу. проверка на логин и пароль есть, на мыло нет. '$activation', )"); - запятая в запросе после $activation должна дать ошибку синтаксиса. Может я в упор не вижу еще чего, но к вечеру я туплю. Сообщение отредактировал jytyx - 6.3.2016, 23:46 |
|
|
trisgot
|
Сообщение
#7
|
|
jytyx,спасибо большое! Буду разбираться!
|
|
|
gifas |
7.3.2016, 0:34;
Ответить: gifas
Сообщение
#8
|
|
|
trisgot, а да туплю, сразу не написал, еще нюанс. в отправке писем. В адрес ($email) можно подставить список из большого количества левых людей, разделенного запятыми (в доках запятые, но хз насчет перевода строки, лень читать rfc) и письмо отправится им всем). Вроде htmlspecialchars ничего с переводами строк не делает. просто учитывайте, что это может быть и никогда не доверяйте пользовательским данным в отправках писем.. Например, можно спамнуть с вашего сервера и отправить его в спам листы почтовиков и т.п. Или просто нагрузить его. Поэтому есть смысл подумать еще и о лимитах. Если капчу ломанут, то заспамят базу. а вот почтовый спам и попадание в спам-листы это проблема.
Сообщение отредактировал jytyx - 7.3.2016, 1:00 |
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Продам базу сайтов Wordpress в 16 миллионов доменов! Свежая сборка. | 19 | Boymaster | 11150 | Сегодня, 0:01 автор: Boymaster |
|
Интеграция спортивных данных API. Коэффициенты БК, Live результаты | 15 | yaroslav89 | 6845 | 8.4.2024, 17:17 автор: spoyer_ru |
|
Мегамаркет. Скидка 1000 рублей при покупке от 5000 рублей на все, на первый заказ. Мегамаркет. Скидка 1000 рублей при покупке от 5000 рублей на все, на п |
7 | stu999 | 1753 | 31.3.2024, 11:19 автор: stu999 |
|
Подкиньте базу ключей тематики wallpaper - Обои для рабочего стола | 0 | uahomka | 865 | 27.2.2024, 0:38 автор: uahomka |
|
ГОРЯЧИЕ FOREX|CRYPTO ЛИДЫ. БАЗЫ ДАННЫХ [Чарджбек|Рекавери|Возврат] |
9 | Leado | 3893 | 9.2.2024, 16:04 автор: baza0013 |
Текстовая версия | Сейчас: 20.4.2024, 8:24 |