Книги надо читать. Там разбираются примеры кода. Ты этот код пишешь, смотришь как он работает, модифицируешь, набираешься опыта.Как вариант - создай тему мол пишу небольшие скрипты на php - парсеры всякие, средства для автоматизации того или иного действия.
Но зачем? Какой в этом смысл-то? Очень просто - не передавай его. Для поддержания сессии на клиенте должна быть только сессионная кука. Больше ничего другого не нужно. Каким образом ты безопасность-то повышаешь? Поделись соображениями на этот счет. Я вот вижу, что просто тебе хочется чего-то в куки записать, вот и все Юзай нормальную IDE. Саблиме, брекитс, нотепаде++ и тд и не будут ругаться. Они не умеют в анализ кода. Они не IDE. Они - блокноты с подсветкой синтаксиса, не более того. Хочешь функциональность IDE? Юзай IDE. phpStorm, netbeans, да хоть visual studio. Вполне возможно. --- Добавлено --- Не надо парсеры. Полон интернет этих парсеров. Давайте создавать что-то новое и уникальное, а не красть то, что создают другие. Мы же разработчики, а не шалупонь какая, а?
Вот и не надо начинать с парсеров. Все мы только начинали когда-то, но это не значит, что начинать надо с таких вещей. Парсеры, дорвеи, фишинги, это вот все, как по мне, одной гребенки мусор. Не надо "смолоду" руки об это марать. С ходу и не надо. Бумага, ручка. Рисуем, пишем. Пытаемся упаковать в алгоритм. Пишем код. Если сложно - проводим декомпозицию. Больше и не надо ничего. Не можешь держать и генерировать алгоритмы в голове - рисуй их кружочками, квадратиками, стрелочками (не обязательно прям блок-схемы, главное чтобы сам понимал, что это), на бумажке. Пусть пока будут вне головы, если так понятнее и легче. Это обычное дело. Я, когда только начинал кодить, еще до прихода в веб, тоже так делал. Ручаюсь, что так или иначе все так делали. И многие продолжают делать. Если я понимаю, что что-то упускаю, и если не могу уследить за сложными связями, я открываю paint или беру ручку и точно так же рисую. Как новичок, да. Только причины, по которым я это делаю сложнее, чем те, что у новичка. И то, что рисую, тоже сложнее. Во многих конторах у программистов всегда есть доступ к большой белой доске с маркерами. Ее задача та же. Плюс, так проще объяснять другим свою идею.
Плюсую про белую доску с маркерами и бумажку. Когда понимаешь, что в голове не умещается, берешь и пишешь. Можно рисунком, можно даже тупо своими словами, но в итоге очень быстро отсеиваются все откровенно левые варианты и выстраивается стройная схема алгоритма.
Сейчас мне действительно просто хочется разобраться, как же безопасно хранить авторизацию в куке. В тот момент я размышлял так: Если я сохраню в куку хеш, то злоумышленник не сможет быстро подобрать токен. Тем более функция password_hash каждый раз генерит разный хеш. Время создания записал в бд, чтобы даже если злоумышленник скомпрометировал бд и имел возможность поперебирать варианты хешей( вот тут не знаю, насколько это быстро делается, в бд токен в открытом виде), он вылетал по истечении срока годности токена. На тот момент это показалось неплохим решением Тема безопасности прям заинтересовала, как изучу фреймворк, буду учиться хакать Кстати, может кто посоветует годную литературу по теме взлома-защиты?
В куке хранится идентификатор сессии. Больше там хранить ничего не нужно Зачем там хеш? Защита от угона сессии - другой разговор. Сессию привязывают к IP или устройству, User-Agent и т.п. http://www.securityscripts.ru/articles/PHP/session-hijacking.html Если нужна галочка "оставаться в системе", то пишется кука с произвольной строкой, и эта же строка в базе. Если она пришла в куках - ищем в базе и авторизируем этого пользователя. Опять же, есть разные решения по безопасности. Контакт, к примеру, проверяет, не сменился ли регион IP, и если сменился, просит подтвердить номер телефона.
Затем, чтобы юзер мог уйти с сайта, закрыть браузер, потом вернуться и остаться авторизованным. Пока не знаю других способов кроме кук, как это можно реализовать. Понимаю, что в этой задаче просто нет такого пункта и я зря это приплел сюда, "чтобы было".
Ну это не через сессию делается. И уж тем более не через оставление данных для аутентификации на клиенте в открытом виде. Выше @mkramer написал общий принцип реализации галочки "запомнить меня".
@Fell-x27 а можно вынести на обсуждение одно задание, которое я сам для себя когда то придумал и реализовал так. как умел, то-есть выложить уже готовый код. чем то схожее с обсуждаемым, но окно входа расположено не по центру, и нет проверки на возраст, зато присутствует цикл нажатия кнопки, и т.п. интересно мнение гуру к подходу решения данной задачи.
тогда потеряется суть моего ТЗ так как центр окна занят, а проверку на возраст я сделаю. просто я сейчас лежу в больнице, но сегодня домой отпустили, завтра рано утром мне надо быть там, а доступ к ПК я имею только дома, поэтому и ... а дома бываю не часто и не долго, а успеть надо сегодня еще много. прошу сделать исключение!
в архиве www файлы и папки с кодом, и отдельно файл cql для создания таблиц, только в нем нужно имя БД. и в папке lib/ funkc.php проставить подходящие значения в функции конект
@mkramer ? то-есть закинуть на хостинг в виде готового сайта? --- Добавлено --- если да, то пару минут, и скину ссылку --- Добавлено --- если да, то пару минут, и --- Добавлено --- http://annutka.tk
Ну имя пользователя ещё ладно, а какая тебе разница, что я напишу в пароль? Всё равно его захешируешь. Кинь исходники на гитхаб, чтоб не качать. --- Добавлено --- Ещё и отбраковал мой замечательный ник hren. Что в нём плохого?
@mkramer наверно пробел нашел, вообще проверка стоит только на символы, на словосочетания проверок нет, скорее всего пробел. блин, написано с грамматическими ошибками, вижу сейчас, я просто на химиотерапии сейчас, за руль нельзя садиться, и внимательность храмает тоже. грамматику исправлю
1) Дизайн оставим за скобками. Он странен. 2) Зачем? В чем смысл данных ограничений? Особенно по паролю. Они же ослабляют его. 3) Про длину никто не предупреждал. Про несовпадение - ложь. Не было такого. Копипаста не может не совпадать. 4) А почему бы автоматом не сделать логин пользователя после регистрации? 5) Не хватает редиректов после отправки форм. 6) Проверка загружаемых файлов хромает. Я тебе только что залил php-файл под видом png-шки. Код пока не глядел. Жду гитхаба.
@Fell-x27 создал аккаут на гитхабе, просит URL-адрес старого репозитория. старого нет, а как с ПК туда закинуть архив? считал что так обезопашусь от нежелательных символов так как пароль шифрует устаревшая md5() и нет соли на пароль, тоже минус к которому я готов!
Не шифрует, а хэширует. И о каких нежелательных символах идет речь? Таких для хэширования нет. Хэш-функция принимает на вход пачку байт. Ей плевать, что они значат. Захэшировать можно любую последовательность данных, включая файлы. Далее. Для защиты от нежелательных символов, скажем, в логине, нужно не пользователя ограничивать, а правильно экранировать данные, вставляемые в БД. Знал бы ты, как бесит, что на ряде ресурсов мне приходится писать свой ник как Fell_x27, или, того хуже, Fellx27, просто вот потому, что по какой-то причине там решили ограничить набор символов. Хотя это, на деле, не имеет никакого смысла. --- Добавлено --- Всмысле готов? Услышать о нем? Или готов в плане каких-то мер безопасности? Если второе, то нет, не готов. Ты упростил жизнь злоумышленнику. Ты явно указал набор символов, используемый в пароле, чем нереально сократил диапазон перебора. К тому же, покуда соли нет, ты открыл доступ к перебору по радужным таблицам. Это плохо. И "нежелательные символы" тут не играют никакой роли. Сегодня, для таких вещей в PHP предусмотрен встроенный инструментарий. password_hash() и иже с ним. Почитай про это. И пользуйся наздоровье.
@Fell-x27 понял, значит не готов, и еще вопрос про проверку на тип файла, как лучше реализовать? я делал PHP: if ($_FILES['name_downl_file']['type'] != 'image/jpeg') но видно что этого не достаточно