Куда девается переменная сессии? помогите плз.

Статус
В этой теме нельзя размещать новые ответы.

nick1m

Постоялец
Регистрация
20 Фев 2008
Сообщения
119
Реакции
8
торможу, не могу понять почему обнуляется переменная $_SESSION['login'] при повторной отправке формы form name="form_select", пара для авторизации z-z как видно из "скрипта", не могу понять где туплю, прописываю другие данные в массив $_SESSION - все ок, здесь ничего не пойму...
PHP:
<?php
session_save_path("./sid");
ini_set("session.use_trans_sid", true);
session_name("authorize");
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<?php
var_dump($_SESSION);
echo '<hr>';
// массив аккаунтов
$login_ar=array("z"=>"z");
// БЛОК АВТОРИЗАЦИИ
// проверяем запрос авторизации и если есть, прописываем в сессию, что авторизован, а также записываем логин в переменную сессии, также если выполнен выход, в авторизацию ставим фэлс, но если был передан пароль и ненашлось совпадения  - прописываем в сессию "дефект", что значит - плохой пароль
// если пользователь ввел данные в форму авторизации
if ($login_ar[trim($HTTP_POST_VARS['login'])]==trim($HTTP_POST_VARS['password'])) {
	$_SESSION['isAuthorized']=true;
	$_SESSION['login']=$HTTP_POST_VARS['login'];
}
else {
	$alert='defect'; 
}
if ($HTTP_POST_VARS['alert']=='oute') {
	$_SESSION['isAuthorized']='false';
	$_SESSION['login']='';
	$alert='oute';
	}
// если пользователь авторизован
if($_SESSION['isAuthorized']!='true'){ 
	if ($alert=='defect') {
		echo "Ошибка авторизации, пожалуйста введите правильно логин и пароль:<br><br>";
	}
	if ($alert=='oute') {
		echo "Сеанс завершён:<br><br>";
	}
	// выводим форму авторизации
	?>
<form name="form_authorized" method="post" action="<?=$_SERVER['SCRIPT_NAME']?>">
    Логин: <input type="text" name="login"> &nbsp;&nbsp;&nbsp;Пароль: <input name="password" type="password"> <input name="" type="submit" value="войти">
</form>	
	<?php
}
// если авторизован
else {
?>
<div align="right">
<form name="form_logoute" method="post" action="<?$_SERVER['SCRIPT_NAME']?>">
  <input type="hidden" name="alert" value="oute">
  <strong>Пользователь: 
	<?php
		echo $_SESSION['login'];
	?>
</strong>
<input type="submit" name="button" id="button" value="Выход">
</form>
</div>
<!-- когда 2-й раз отправляем запрос из последней формы, $_SESSION['login'] присваивается 'NULL' /-->
<hr>
<form name="form_select" method="post" action="">
  <input name="" type="submit" value="поиск">
</form>
<hr>
<?php
}
?>
</body>
</html>
 
вообщем я так понял, что вся причина была в
PHP:
//session_name("authorize");
или не понял вообще

я переписал так:
PHP:
session_save_path("./sid");
ini_set("session.use_trans_sid", true);
session_name("authorize");
session_start();
$authorize_arr=& $_SESSION['authorize']; // массив куда складываем переменные в данной сессии
?>
и все заработало

ну а то, что я пробелы обрезал, то причем здесь убожество, данные надобы еще получше проверить, ничего это не меняло, просто, набрасывал авторизацию...

Но всеравно, пасиб за ответ
 
Вы слишком много наворачиваете в простой программный код.
Что касается моего описания, то я не про trim имеk ввиду, а про использование массивов при сравнении. То что Вы переписали и заработало хорошо, но мой код выше тоже рабочий ))) Вот и думайте что за что отвечает! ;)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху