Сессии и переменные

alexon

Новичок
Сессии и переменные

Привет.
При регистрации переменной в сесси (register_globals=on) например $_SESSION["test"]=1, к ней можно обратиться из любого места скрипта, в том числе из функции как $test, можно ли как то запретить это, чтобы доступ был только через $_SESSION, а переменная $test была независимой. register_globals в off ставить бы не хотелось.

И сразу второй вопрос, насколько целесообразно отключать register_globals?
 

DiMA

php.spb.ru
Команда форума
1. register_globals =off
2. пишешь криво - ставь офф. Не боишься наделать дыр - он.
 

alexon

Новичок
Да когда ставлю register_globals=off возникают некоторые проблемы. Когда скрипт запускается первый раз - переменные в файл сессии записываются нормально, а после скажем сабмита формы при попытке записать новые переменные ничего не получается - не хочет записывать их и все. Никаких ошибок не выдает. Я пробовал это только под w2k+apache+php4.2.2, не знаю, может под linux все и работает, однако то, что не работает под виндами - доставляет неудобства, в частности для отладки не будешь же каждый раз закачивать скрипт на сервер, чтоб посмотреть работает нет.
 

sokov

Guest
Лови данные формы в $_POST, $_GET, $_REQUEST, точно также, как переменные сессии ловишь
 

sokov

Guest
Поддерживаю. Даже могу модерить. Опыт есть.
 

makRo

Guest
Автор оригинала: Ямерт
А может, создать форум, посвященный работе с сессиями?
Лучше написать большими жирными буквами "О сессиях СДЕСЬ" и ссылку на php.spb.ru, пусть читают !
 

Ямерт

The Old One
Автор оригинала: makRo
Лучше написать большими жирными буквами "О сессиях СДЕСЬ" и ссылку на php.spb.ru, пусть читают !
На сайте клуба есть форум, посвященный MySQL. По твоей логике всем хватило бы линков http://www.mysql.com и http://www.php.net/manual/en/ref.mysql.php .
Тем не менее форум есть.
Если звёзды зажигают - значит, это кому-то нужно? ;)
А тем более, ИМХО, вопросы, связанные с сессиями, тоже достаточно важны, чтобы их обсуждать отдельно.
Да и разобраться с сессиями посложней, пожалуй, чем с PHP+mysql.
 

tony2001

TeaM PHPClub
"нафиг-нафиг!" кричали пьяные гости, выпроваживая хозяев.

вы еще по каждому разделу мана сделайте форумы.
по MySQL форум есть, потому что MySQL - это отдельный продукт(почувствуйте разницу с сессиями) и отдельный разговор.
 

sokov

Guest
Но ветка отдельная всё же нужна.
Мне кажется, проблема заключается в том, что нет хорошего материала о концептуальных основах сессий, что это вообще такое, что оно умеет делать и как работает. Здесь http://www.php.net/manual/en/ref.session.php уж больно технократически всё изложено.
Если кто знает толковую статью - то ссылку в студию.
 

sokov

Guest
Дас, читали. Подойдёт за неимением лучшего.
Ссылку надо крупным текстом в начале такой ветки повесить!!!
 

LuK

Guest
Вот такая проблема:
Warning: open(/tmp\sess_02ac33c8f18134a3435af2aabc98658f, O_RDWR) failed: m (2) in Unknown on line 0

Warning: open(/tmpsess_02ac33c8f18134a3435af2aabc98658f, O_RDWR) failed: m (2) in d:inetpubwwwroot\index.php on line 75

Warning: Cannot add header information - headers already sent by (output started at d:inetpubwwwrootindex.php:75) in d:inetpubwwwroot\funcs.small.php on line 36

Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

соответственно код:
строка 75: session_start("forums");
PHP:
function lastvisit()
{
	global $forumsess,$realm,$config,$eflastvisit;
	
	if (!session_is_registered("forumsess"))
		session_register("forumsess");
	
	if ($eflastvisit)	
		$forumsess[$realm][lastvisit] = $eflastvisit;
	
	$expire = time() + (60*60*24*365);
строка 36: 	setcookie("eflastvisit", time(), $expire);

	if (!$forumsess[$realm][lastvisit])	
		$forumsess[$realm][lastvisit] = $eflastvisit;
	
}
и по жизни проблемы с открытием/записью файлов... :(
 

sokov

Guest
В php.ini укажи session.save_path = "Любой_существующий_каталог"

В 36 тогда тоже ошибка уберётся.
 

LuK

Guest
в 36-й исправилась, но в 75-й проблема осталась...
 

sokov

Guest
Не знаю, если пхп как модуль - сервер перезапустить не забудь. Да и броузер тоже закрой и заново всё попробуй.
 
Сверху