информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetПортрет посетителяЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / web building
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
А что, session_id - необязательная штука? 06.10.04 08:45  Число просмотров: 3290
Автор: 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