Вот ссылка на код https://pastebin.com/eqifawEi
P.S для админа еще авторизацию не добавил, скоро добавлю защиту от инъекций
PHP
оцените мою первую регистрацию и авторизацию
То, за что зацепился взгляд при беглом просмотре твоего кода:
1. Использование для пароля md5 - это откровенное непонимание того, насколько легко подобрать коллизию для этого протухшего много лет назад алгоритма. И даже использование соли (чего у тебя не наблюдается) не спасёт md5 от взлома. Специально для работы с паролями в PHP есть http://php.net/manual/ru/ref.password.php
2. /[^\w]/ в точности равно /\W/ - короче и понятнее.
3. Если ограничение набора символов для логина имеет смысл, то такое же ограничение для пароля приводит только у уменьшению безопасности. Единственное, что ты делаешь ограничением алфавита пароля - это облегчаешь жизнь хакерам. И, разумеется, никаких удалений пробелов из средины пароля: лучший вид пароля в современном мире - фраза, состоящая из нескольких слов.
4. В MySQL существуют типы TIMESTAMP и DATETIME. И в поля этих типов автоматически может заноситься дата / время создания записи. Использовать UNIX_TIMESTAMP по меньшей мере бессмысленно.
5. Для подавляющего большинства типов полей можно задать значения по умолчанию. Зачем вручную вбивать 0.00 в balance, когда база данных может это сделать автоматически? И, кстати, числа не надо заключать в кавычки.
6. Сначала экранируем все значения вручную, потом вбиваем их непосредственно в запрос... Зачем? Для безопасной вставки значений в запрос существует механизм http://php.net/manual/ru/mysqli.quickstart.prepared-statements.php
И, кстати, в PDO это делается намного проще и удобнее, чем в mysqli: http://php.net/manual/ru/pdo.prepare.php
1. Использование для пароля md5 - это откровенное непонимание того, насколько легко подобрать коллизию для этого протухшего много лет назад алгоритма. И даже использование соли (чего у тебя не наблюдается) не спасёт md5 от взлома. Специально для работы с паролями в PHP есть http://php.net/manual/ru/ref.password.php
2. /[^\w]/ в точности равно /\W/ - короче и понятнее.
3. Если ограничение набора символов для логина имеет смысл, то такое же ограничение для пароля приводит только у уменьшению безопасности. Единственное, что ты делаешь ограничением алфавита пароля - это облегчаешь жизнь хакерам. И, разумеется, никаких удалений пробелов из средины пароля: лучший вид пароля в современном мире - фраза, состоящая из нескольких слов.
4. В MySQL существуют типы TIMESTAMP и DATETIME. И в поля этих типов автоматически может заноситься дата / время создания записи. Использовать UNIX_TIMESTAMP по меньшей мере бессмысленно.
5. Для подавляющего большинства типов полей можно задать значения по умолчанию. Зачем вручную вбивать 0.00 в balance, когда база данных может это сделать автоматически? И, кстати, числа не надо заключать в кавычки.
6. Сначала экранируем все значения вручную, потом вбиваем их непосредственно в запрос... Зачем? Для безопасной вставки значений в запрос существует механизм http://php.net/manual/ru/mysqli.quickstart.prepared-statements.php
И, кстати, в PDO это делается намного проще и удобнее, чем в mysqli: http://php.net/manual/ru/pdo.prepare.php
а че пароли открытые? передача данных не криптуется... зашита от прямогу вклучения где, набери в адресной строке адрес сайта core/connect_bd.php
Похожие вопросы
- Как сделать регистрацию и авторизацию на php без mysql. Напишите пример записи
- Авторизация php и регистрация проблемы с хэшэм
- Почему код авторизации и регистрации на PHP, написанный 3 года назад в видео на ютубе, сейчас не работает? И как быть?
- PHP - Сойдёт ли авторизация, или менять?
- Пишу авторизацию (php). Куки не работают
- Помогите с авторизацией
- Не работает авторизация на php
- Сверстал форму регистрации на сайте! Как сделать отправку?
- Регистрация php обработчик, нужна помощь
- Соеденение БД с PHP для записи данных регистрации для сайта
if(!defined("USER")) {header("Location: /404.php");}
$host='127.0.0.1'; // имя хоста (уточняется у провайдера)
$database='My_BD'; // имя базы данных
$user='root'; // заданное вами имя пользователя, либо определенное провайдером
$pswd=''; // заданный вами пароль
$dbh = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к базе.");
mysql_query('SET NAMES "utf8"');
потом когда нужно вызвал
require_once $_SERVER['DOCUMENT_ROOT'].'/ CONNECT_BD.PHP';