Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удаление сессии и как с эти бороться 
:(
    Опции темы
Sniper
Дата 19.7.2008, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 511
Регистрация: 8.5.2002

Репутация: нет
Всего: 2



проблема такая.

Мои скрипты могут стоять без действия сутками, т.е человек вечером поработал с сайтом  и оставил компьютер включённым на нём [на сайте] - пришёл утром и продолжил работу (его сессия не должна удалиться)

но как известно через 24 минуты простоя "мусоросборщик" вычищает просроченные сессии рандомно с вероятностью 1%

как сделать чтобы данные сессии не удалялись по крайней мере неделю? Может как-то через cookie? или сессиями можно обойтись?

Это сообщение отредактировал(а) Sniper - 19.7.2008, 20:17


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
Feldmarschall
Дата 19.7.2008, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Это противоречит принципу работы сессий.
Что у тебя такого важного в сессии хранится, что нельзя записать туда заново?
PM   Вверх
Sniper
Дата 19.7.2008, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 511
Регистрация: 8.5.2002

Репутация: нет
Всего: 2



Цитата

Что у тебя такого важного в сессии хранится, что нельзя записать туда заново?

всё как у всех IP адрес и логин пользователя
Цитата


что нельзя записать туда заново?


вот тут не понятно, как перезаписать?

Это сообщение отредактировал(а) Sniper - 19.7.2008, 20:21


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
Feldmarschall
Дата 19.7.2008, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



И всего-то?  И ты думаешь, что если тебя этот форум запомнил то это он сессию на год растянул?
автологин куками делается, а не сессиями
PM   Вверх
Sniper
Дата 19.7.2008, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 511
Регистрация: 8.5.2002

Репутация: нет
Всего: 2



Цитата(Feldmarschall @  19.7.2008,  17:54 Найти цитируемый пост)
автологин куками делается, а не сессиями 

а как?


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
Feldmarschall
Дата 19.7.2008, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



осподи.
да посмотри в любом поисковике "PHP автологин"
ставишь куку. уникальную для юзера. если пришла - логин и пароль вводить не надо.
что непонятного-то?
PM   Вверх
Sniper
Дата 19.7.2008, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 511
Регистрация: 8.5.2002

Репутация: нет
Всего: 2



т.е надо сессии удалить и переделать всё на куки?


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
Feldmarschall
Дата 19.7.2008, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



господи, твоя воля
нет, переделывать не надою.
авторизация делается сессиями.
автологин - куками

PM   Вверх
Sniper
Дата 19.7.2008, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 511
Регистрация: 8.5.2002

Репутация: нет
Всего: 2



Цитата

авторизация делается сессиями.
автологин - куками

какова последовательность действий всего этого? 

1. создаём сессию
2. записываем логин в сессию
3. создаём куку
4. записываем логин пароль в куку (шифруем)

Теперь сессия перестала существовать. что тогда делать?
заново создавать сессию? из куки записывать в сессию данные?


Это сообщение отредактировал(а) Sniper - 19.7.2008, 22:43


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
Feldmarschall
Дата 19.7.2008, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



1. просим логин, пароль и галочку "запомнить меня", как это проиходит на этом форуме и на миллионах других сайтов, некоторые из которых ты, может быть, как я очень надеюсь, видел.
2. проверяем логин и пароль. если правильные, то
3. стартуем сессию.
4. проверяем галочку, и если нажата, то ставим уникальную куку.
а дальше -
0. проверяем куку, и, если есть, то не просим п.1 и не делаем п.2, а сразу п.3

PM   Вверх
Sniper
Дата 19.7.2008, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 511
Регистрация: 8.5.2002

Репутация: нет
Всего: 2



если выйти с сайта, то да так и будет. А если я нахожусь на какойто странице, я афк, прошли 24 минуты я вернулся, тыкаю на какую-то кнопку на этой странице, а всё, сессии нет уже, что тогда? по нажатию кнопки стартовать сессию? а так нельзя "заголовки уже отправлены" ;-). что то я пока не понимаю ;-(

Это сообщение отредактировал(а) Sniper - 19.7.2008, 22:58


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
Feldmarschall
Дата 19.7.2008, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Цитата(Sniper @  19.7.2008,  22:57 Найти цитируемый пост)
"заголовки уже отправлены"

С какой стати? 

Какая разница "находишься ты на странице и вернулся" или "выйти с сайта а потом зайти"? Что вообще такое "нахожусь на странице"?
Тебя, похоже, надо послать популярную ссылку на танке почитать.

Это сообщение отредактировал(а) Feldmarschall - 19.7.2008, 23:07
PM   Вверх
Sniper
Дата 19.7.2008, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 511
Регистрация: 8.5.2002

Репутация: нет
Всего: 2



сейчас страницы выглядят примерно так:

somepage.php
Код

<?php
session_start();
<div>
<span>$_SESSION['id_user'];</span></div>

if (isset($_POST['actionbutton'])) { //исключительно в целях демонстрации ;-)
  print $_SESSION['id_user'];
}

<form action="" method="post">
<input type="submit" value="submit" name="actionbutton"/>
</form>
?>


вот у меня в браузере эта страница http://mymegasuperhost.ru/somepage.php (я нахожусь на странице somepage.php]) сессия активна и всё хорошо. можно кликать на кнопку и мы увидим логин пользователя.

Если сессия удалилась(прошли 24 минуты) а я нажал на кнопку Submit, то я получаю кучу ошибок, потому что $_SESSION['id_user'] то уже нету.


Так вот вопрос: что делать когда на кнопку нажали, а сессии уже нет?

Это сообщение отредактировал(а) Sniper - 19.7.2008, 23:15


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
Feldmarschall
Дата 19.7.2008, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Я даже затрудняюсь, что на это ответить.

Ну, чтобы не было ошибок, надо, наверное, проверять.
Если юзер залогинен, то выводить $_SESSION['id_user']. а если не залогинен - то не выводить.
Тогда и ошибок не будет.

Цитата(Sniper @  19.7.2008,  23:11 Найти цитируемый пост)
что делать когда на кнопку нажали, а сессии уже нет?

а что сделать, когда с сайта ушли, и назад пришли - ты знаешь? Вот и сделай то же самое.

Это сообщение отредактировал(а) Feldmarschall - 19.7.2008, 23:20
PM   Вверх
Sniper
Дата 19.7.2008, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 511
Регистрация: 8.5.2002

Репутация: нет
Всего: 2



Цитата
Если юзер залогинен, то выводить $_SESSION['id_user']. а если не залогинен - то не выводить.
Тогда и ошибок не будет.


здорово конечно, но так не пойдёт ;-) 

Код

if (isset($_POST['actionbutton'])) {
  echo "тут выводим нужный текст";
//тут проверили куки допустим (хотя это жесть проверять куки на каждой такой кнопке)
//стартуем сессию
  session_start(); //я не могу написать так как на печать было выведено выше
// читаем куки и присваиваем сессии значения этих куки
}



--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
Feldmarschall
Дата 19.7.2008, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



а зачем ты поменял местами if (isset($_POST['actionbutton']))  и session_start(); ?

вообще, эти смайлики твои меня немного раздражают. ты бы писал поподробнее. чтобы я сразу на все твои вопросы ответил.
ты каких-то элементарных вещей не понимаешь, но я никак не могу понять - каких именно.
я пока только понял, как ты пишешь код - накопировал разных кусков, про которые где-то сказали, что "так правильно". но при этом зачем они, и как работают - понимание слабое. А часто - вообще неправильное. В результате и получаются такие усмешечки "так не пойдёт ;-)"
пойдет. все пойдет. если хотя бы чуть-чуть выучить, что такое веб-сайт и как он общается с браузером.
а если уж ты сподобишься проверять свои идеи на практике - так и вовсе проблем никаких не будет.

Добавлено через 10 минут и 9 секунд
Как я уже упоминал, по такой схеме работают все сайты - от этого до мейл.ру. поэтому первый шаг к реализации - это сначала ПОВЕРИТЬ мне. Что сработает. Этим ты значительно облегчишь себе задачу.
PM   Вверх
Sniper
Дата 20.7.2008, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 511
Регистрация: 8.5.2002

Репутация: нет
Всего: 2



Цитата(Feldmarschall @  19.7.2008,  20:38 Найти цитируемый пост)
а зачем ты поменял местами if (isset($_POST['actionbutton']))  и session_start(); ?

да не менял я их местами! ты думаешь что я вообще ламер?
полный код (для понимания):

Код

<?php
session_start();
<div>
<span>$_SESSION['id_user'];</span></div>
if (isset($_POST['actionbutton'])) {
  echo "тут выводим нужный текст";
//тут проверили куки допустим (хотя это жесть проверять куки на каждой такой кнопке)
//стартуем сессию
  session_start(); //я не могу написать так как на печать было выведено выше
// читаем куки и присваиваем сессии значения этих куки
}
<form action="" method="post">
<input type="submit" value="submit" name="actionbutton"/>
</form>
?>



Цитата(Feldmarschall @  19.7.2008,  20:38 Найти цитируемый пост)
я пока только понял, как ты пишешь код - накопировал разных кусков, про которые где-то сказали, что "так правильно". 

ха ха ха.

как сделать автологин я понял.

расмотрим ещё раз код.

Код

<?php
session_start();
<div>
<span>$_SESSION['id_user'];</span></div>
if (isset($_POST['actionbutton'])) { //исключительно в целях демонстрации ;-)
  print $_SESSION['id_user'];
}
<form action="" method="post">
<input type="submit" value="submit" name="actionbutton"/>
</form>
?>


Давай так, на примере ещё раз.
значение $_SESSION ['id_user'] используются везде у меня в коде.
когда сессия пропадает через 24 минуты , пропадает и это значение массива - мне нужно его восстановить в общем сделать так чтобы оно не удалялось довольно долго. Как это сделать?

Это сообщение отредактировал(а) Sniper - 20.7.2008, 09:12


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
Nigel
Дата 20.7.2008, 09:59 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


познаю мир
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 20.11.2007

Репутация: 7
Всего: 19



для начала прочитайте это. Для того, чтобы сессия жила дольше 24 мин., есть session.gc_maxlifetime.
В первом куске кода: зачем на 9-й строке стартуете сессию, если она уже есть на 2-ой?

PM MAIL   Вверх
Feldmarschall
Дата 20.7.2008, 10:30 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Nigel, для того, чтобы сессия жила дольше 24 мин. должны быть очень веские основания. И уж никак к этим основаниям не относятся туманные представления об основах функционирования веб-сайтов.

Добавлено @ 10:33
Если ты понял, как сделать автологин, то какая проблема сделать в начале страницы автологин, и спокойно продолжить работу?
Думаю, тебе надо ещё с ним разобраться.
Предлагаю эту тему закрыть, поскольку вопрос "как продлить сессию" не имеет практического смысла, и начать новую, посвященную автологину.



Это сообщение отредактировал(а) Feldmarschall - 20.7.2008, 10:42
PM   Вверх
Sniper
Дата 20.7.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 511
Регистрация: 8.5.2002

Репутация: нет
Всего: 2



размышляя в стоматологическом кресле я понял как надо сделать:

начало любой страницы

Код

<?php

session_start();

if (!isset($_SESSION['id_user'])) {
  $_SESSION['id_user'] = $_COOKIE['username'];
}



когда пользователь первый раз логинится сделать соответствующие setcookie 

правильно?



--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
Feldmarschall
Дата 20.7.2008, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



не совсем. реальная система сильно сложнее. но примерно так, да.
если писать просто id, то любой сможет залогиниться под видом любого юзера - id обычно найти совсем несложно. твой, например, здесь - 192.
надо писать что-то уникальное, и проверять по базе.

Это сообщение отредактировал(а) Feldmarschall - 20.7.2008, 12:31
PM   Вверх
Sniper
Дата 20.7.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 511
Регистрация: 8.5.2002

Репутация: нет
Всего: 2



Цитата

надо писать что-то уникальное, и проверять по базе.


что-то уникальное это что и по какой базе проверять?  smile 


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
Feldmarschall
Дата 20.7.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



случайное число. по базе данных. в которую его записать.
PM   Вверх
Sniper
Дата 20.7.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 511
Регистрация: 8.5.2002

Репутация: нет
Всего: 2



Цитата(Feldmarschall @  20.7.2008,  11:22 Найти цитируемый пост)
случайное число. по базе данных. в которую его записать. 

а чем это отличается от просто id?
наверное это рандомное число надо менять с какой0то частотой... объясните подробнее


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
Feldmarschall
Дата 20.7.2008, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Отличается тем, что его никто не знает, в отличие от id
можешь сделать какой-нибудь хэш, к примеру, md5(секретное слово (общее для всего сайта+пароль юзера))
PM   Вверх
Sniper
Дата 20.7.2008, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 511
Регистрация: 8.5.2002

Репутация: нет
Всего: 2



Цитата

можешь сделать какой-нибудь хэш, к примеру, md5(секретное слово (общее для всего сайта+пароль юзера))



опять таки попрошу рассказать последовательность действий.

1. создаём секретное слово
2. пишем в БД, файл

что потом? как использовать?

3. 
4.

Это сообщение отредактировал(а) Sniper - 20.7.2008, 19:40


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
Feldmarschall
Дата 20.7.2008, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



как обычно. 
точно так же, как с id
если у тебя пришел if в куке, ты можешь узнать по базе, что это за пользователь?
если у тебя пришел секретный идентификатор, то какая проблема ТОЧНО ТАК ЖЕ найти в базе запись, содержащую такую строку?

PM   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1521 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.