Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | |
нет, не обязательная 06.10.04 12:36 Число просмотров: 3299
Автор: Rook <Alex Sergeev> Статус: Member Отредактировано 06.10.04 12:36 Количество правок: 1
|
но, как говорят, recommended to use
|
<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
|
|
|
|