[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сессии в php
Воитель
Всем привет и спасибо за прошлые ответы.
По вашим рекомендациям, начал осваивать сессии. Прочитал 3 статьи(одна из них очень даже не слабая) Вроде во всём разобрался, кроме закрытий сессии.
У меня такая ситуация:
Есть страниц 15 админки, перед входом в админку вводиться логин и пароль, но как защитить остальные страницы?
Админ только 1, и я не хочу создавать лишние сессии, хочу чтобы была только одна сессия, которая при правильном вводе данных открывается, и на дальнейших страницах админки проверяется. Но мне не понятно как закрыть сессию, т.к. абсолютно не понятно на какой странице админки будет админ.
Можете мне пояснить как следует пользоваться сессиями в данном случае.
Т.е. где открыть? где проверять правильность переменной сессии и ГДЕ её ЗАКРЫТЬ???



Спустя 4 минуты, 22 секунды (4.12.2008 - 20:36) vasa_c написал(а):
Перечитайте ещё раз эти статьи.
Как открыть, проверить и закрыть сессию, это и есть суть сессий. Если не понимаете этого, говорить "Вроде во всём разобрался" рано.

Спустя 2 часа, 35 минут, 29 секунд (4.12.2008 - 23:12) Воитель написал(а):
Просто на тех простых примерах что в обучениях не совсем понятно с закрытием. Я как понял они автоматически закрываются. Это так? через 6 часов вроде.

Спустя 4 минуты, 29 секунд (4.12.2008 - 23:16) ApuktaChehov написал(а):
После завершения работы с сессией сначала нужно разрегистрировать все переменные сессии, а затем вызвать функцию
session_destroy();


Спустя 2 минуты, 2 секунды (4.12.2008 - 23:18) vasa_c написал(а):
Зачем вам оно?
Пользователь ушёл, кука удалилась, всё он больше не зайдёт - сессия завершена.
А то когда PHP удалит не нужные больше файлы с данными, это уже его дело.

Спустя 7 часов, 59 минут, 49 секунд (5.12.2008 - 07:18) Воитель написал(а):
Вот если бы у меня была бы страничка 'выход' то вопросов бы не было. Я просто недо понимаю, на странице входа, я открываю сессию ввожу переменную, во всех остальных страницах админки я продолжаю сессию и проверяю значение переменной, а что делать с закрытием сессии? где его разместить? сессия сама по себе закроется по истечению какого-то времени? Куки от сессии сами удаляются?

Спустя 4 часа, 33 минуты, 51 секунда (5.12.2008 - 11:52) kirik написал(а):
Куки, в которых хранится сессия удаляются после закрытия браузера, а сессия на сервере живет 1800 секунд по дефолту. Подробную инфу о сессиях можно узнать через phpinfo(); (раздел Sessions)
Цитата
а что делать с закрытием сессии?

Цитата
После завершения работы с сессией сначала нужно разрегистрировать все переменные сессии, а затем вызвать функцию
session_destroy();


Спустя 1 час, 1 минута, 32 секунды (5.12.2008 - 12:54) Krist_ALL написал(а):
когда ты ввел правильный логин и пароль, сессия создалась, когда ты ходишь по админке сессия живет и каждый раз проверяеца на валидность(по желанию) и сделаю себе страничку отделбную или добавь код в шапку админки. напирмер при onclick На ссылку ВЫХОД происходит session_destroy();

пойми сам механизм сессий - прочитай еще 100 статей

Спустя 2 дня, 2 часа, 46 минут, 8 секунд (7.12.2008 - 15:40) Воитель написал(а):
Народ, скажите а что будет если сессию не закрывать, она сама закроется?

Спустя 5 часов, 22 минуты, 42 секунды (7.12.2008 - 21:02) Krist_ALL написал(а):
да

Спустя 1 день, 2 часа, 12 минут, 12 секунд (8.12.2008 - 23:15) Pinoplast написал(а):
если несложно скиньте пример сесии, чтоб код посмотреть!!!

Спустя 2 минуты, 7 секунд (8.12.2008 - 23:17) Pinoplast написал(а):
и если можна ссылки на литературу какуюто чтоб почитать про них, желательно с примерами.

Спустя 9 минут, 50 секунд (8.12.2008 - 23:27) Adil написал(а):

Спустя 1 месяц, 18 дней, 21 час, 34 минуты, 58 секунд (27.01.2009 - 21:02) Pinoplast написал(а):
Как зделать доступной страницу через сесию, через саму функцию session_start( ) или через $_SESSION['name']?
Имею ввиду проверкучерез наявность сесии.

Спустя 26 минут, 9 секунд (27.01.2009 - 21:28) Pinoplast написал(а):
Помогите решыть такую ситуацыю, создал сесию по логину и паролю, сверил ее получил доступ к следющей странице, вышел через кнопку, и закрыл сесию, но прикол в том что клавишей назад или вперед браузера, могу без сесии попасть обратно на туже страницу на которую надо пароль и логин как это убрать, чтоб если нажал назад а оно просило опять повторно создать сесию и провериться на пароль и логин. Если можна скрипт выкенте простенький чтоб я оценил в чем просчет моей логики, как мне зделать такую проверку.

Спустя 23 минуты, 56 секунд (27.01.2009 - 21:52) lawbreaker написал(а):
Ну я пологаю что так! [php]//если пароль и логин правельный то создаём сейсию
session_start();
$_SESSION['admin'] = false;
if ($pass=='safdsdf' AND $login == 'admin')
{
$_SESSION['admin'] = true;
}
потом следущая страница админа
if ($_SESSION['admin'] = true)
{
//admin панел
} else
{
//если нет то показываем фигу smile.gif
}

Спустя 54 минуты, 28 секунд (27.01.2009 - 22:46) lаwbreaker написал(а):
lawbreaker user posted image ты сам ни хера не знаешь, и еще других сбиваешь!
Вот дыра в безопасности:
PHP
$_SESSION['admin'] = true;

Никогда нельзя так делать!

Спустя 9 минут, 4 секунды (27.01.2009 - 22:55) lawbreaker написал(а):
а дыра то где? Почему нельзя?

Спустя 2 минуты, 15 секунд (27.01.2009 - 22:57) kirik написал(а):
эээмм.. Кажется у нашего малыша раздвоение личности..

Спустя 1 минута, 30 секунд (27.01.2009 - 22:59) Penoplast написал(а):
Цитата (Pinoplast @ 27.01.2009 - 18:28)
Помогите решыть такую ситуацыю, создал сесию по логину и паролю, сверил ее получил доступ к следющей странице, вышел через кнопку, и закрыл сесию, но прикол в том что клавишей назад или вперед браузера, могу без сесии попасть обратно на туже страницу на которую надо пароль и логин как это убрать, чтоб если нажал назад а оно просило опять повторно создать сесию и провериться на пароль и логин. Если можна скрипт выкенте простенький чтоб я оценил в чем просчет моей логики, как мне зделать такую проверку.

Если сессию уже убили (закрыли), то никакими путями уже не откроешь страницу под админом - пока опять не авторизуешься. А то что вы можете опять "клавишей назад или вперед браузера" вернуться на страницу где вы еще авторизованы, это всего лишь открытие сохраненной страницы из вашего кэша на харде. Так что ни о каком обратном возврате закрытой сессии речи быть не может.
Так что уважаемый Пенопласт - ваше знакомство с механизмом работы сессии, так и осталось лишь на стадии знакомства.
user posted image

Спустя 14 минут, 58 секунд (27.01.2009 - 23:14) lawbreaker написал(а):
ЕТО НЕ Я НАПИСАЛ
Цитата
lawbreaker user posted image ты сам ни хера не знаешь, и еще других сбиваешь!
Вот дыра в безопасности:
PHP
$_SESSION['admin'] = true;

Никогда нельзя так делать!

---------------------------------------- ето не я

Спустя 1 минута, 17 секунд (27.01.2009 - 23:15) lawbreaker написал(а):
так чё так низя?

Спустя 2 часа, 3 минуты, 36 секунд (28.01.2009 - 01:19) twin написал(а):
Самый простой способ - поставить полю тип password, тогда при возврате пароль сохраняться не будет.

Спустя 6 минут, 42 секунды (28.01.2009 - 01:26) twin написал(а):
Цитата
так чё так низя?

lawbreaker, малыш, вот так зя.
if($_SESSION['admin'] == true)

Спустя 1 час, 34 минуты, 12 секунд (28.01.2009 - 03:00) kirik написал(а):
Цитата (twin @ 27.01.2009 - 17:26)
lawbreaker, малыш, вот так зя.
if($_SESSION['admin'] == true)

Не..низя.. А если $_SESSION['admin'] не существует?

Спустя 5 часов, 2 минуты, 41 секунда (28.01.2009 - 08:02) twin написал(а):
Тогда смотрим в лог и считаем попытки взлома. Это полезно даже иногда бывает.

Спустя 50 минут, 49 секунд (28.01.2009 - 08:53) kirik написал(а):
Цитата (twin @ 28.01.2009 - 00:02)
Тогда смотрим в лог и считаем попытки взлома

А злой хацкер смотрит Notice: Undefined index: admin in /var/www/myhost/index.php on line XXX, и уже знает путь до сайта на сервере smile.gif
Про error_reporting(0); лучше забыть и никогда не вспомнитать.

Спустя 19 минут, 37 секунд (28.01.2009 - 09:13) twin написал(а):
Ну кто же нотисы на экран то тащит? В лог их, батенька, в лог...

Спустя 11 часов, 48 минут, 28 секунд (28.01.2009 - 21:01) Sylex написал(а):
вы забиваете на этот нотайс?

Спустя 4 минуты, 16 секунд (28.01.2009 - 21:06) twin написал(а):
Не знаю на счет этого конкретно, но иногда нотисы в логах бывают полезны. Если логика построена так, что нотис появляется при каком то несанкционированном действии, можно отследить попытки и предпринять меры.

Спустя 33 минуты, 48 секунд (28.01.2009 - 21:39) kirik написал(а):
twin, нотис - торможение программы (ровно как и заглушка нотиса через @).

Цитата (twin @ 28.01.2009 - 13:06)
можно отследить попытки и предпринять меры.

Можно! smile.gif Изначально писать правильно, тобишь прежде чем использовать - проверять на наличие. А в логи пусть тогда идут реально серьезные ошибки.

Спустя 7 минут, 24 секунды (28.01.2009 - 21:47) twin написал(а):
Ну вот опять меня не поняли. Почему может не быть сессионной переменной? По каким причинам, если она должна быть определена (я не этот скрипт имею ввиду, вообще)? Только если руками отключена сессия.То есть появляется три возможных состояния переменной - true, false и undefined. Первые два нотиса не вызовут, а вот третий пропишет нотис в лог. То есть мы будем знать, пытались ли и сколько раз попасть на страницу с принудительно отключенной сессией. То бишь сколько попыток взлома.

Спустя 19 минут, 7 секунд (28.01.2009 - 22:06) kirik написал(а):
Цитата (twin @ 28.01.2009 - 13:47)
Почему может не быть сессионной переменной?

В данном случае речь идет об элементе массива в глобальной переменной сессии. И его может не быть по той причине, если его заранее не определили (как false в нашем случае).
Даже не в этом вопрос. Какие попытки защиты от взлома вы будете предпринимать? Банить айпишники? А если сбой произошел случайно на стороне клиента, и ошибка тоже записалась в лог?
Вы ведь сами говорите, что к юзверям нужно относиться с уважением wink.gif

Спустя 42 минуты, 44 секунды (28.01.2009 - 22:49) twin написал(а):
Банить я вообще считаю никого и никогда нельзя. Это посягательство на свободу слова. К тому же абсолютно бесполезное занятие, настоящий флудер спамер или троль найдет способ, как своего добиться. А ставить в угол таких безобидных мальчиков как ежик, ну смешно просто. Это моё личное мнение и наверняка вызовет бурю возмущений, по этому сразу говорю - я ничего ни кому не советую, просто высказал свою позицию. А какие меры защиты - да разные. Можно проверить потециально уязвимые места, загрузку файлов к примеру или запись в бд за этот период, когда была активность. Посмотреть куда и как лезли, да и много интересного можно из логов узнать. По этому и говорю, что при правильном построении логики нотисы - полезная вещь.

Спустя 36 минут, 43 секунды (28.01.2009 - 23:25) kirik написал(а):
Цитата (twin @ 28.01.2009 - 14:49)
Банить я вообще считаю никого и никогда нельзя.

Банить можно и нужно (временно) если человек не внимает предупреждениям. Иначе как наказать этого неродивого юзера?

Ладно, давайте закроем тему спора. Ни я ни вы свою точку зрения не изменим smile.gif

Спустя 7 часов, 45 минут, 20 секунд (29.01.2009 - 07:11) Sylex написал(а):
предпочитаю писать совершенно без нотисов.. они тормозят программу, но хотя по тестам очень мизерно...

а логику программы организовывать так как нужно (что нужно писать в лог и проч)

Спустя 13 часов, 8 минут, 37 секунд (29.01.2009 - 20:19) Pinoplast написал(а):
Цитата (Penoplast @ 27.01.2009 - 19:59)
Цитата (Pinoplast @ 27.01.2009 - 18:28)
Помогите решыть такую ситуацыю, создал сесию по логину и паролю, сверил ее получил доступ к следющей странице, вышел через кнопку, и закрыл сесию, но прикол в том что клавишей назад или вперед браузера, могу без сесии попасть обратно на туже страницу на которую надо пароль и логин как это убрать, чтоб если нажал назад а оно просило опять повторно создать сесию и провериться на пароль и логин. Если можна скрипт выкенте простенький чтоб я оценил в чем просчет моей логики, как мне зделать такую проверку.

Если сессию уже убили (закрыли), то никакими путями уже не откроешь страницу под админом - пока опять не авторизуешься. А то что вы можете опять "клавишей назад или вперед браузера" вернуться на страницу где вы еще авторизованы, это всего лишь открытие сохраненной страницы из вашего кэша на харде. Так что ни о каком обратном возврате закрытой сессии речи быть не может.
Так что уважаемый Пенопласт - ваше знакомство с механизмом работы сессии, так и осталось лишь на стадии знакомства.
user posted image

То как убить эти кешы?

Спустя 9 минут, 37 секунд (29.01.2009 - 20:29) Sylex написал(а):
Цитата (Pinoplast @ 29.01.2009 - 23:19)
То как убить эти кешы?

редиректом после авторизации


_____________
Вечно учусь.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.