|
Страница 1 из 1 [ Сообщений: 10 ] |
Автор |
Сообщение |
Xeon
новый человек
|
|
Вобщем есть такой код: <BLOCKQUOTE><font size="1" face="Verdana, Tahoma, sans-serif">code:</font><HR><pre> // page1.php <? session_start(); session_register("Xvar"); $Xvar = 99; setcookie("Xcookie", $Xvar, time()+3600); header("location: page2.php"); ?>
// page2.php <? session_start(); echo "session variable: ".$Xvar; echo "<br>"; echo "cookie variable: ".$HTTP_COOKIE_VARS['Xcookie']; $tmpv = session_get_cookie_params(); echo "<br>-------------------<br>"; echo "cookie lifetime: ".$tmpv["lifetime"]; ?> </pre><HR></BLOCKQUOTE>
по-идее это рабочий код... проблема в том, что после первого редиректа header я вижу значения сохраненных переменных: как сессии, так и куки... после рефреша страницы элементарным [F5] все эти данные теряются, хотя в куках эксплорера файл самой куки есть! кто-нибудь может подсказать, как сохранить данные? форум пишу, без автологина - никак!
и ещё вопрос: почему lifetime постоянно меняется?! я уже и session_id ставил - все равно меняется!
|
|
 |
|
 |
iD
SubAdmin Тоже креатор
|
|
Я на админке на одном из своих сайтов делал "sessions.php", который инклюдил во все файлы админки:
<BLOCKQUOTE><font size="1" face="Verdana, Tahoma, sans-serif">code:</font><HR><pre> <? unset($s); session_name("s"); session_start(); session_register("ufirstname","ulastname","uemail","uicq","ucomments","uphone","umobile","urights","ulogin","upassword","uid","usite"); $s = session_id(); ?> </pre><HR></BLOCKQUOTE>
И потом спокойно работал со всеми переменными из session_register. При этом кукизы использовать не приходилось (насколько я понял, при работе с сессиями PHP сам выбирает - с куки ему работать или с QUERY_STRING)…
|
|
 |
|
 |
Xeon
новый человек
|
|
не работает... [img]images/smiles/icon_sad.gif[/img] попробовал.
по сути проблема выливается в такую:
//page1.php … session_register("ss"); $ss = 333; header("location: page2.php");
//page2.php … session_start(); echo $ss; // выводит на экран: 333 header("location: page3.php");
//page3.php session_start(); echo $ss; echo $HTTP_COOKIE_VARS["ss"]; echo $HTTP_SESSION_VARS["ss"]; // НЕ ВЫВОДИТ НА ЭКРАН НИХРЕНА!!! [img]weep.gif[/img]
Я с ушами зарылся в файлы PHPBB-форума... Они тоже сохраняют данные через setcookie и потом вытаскивают из куков с помощью HTTP_COOKIE_VARS... админ сервера говорит, что "все параметры enabled и должно работать!" кто-то 3.14здит мне кажется...
|
|
 |
|
 |
Original Demon
 постоянный участник
|
|
1) советую всегда явно начинать сессию через session_start (); (page1.php)
2) после header ("Location: …"); должен стоять exit ();
3) для определения передачи переменной использовать isset ($_SESSION['var_name']);
-----
какой версии PHP?
|
|
 |
|
 |
Raziel[SD]
новый человек
|
|
смотри описание функции session_set_save_handler вот пример из мануала:
<?php function open ($save_path, $session_name) { global $sess_save_path, $sess_session_name; $sess_save_path = $save_path; $sess_session_name = $session_name; return(true); }
function close() { return(true); }
function read ($id) { global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id"; if ($fp = @fopen($sess_file, "r")) { $sess_data = fread($fp, filesize($sess_file)); return($sess_data); } else { return(""); // Must return "" here. }
}
function write ($id, $sess_data) { global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id"; if ($fp = @fopen($sess_file, "w")) { return(fwrite($fp, $sess_data)); } else { return(false); }
}
function destroy ($id) { global $sess_save_path, $sess_session_name; $sess_file = "$sess_save_path/sess_$id"; return(@unlink($sess_file)); }
function gc ($maxlifetime) { return true; }
session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");
session_start();
// proceed to use sessions normally
?>
|
|
 |
|
 |
Raziel[SD]
новый человек
|
|
Если будет непонятно, объясню подробней, как только здесь появлюсь [img]images/smiles/icon_smile.gif[/img].
|
|
 |
|
 |
Xeon
новый человек
|
|
Я тоже разбирался в этом мануале.. =) Видел и этот код. Но не понял, что он мне даст. Был бы рад, если бы ты объяснил зачем он вообще нужен! [img]images/smiles/icon_smile.gif[/img]
|
|
 |
|
 |
Raziel[SD]
новый человек
|
|
а ты попробуй его вставить в файл, где используешь сессию, и все будет понятно.
|
|
 |
|
 |
Xeon
новый человек
|
|
Попробовал: Fatal error: Cannot redeclare close() in /path_to_file/file.php on line XX
[img]weep.gif[/img]
|
|
 |
|
 |
Raziel[SD]
новый человек
|
|
вот работающий вариант, просто надо было тот пример немножко исправить, все данные сессии лежат в каталоге 'sess_dir', поэтому незабудь его создать.
ses.php <?php function open ($save_path, $session_name) { global $sess_save_path, $sess_session_name;
$sess_save_path = 'sess_dir'; $sess_session_name = $sess_session_name; return(true); }
function close() { return(true); }
function read ($id) { global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id"; if ($fp = @fopen($sess_file, "r")) { $sess_data = fread($fp, filesize($sess_file)); return($sess_data); } else { return(""); // Must return "" here. }
}
function write ($id, $sess_data) { global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id"; if ($fp = @fopen($sess_file, "w")) { return(fwrite($fp, $sess_data)); } else { return(false); }
}
function destroy ($id) { global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id"; return(@unlink($sess_file)); }
function gc ($maxlifetime) { return true; }
session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");
session_start();
?> page1.php <?php require ('ses.php'); session_register('testvar'); $testvar = 'Session is work'; ?> <a href="page2.php">go to next page</a> page2.php <?php require ('ses.php'); echo $testvar; ?>
[ 18 Августа 2002: Исправлено Raziel[SD] ]
|
|
 |
|
 |
|
Страница 1 из 1 [ Сообщений: 10 ] |
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
|
|