Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
 Аватар для Landser
57 / 7 / 4
Регистрация: 18.04.2009
Сообщений: 429

Работа сессий в php

09.12.2016, 18:11. Показов 832. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Учусь использовать сессии. Сначала открываю её:
PHP
1
 session_start();
потом кладу туда нужные мне переменные, потом таким же образом открываю сессию в других php файлах, работаю с этими переменными, потом по нажатию на ссылку выход вызываю скрипт exit.php и прибиваю сессию:
exit.php:
PHP
1
2
3
session_start();
.........
session_destroy();
в процессе работы вывожу для наглядности
PHP
1
2
3
echo session_name(); 
echo session_id;
echo session_save_path;
session_name всегда PHPSESSID, я в курсе, что так и должно быть, когда вывожу session_id, он получается что то вроде jhhsibt87g8q9nr8p13vsmfdt5, при этом в session_save_path создается одноименный файлик без расширения,
в котором хранятся сессионные переменные, когда грохаю сессию - он обнуляется, и вопрос: почему session_id при каждой новой сессии не меняется, а меняется только при перезапуске браузера (у меня chrome, но пробовал на разных).
Так и должно быть, или нет? и как быть, еcли я хочу, чтобы у каждого пользователя создавался свой session_id, который я потом буду использовать, при логировании допустим, разумно ли такое моё желание? Работаю на локальной машине. Apache 2.2.22 и php 5.3.5, OS windows 7
спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.12.2016, 18:11
Ответы с готовыми решениями:

Использование сессий в php
Всем привет. Я написал код регистрации, авторизации на php с использованием бд. Вот теперь стал вопрос над тем, чтобы после авторизации...

Авторизация на php с использованием сессий.
У меня сейчас на сайте работает авторизация используя куки. То есть юзер вводит логин и пароль скрипт сверяет их с базой данных и вешает...

Готовые примеры PHP сессий
Кто-нить занимался на PHP сессиями, очень буду благодарен за примеры )

7
wq
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
09.12.2016, 18:16
Цитата Сообщение от Landser Посмотреть сообщение
Так и должно быть, или нет?
так и должно. для изменения id сессии используйте session_regenerate_id(true);
Цитата Сообщение от Landser Посмотреть сообщение
и как быть, еcли я хочу, чтобы у каждого пользователя создавался свой session_id
есть подозрение что таковой создается автоматически
1
 Аватар для Landser
57 / 7 / 4
Регистрация: 18.04.2009
Сообщений: 429
09.12.2016, 18:58  [ТС]
wq, спасибо за ответ!
есть подозрение что таковой создается автоматически
что именной создаётся автоматически? Session Id при какдом Session_start после session_destroy?
я так пробовал:
проверил первого пользователя,если проверка прошла,то стартанул сессию, вывел session id, грохнул сессию
проверил второго пользователя,начал сессию, вывожу session id, а он такой же. В session path в одноимённом файле хранятся уже соответственно другие сессионные переменные, которые привязаны к ко второму пользователю,но сам sesion id тот же..
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
10.12.2016, 10:19
Цитата Сообщение от Landser Посмотреть сообщение
проверил первого пользователя...
проверил второго пользователя...
но сам sesion id тот же..
А браузер пробовали закрывать между этими "проверками"?

И зачем вообще Вам этот ID дался? После того как уничтожен, никакие старые данные из него не вытащить.
1
 Аватар для Landser
57 / 7 / 4
Регистрация: 18.04.2009
Сообщений: 429
10.12.2016, 10:56  [ТС]
pav1uxa, спасибо за ответ! Если так подумать-то и не нужен он мне, просто на всякий случай буду писать его в бд и всё..

но тут другая проблема выяснилась:

Вот залогинился я, работаю на страничке, завелась сессия, в неё были помещены мои переменные, а потом не нажал выход , а просто закрыл вкладку в браузере, не сам браузер.

И получается, что session destroy не сработал, и можно будет в этом же браузере ввести что то вроде адрес/важная_страница и туда пустит, да и при том скажет мне, привет "моё имя", тк в сессии лежит мой логин и со всеми последствиями, с этим как бороться? Чтобы при закрытии именно вкладки сессия завершалась, да притом не каждой вкладки - а то работать невозможно будет)) а как нибудь проверять, что если закрыты все вкладки, на которых открыта сессия, то тогда завершать её при закрытии текущей вкладки, а если ещё остались вкладки, на которых работает сессия, то просто закрыть текущую страницу без destroy? возможны такие проверки?
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
10.12.2016, 11:15
Цитата Сообщение от Landser Посмотреть сообщение
чтобы у каждого пользователя создавался свой session_id
так и есть
Цитата Сообщение от Landser Посмотреть сообщение
И получается, что session destroy не сработал, и можно будет в этом же браузере ввести что то вроде адрес/важная_страница и туда пустит, да и при том скажет мне, привет "моё имя"
вы браузер "по рукам пускаете"? или "мое имя" просто через время решил продолжить работу?
в любом случае, если есть такая необходимость - находите настройку и меняете срок "жизни" сессии
1
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
10.12.2016, 11:23
Цитата Сообщение от Landser Посмотреть сообщение
просто на всякий случай буду писать его в бд и всё..
Бессмысленно.

Цитата Сообщение от Landser Посмотреть сообщение
возможны такие проверки?
Только если с помощью JS. Скажем, каждые 10 секунд отправляем AJAX-запрос на сервер, где происходит запись, что юзер с таким-то id был на сайте в такое-то время. И при каждом заходе на сайт проверять время последнего ajax-запроса. Если он был более 10 секунд назад - значит, вкладка была ранее закрыта, надо обнулять сессию.
1
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
10.12.2016, 11:45
Цитата Сообщение от Landser Посмотреть сообщение
И получается, что session destroy не сработал, и можно будет в этом же браузере ввести что то вроде адрес/важная_страница и туда пустит, да и при том скажет мне, привет "моё имя", тк в сессии лежит мой логин и со всеми последствиями, с этим как бороться? Чтобы при закрытии именно вкладки сессия завершалась, да притом не каждой вкладки - а то работать невозможно будет)) а как нибудь проверять, что если закрыты все вкладки, на которых открыта сессия, то тогда завершать её при закрытии текущей вкладки, а если ещё остались вкладки, на которых работает сессия, то просто закрыть текущую страницу без destroy? возможны такие проверки?
Ну с тем же успехом можно сказать: "А что если за спиной пользователя кто-то подойдет незаметно, и подсмотрит его личные данные? Как с этим бороться!?".

Это уже проблема пользователя что он "Выход" нажать забывает.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.12.2016, 11:45
Помогаю со студенческими работами здесь

Покажите пример кода PHP с использованием сессий.
Приветствую. Подскажите, плиз, простой пример сессии для использования на страницах сайта для ввода и отображения данных в/из БД. Т.е....

Некоректная работа сессий в Opera при авторизации
Добрый день. Задался вопросом написать скрипт авторизации на своем сайте на PHP. Сделал, использовал сессии браузера, все работает хорошо,...

Срок сессий в PHP
Интересно, что происходит с сессиями после того, как пользователь не заходил долго на сайт. Серваку-то не поступает информация о том, что...

Шифрация сессий: скрипт PHP передает неверные данные в программу
Вот есть код php: function xorencode($str, $key) { while(strlen($key) < strlen($str)) { $key .= $key; } return...

Работа с несколькими таблицами из БД в одном create.php и update.php в YII2
Всем привет. Нужна ваша помощь. В общем есть 3 таблицы в БД, в первой хранятся "Темы", во второй хранятся "Вопросы", третья...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru