не работает сессия..

sunyang

Мастер
Регистрация
25 Апр 2009
Сообщения
440
Реакции
30
пытаюсь перейти на страницу parser.php со страницы index.php и проверить сессию, но в сессию ничего не записывается...

содержимое index.php:

PHP:
<?php
// display not
function actNote(){
	global $status;
	if(!empty($status)){
		print "<br><div class='stat'><img src='images/error.gif' style='float:left'>&nbsp;{$status}</div><br>";
	}
}

// string entity
function str_ent($str){
	$str = str_replace('"','&quot;', $str);
	$str = str_replace('<', '&lt;',  $str);
	$str = str_replace('>', '&gt;',  $str);
	return $str;
}

//if(!defined('in_site')) die('Hacking attempt');


// login
if(!empty($_POST['submit']) && $_POST['submit']=='login')
{
	$username = str_ent($_POST['username']);
	$password = str_ent($_POST['password']);
	
	if(empty($username) or empty($password)) {
		$status = "All field are required";
	}
	else{
		$admin_username = "admin";
		$admin_password = "pass";
		
		if($admin_username!=$username){
			$status = "Ошибка имя пользователя";
		}
		else if($admin_password!=$password){
			$status = "Ошибка пароля";
		}
		else{

			// set admin name
			$_SESSION['administrator'] = $username;
			
			// redirect to main page
			header("Location: parser.php");
			
			// exit page
			exit();
		}
	}
}
?>


	<? actNote() ?>

	<h2>Вход в парсер</h2>
	
	<table cellspacing="1" cellpadding="5" border="0">
	<form method="post">
	<input type="hidden" name="submit" value="login">
	<tr>
		<td align="right">Имя ползователья:</td>
		<td><input type="text" name="username" class="text"></td>
	</tr>
	<tr>
		<td align="right">Пароль:</td>
		<td><input type="password" name="password" class="text"></td>
	</tr>
	<tr>
		<td colspan=2 align="center">
			<input type="submit" value="Вход" class="button">
			<input type="reset" value="Сброс" class="button">
		</td>
	</tr>
	</form>
	</table>

содержимое perser.php, где проверяем сессию:

PHP:
<?
// проверка сессии админа
echo $_SESSION['administrator'];
?>
- ничего не выдает(

Куда пропала $_SESSION['administrator'] ?))
 
в оба файла добавь
PHP:
session_start();
 
да, добавил session_start();
заработало, НО...прописываю в начале parser.php
PHP:
<? session_start();
if(!defined($_SESSION['administrator'])) die('Hacking attempt');
?>
после чего идет другой код

выдает Hacking attempt

Хотя логи в index.php ввожу верные.

из-за чего такое может быть?

Добавлено через 21 минуту
с этим разобрался)
Тепер не могу убить сессию, тобишь сделать кнопку выход.

вот кнопка:

HTML:
<p><a href="/parser/index.php?act=logout"><b>ВЫХОД из парсера</b></a></p>

PHP:
<?
// logout
if(!empty($_SESSION['administrator']) && !empty($_GET['act']) && $_GET['act']=='logout'){
	$_SESSION['administrator'] = null;
	session_destroy();
	header("Location: index.php");
}
?>

все равно хранится сессия.

Как убить сессию админа?
 
попробуй использовать session_unset()
 
Обычно убиваю сессии так:
PHP:
$_SESSION=array();
И все что там было от авторизации (id юзера например, статус, прочая мелочь) канет в лету.
 
Как убить сессию админа?
PHP:
<? 
session_start();
if(isset($_GET['act']) && $_GET['act']=='logout'){
unset($_SESSION['administrator']); // разрегистрировали переменную
session_destroy(); // разрушаем сессию
header("Location: index.php"); //редиректимся
}
?>
 
Сначала уничтожаете КАЖДУЮ переменную, а потом саму сессию! Только так будет работать!
 
PHP:
unset($_COOKIE[session_id()]);
$_SESSION = array();
session_unset(); // для кучи :)
session_destroy();
 
Назад
Сверху