![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
Вот, решил написать себе CMS. Хочу сделать ее максимально безопасной и более-менее быстрой. В этом топике я хотел бы задавать вопросы и слышать на них ответы. В основном попрошу вас проанализировать мой код на скорость и безопасность. Ну, что же? Первая функция:
Ну, что? У кого какие мысли по поводу этого кода? Это сообщение отредактировал(а) CyClon - 7.3.2006, 15:06 |
|||
|
||||
S.A.P. |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 3 Всего: 71 |
CyClon, ИМХО
1. Отключи register_globals. 2. ОО интерфейс для баз данных лучше так
т.е. функция query возвращает объект. 3. Все вносимые строки должны проходить через mysql_escape_string, для этого лучше воспользоваться идеей placeholders. Подробности у Котерова. 4. Группу пользователя лучше сразу хранить в сессии и инициальзировать ее при логине или первом заходе. |
||||
|
|||||
CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
S.A.P., А что, он включен? Он то включен, но я пишу под выключенный.
На счет ОО - работать с ним не умею, хотел просто как нить... Так... Короче чтобы был ОО ![]() На счет mysql_escape_string... Слышал про эту функцию, но что она делает еще, кроме addslashesи htmlspecialchars? На счет группы немного не понял. У меня есть БД, где хранится инфа о юзерах, там же id, login, passowrd, group. Я даже немогу представить как это все вообще выглядит, буду видоизменять по мере написания ![]() Добавлено @ 15:18
Вот, написал для универсальности скрипта. Кто что еще может добавить на счет этого? |
|||
|
||||
CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
Может кто просмотрит мой вариант проверки логина, почты, сайта и определения размера, да предложит что нибудь дельное?
Это сообщение отредактировал(а) CyClon - 7.3.2006, 21:04 |
|||
|
||||
CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
Блин, не могу определиться с авторизацией. Сначала думал определять юзер или нет каждый раз функцией, что дана сверху, как в одной немало ихвестной CMS, но теоретически - зачем 100 раз перепроверять, делать запросы к БД? Решил сдедлать файл vars.php, который всегда будет исполняться:
Кто как думает, как организовать все это дело? |
|||
|
||||
RomanK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 25.6.2005 Где: Россия, Выборг Репутация: 1 Всего: 2 |
Проверяешь один раз: если у юзера кука есть, то вытаскиваешь все из БД, и сохраняешь в переменные сессии. А потом просто, если эти переменные существуют, значит юзер авторизован.
Помоему так. ![]() ![]() Это сообщение отредактировал(а) RomanK - 8.3.2006, 00:53 |
|||
|
||||
CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
RomanK, Хороший вариант. Получается один раз за всю сессия запрос. А я хотел делать на каждой странице блин
![]() ЗЫ: Еще хотле бы сделать, чтобы юзер мог работать на сайте без COOKIE. Как? Я думаю, что сначала нада устанавливать пробную куку, и если она потом читается, то вес ок ставить куки, а если нет, то приписывать в $_SESSION['user'] все. Или как еще можно? |
|||
|
||||
RomanK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 25.6.2005 Где: Россия, Выборг Репутация: 1 Всего: 2 |
Без кук можно сделать, но тогда не будет автологина. ![]() ![]() Если ты будешь делать без кук, то получается пользователь должен каждый раз проходить авторизацию, что не есть хорошо. ![]() ![]() Добавлено @ 12:15 Переменные сессии, это те же самые переменные, только они не теряются при reloade. |
|||
|
||||
CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
RomanK, Про куки знаю, просто нужно сделать чтобы и без COOKIE работало, а то если в сессии не храить данные, то вообще не сможет юзер авторизоваться
![]() |
|||
|
||||
Эрмитаж |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 8.3.2006 Репутация: нет Всего: нет |
Есть 3 вида авторицации: заголовок (headers), куки и сессии. Сессии включают в себя авторизацию как с помощью кук, так и без них, т.е кука уже хранится в PHPSESSID. Будет лучше, если ты воспользуешься самым последним способом из выше перечисленных.
Добавлено @ 16:49 Если у посетителя браузер принимает cookie, то ему высылается cookie (с определенным именем - по умолчанию "PHPSESSID"), содержащий так называемый "идентификатор сессии" ( содержимое сookie с идентификатором сессии ), а если нет, то web-сервер автоматически помещает данный идентификатор в переменную PHPSESSID в каждую ссылку ( ссылка с идентификатором сессии ) на выдаваемых посетителю страницах сайта ( естественно, "внутреннюю" - то есть ведущую на другие страницы того же самого сайта, с тем же самым доменным именем). Таким образом, идентификатор передается на сервер при каждом заходе посетителя на какую-либо из страниц сайта, будучи либо взятым из соответствующего cookie, установленного посетителю при открытии сессии, либо из адресной строки ссылки, куда этот идентификатор автоматически помещается web-сервером. |
|||
|
||||
CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
А пример кода можно? Мне как раз таки нужно сделать... Но бывает иногда идентификатор передатется в стрке, когда даже включены куки. Как его сразу прописывать?
|
|||
|
||||
AztEK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: 6 Всего: 18 |
А что код?
Это PHP автоматически решает, как передать сессию (в куках или query_string). -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |