информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Сетевые кракеры и правда о деле ЛевинаСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft обещает радикально усилить... 
 Ядро Linux избавляется от российских... 
 20 лет Ubuntu 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / web building
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Big respect! Почему-то во всех ФАКах об этом умолчали :( 06.10.04 08:43  Число просмотров: 3251
Автор: catlion <catlion> Статус: Member
<"чистая" ссылка>
<web building>
PHP sessions 05.10.04 10:04  
Автор: catlion <catlion> Статус: Member
Отредактировано 05.10.04 10:30  Количество правок: 3
<"чистая" ссылка>
Вначале каждой страницы сайта есть такой код:
<?php if(!isset($_SESSION["rnum"])) { $rnd = rand(10000,99999); $sessid = md5(microtime()."fuck the spammers fuck em all!!!".$rnd); session_name("auth"); session_id($sessid); session_start(); $_SESSION["rnum"] = $rnd; } else { session_name("auth"); session_start(); }

По идее, $_SESSION["rnum"] должен сохраняться. Ан нет, при переходе по страницам он меняется. Как быть?
Смысл в том, что мне этот параметр нужен в форме. При нажатии на сабмит я должен его проверить, но он-то уже поменялся.
Я так понимаю, что каждый раз стартуется НОВАЯ сессия. Но почему?
Вот из-за этого: 05.10.04 11:14  
Автор: Rook <Alex Sergeev> Статус: Member
<"чистая" ссылка>
Вот из-за этого:

1.
> session_name("auth");
> session_id($sessid);
> session_start();

2.
> session_name("auth");
> session_start();

Если session_id нужно, то передавай его в тех же глобальных переменных, например:
$_SESSION["session_id"]=$sessid;

а потом, после else
> session_name("auth");
> session_id($_SESSION["session_id"]);
> session_start();

Разумеется, ее тоже надо проверять на наличие.
Один чёрт 07.10.04 06:55  
Автор: catlion <catlion> Статус: Member
<"чистая" ссылка>
if(!isset($_SESSION["session_id"])) { $rnd = rand(10000,99999); $sessid = md5(microtime() . "fuck the spammers fuck em all!!!" . $rnd); session_name("auth"); session_id($sessid); session_start(); $_SESSION["rnum"] = $rnd; $_SESSION["session_id"] = $sessid; } else { session_name("auth"); session_id($_SESSION["session_id"]); session_start(); }
И один чёрт каждый раз - новая сессия. Подозреваю, что косяк м.б. в том, что всё это делается на Денвере, т.е. под виндой... Буду пробовать native enviroinment :)
Та же байда :( Каждый раз - новая сессия. 07.10.04 07:38  
Автор: catlion <catlion> Статус: Member
Отредактировано 07.10.04 09:33  Количество правок: 6
<"чистая" ссылка>
GET / HTTP/1.1
Host: my.localhost
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040616
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://my.localhost/?page=feedback
Cookie: auth=1083d24e85551f998504823d6c045da7

HTTP/1.x 200 OK
Date: Thu, 07 Oct 2004 04:33:55 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.3
X-Powered-By: PHP/4.3.3
Set-Cookie: auth=85a88ac6ab29eeaef15b33f1be85b7cd; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=koi8-r

Я не понял, а где сохраняется $_SESSION? В куке, как мы видим, нету. (Ошибочка, есть. Открыл куку в /tmp и нашёл там и $rnum и $session_id...) Я попытался делать проверку не на $_SESSION['session_id'], а на $_GET['auth']. Тогда срабатывает else, но session_id($_SESSION['session_id']) выдаёт ошибку! Типа нету такой переменной. Мне что, из кук руками выдёргивать переменные?

session.save_handler = files
session.save_path = /tmp
session.use_cookies = 1
; session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = 0
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
;session.entropy_length = 16
;session.entropy_file = /dev/urandom
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0 // -------------------- поставил 1 в htaccess
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
тогда так 07.10.04 12:29  
Автор: Rook <Alex Sergeev> Статус: Member
<"чистая" ссылка>
session_start();

if(!isset($_SESSION["session_id"])) {
$rnd = rand(10000,99999);
$sessid = md5(microtime() . "fuck the spammers fuck em all!!!" . $rnd);
session_name("auth");
session_id($sessid);
$_SESSION["rnum"] = $rnd;
$_SESSION["session_id"] = $sessid;
} else {
session_name("auth");
session_id($_SESSION["session_id"]);
}
Вылечилось через ж.. 08.10.04 05:28  
Автор: catlion <catlion> Статус: Member
Отредактировано 08.10.04 09:08  Количество правок: 4
<"чистая" ссылка>
session_name('auth'); session_start(); if(!isset($_SESSION['session_id'])) { $rnd = rand(10000,99999); $_SESSION['rnum'] = $rnd; $_SESSION['session_id'] = session_id(); print("New session (ID = $_SESSION[session_id])"); } else { session_id($_SESSION['session_id']); print("Old session (ID = $_SESSION[session_id])"); }

Т.е. пришлось session_id() отдать на откуп движку...
Век живи, век учись :) 08.10.04 11:59  
Автор: Rook <Alex Sergeev> Статус: Member
<"чистая" ссылка>
[off] Не зря богатые люди пользуют ASP :) 07.10.04 16:20  
Автор: catlion <catlion> Статус: Member
<"чистая" ссылка>
А что, session_id - необязательная штука? 06.10.04 08:45  
Автор: catlion <catlion> Статус: Member
<"чистая" ссылка>
нет, не обязательная 06.10.04 12:36  
Автор: Rook <Alex Sergeev> Статус: Member
Отредактировано 06.10.04 12:36  Количество правок: 1
<"чистая" ссылка>
но, как говорят, recommended to use
Big respect! Почему-то во всех ФАКах об этом умолчали :( 06.10.04 08:43  
Автор: catlion <catlion> Статус: Member
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach