PHP : Как сохранить данные сессии ? @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 10 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
Xeon
новый человек
0
Сообщения: 63
Зарегистрирован: 08.07.02
Откуда: novosibirsk
Заголовок сообщения: PHP : Как сохранить данные сессии ?
Сообщение Добавлено: 15 Август 2002, 12:11:00 
Вобщем есть такой код:
<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
Тоже креатор
13
Сообщения: 4359
Зарегистрирован: 17.11.01
Откуда: Moscow
Заголовок сообщения: PHP : Как сохранить данные сессии ?
Сообщение Добавлено: 15 Август 2002, 12:30:00 
Я на админке на одном из своих сайтов делал "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
новый человек
0
Сообщения: 63
Зарегистрирован: 08.07.02
Откуда: novosibirsk
Заголовок сообщения: PHP : Как сохранить данные сессии ?
Сообщение Добавлено: 15 Август 2002, 12:54:00 
не работает... [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 Муж.
постоянный участник
9
Сообщения: 2719
Зарегистрирован: 18.04.02
Откуда: Hell of a Place
Заголовок сообщения: PHP : Как сохранить данные сессии ?
Сообщение Добавлено: 15 Август 2002, 13:24:00 
1) советую всегда явно начинать сессию через session_start (); (page1.php)

2) после header ("Location: …"); должен стоять exit ();

3) для определения передачи переменной использовать isset ($_SESSION['var_name']);

-----

какой версии PHP?
Raziel[SD]
новый человек
0
Сообщения: 137
Зарегистрирован: 26.07.02
Откуда: Москва
Заголовок сообщения: PHP : Как сохранить данные сессии ?
Сообщение Добавлено: 16 Август 2002, 00:49:00 
смотри описание функции 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]
новый человек
0
Сообщения: 137
Зарегистрирован: 26.07.02
Откуда: Москва
Заголовок сообщения: PHP : Как сохранить данные сессии ?
Сообщение Добавлено: 16 Август 2002, 00:53:00 
Если будет непонятно, объясню подробней, как только здесь появлюсь [img]images/smiles/icon_smile.gif[/img].
Xeon
новый человек
0
Сообщения: 63
Зарегистрирован: 08.07.02
Откуда: novosibirsk
Заголовок сообщения: PHP : Как сохранить данные сессии ?
Сообщение Добавлено: 16 Август 2002, 09:09:00 
Я тоже разбирался в этом мануале.. =)
Видел и этот код.
Но не понял, что он мне даст. Был бы рад, если бы ты объяснил зачем он вообще нужен! [img]images/smiles/icon_smile.gif[/img]
Raziel[SD]
новый человек
0
Сообщения: 137
Зарегистрирован: 26.07.02
Откуда: Москва
Заголовок сообщения: PHP : Как сохранить данные сессии ?
Сообщение Добавлено: 16 Август 2002, 15:50:00 
а ты попробуй его вставить в файл, где используешь сессию, и все будет понятно.
Xeon
новый человек
0
Сообщения: 63
Зарегистрирован: 08.07.02
Откуда: novosibirsk
Заголовок сообщения: PHP : Как сохранить данные сессии ?
Сообщение Добавлено: 17 Август 2002, 09:58:00 
Попробовал:
Fatal error: Cannot redeclare close() in /path_to_file/file.php on line XX

[img]weep.gif[/img]
Raziel[SD]
новый человек
0
Сообщения: 137
Зарегистрирован: 26.07.02
Откуда: Москва
Заголовок сообщения: PHP : Как сохранить данные сессии ?
Сообщение Добавлено: 18 Август 2002, 00:22:00 
вот работающий вариант, просто надо было тот пример немножко исправить, все данные сессии лежат в каталоге '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] ]
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 10 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100