Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: PHPSESSID Что это и как обойтись без него.
Форумы портала PHP.SU » » Вопросы новичков » PHPSESSID Что это и как обойтись без него.

Страниц (1): [1]
 

1. gheka - 11 Января, 2012 - 18:48:13 - перейти к сообщению
Здравствуйте сейчас хотел переписать авторизацию сделанную на COOKIE,
Хочу сделать с применением SESSION

Авторизация работает с SESSION пока включены приём КУКОВ как их отключаешь авторизация не срабатывает.
Заметил что в куках браузера записывается параметр PHPSESSID если его удаляешь этот кук происходит вылет с сайта.

что это такое и как можно обойтись без него.
Неужели СЕССИИ не работают без применения кукок ( COOKIE ).

Ещё вопрос как можно обновить время жизни записанного COOKIE
То есть как в сессиях стандартное время стоит 15 минут при обновлении страницы сесия перезаписывается и время продлевается ещё на 15 минут.

setcookie("hashes","".md5($_POST['password'])."", time () +60*60)
Записана $_COOKIE ['hashes'] на 60 минут как обновить время жизни при обновлении страницы?
2. Panoptik - 11 Января, 2012 - 18:53:19 - перейти к сообщению
вообще сессия должна опознавать пользователя. и для того чтобы однозначно это сделать он присваивает в куку значение PHPSESSID. если куки отключены сессия попробует поискать это значение в параметре $_GET и если там ничего не найдет то подумает что пользователь не имеет сессии и назначит ему новую, как будто он новый, вне зависимости авторизирован или нет.

поэтому ид_сессии это обязательный параметр, который должен передавать пользователь всякий раз, если не хочет, чтобы его каждый раз спрашивали об авторизации
3. Bio man - 11 Января, 2012 - 18:54:15 - перейти к сообщению
Это ид сессии. если куки отключены то он передается методом GET, если включены соотв. директивы php.ini. без него сервер не может знать что за пользовател пришел и какую сессию ему отдавать.
4. Panoptik - 11 Января, 2012 - 18:54:40 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. setcookie("hashes","".md5($_POST['password'])."", time () +60*60)
вот это вставьте на странице до вывода текста, и кука будет каждый раз обновляться и продлеваться
5. gheka - 11 Января, 2012 - 20:12:19 - перейти к сообщению
Panoptik пишет:
PHP:
скопировать код в буфер обмена
  1. setcookie("hashes","".md5($_POST['password'])."", time () +60*60)
вот это вставьте на странице до вывода текста, и кука будет каждый раз обновляться и продлеваться


это метод я пробовал но при этом создается новый кук и получается что их набирается очень много.
Нельзя сделать чтобы просто обновлялось время жизни не создовая при этом новый кук с токим же именем.

И правильно я понял что без включенных куков сессии работать не будет. И сессии только нужны чтобы не воровали логин и пароли из куков.
И если куки не включить то авторизоваться нельзя будет?
6. Panoptik - 11 Января, 2012 - 20:21:00 - перейти к сообщению
поставьте параметр path="/" в куки
(Добавление)
gheka пишет:
И правильно я понял что без включенных куков сессии работать не будет.
для работы сессии нужны либо куки либо гет-параметры. так как гет-параметры вы вряд ли используете, то по большому счету сессия работать не будет. точнее будет, но для вас эффекта не будет никакого
gheka пишет:
И сессии только нужны чтобы не воровали логин и пароли из куков.

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


gheka пишет:
И если куки не включить то авторизоваться нельзя будет?

авторизироваться можно, но ваша авторизация будет длиться до следующего обновления страницы и после вся информация успешно забудется и прийдется авторизироваться снова
7. gheka - 11 Января, 2012 - 21:20:00 - перейти к сообщению
Panoptik пишет:
поставьте параметр path="/" в куки
(Добавление)
gheka пишет:
И правильно я понял что без включенных куков сессии работать не будет.
для работы сессии нужны либо куки либо гет-параметры. так как гет-параметры вы вряд ли используете, то по большому счету сессия работать не будет. точнее будет, но для вас эффекта не будет никакого
gheka пишет:
И сессии только нужны чтобы не воровали логин и пароли из куков.

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


gheka пишет:
И если куки не включить то авторизоваться нельзя будет?

авторизироваться можно, но ваша авторизация будет длиться до следующего обновления страницы и после вся информация успешно забудется и прийдется авторизироваться снова


Спасибо за разъяснения.

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

То есть по умолчанию оно составляет 15 минут можно как то сделать чтобы было допустим 25 минут т.д?
Имеется без перезагрузки страницы так как я знаю что после перезагрузки время обновляется.
8. Okula - 11 Января, 2012 - 21:30:54 - перейти к сообщению
Можно покопаться в настройках PHP (файл php.ini)
(Добавление)
Параметр
session.gc_maxlifetime = 1440
где 1440 количество секунд по истечению которых сессия будет разрушена.
9. gheka - 11 Января, 2012 - 22:18:27 - перейти к сообщению
Okula пишет:
Можно покопаться в настройках PHP (файл php.ini)
(Добавление)
Параметр
session.gc_maxlifetime = 1440
где 1440 количество секунд по истечению которых сессия будет разрушена.


Это не верянт так как у себя на сервере сделать это можно а вот на хостинге вряд ли.

Других способов нет?

и ещё вопрос не по этой теме. есть запрос.
PHP:
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query ( "SELECT * FROM `" . DB_PREFIX . "user` WHERE `email`='" . $_POST ['usermail'] . "'" );
  3.         if (mysql_num_rows ( $result ) != 0) {
  4.                 $user_list = @mysql_fetch_assoc ( $result );
  5.  


Для чего ставится знак @ ?
перед @mysql_fetch_assoc ( $result );
10. Plusminuz - 11 Января, 2012 - 22:23:44 - перейти к сообщению
@ - подавление ошибок
11. Okula - 11 Января, 2012 - 22:51:03 - перейти к сообщению
gheka пишет:
Это не верянт так как у себя на сервере сделать это можно а вот на хостинге вряд ли.

PHP:
скопировать код в буфер обмена
  1. $set = ini_set('session.gc_maxlifetime', 10000);

Если хостер разрешает изменять эту опцию.
Или в .htaccess строка
CODE (htmlphp):
скопировать код в буфер обмена
  1. php_value session.gc_maxlifetime 10000

Проверить изменилось ли значение можно так
PHP:
скопировать код в буфер обмена
  1. var_dump(ini_get('session.gc_maxlifetime'));

Выведет текущее значение

 

Powered by ExBB FM 1.0 RC1