какой то непонятный бред с сессиями

stanlee

Новичок
какой то непонятный бред с сессиями

кроче есть файл конфига в нес стоит session_start();

он инклудится
значит во всех скриптах сессия поднимается

так вот
на входе естесно форма авторизации

ввели логин и пароль - все путем вошли
но у меня скрипты распиханы по директориям
и при переходе в любую директрию сессия теряется - бред какой то
а если не переходить в директорию сессия не теряется

а если при потере сессии снова ввести логин с паролем
ссессия уже не будет теряться

что за бред такой не подскажете?
 

kvf77

Red Devil
stanlee

ну когда ты расшифруешь свой бред, который написал выше, мы может и скажем что за бред у тебя происходит.

Вот это читал?

http://phpfaq.ru/sessions
 

kvf77

Red Devil
stanlee

ты читал мою ссылку или так и будешь здесь писать "что именно"?
именно то, что твой вопрос совершенно пустой и никто тебе ничего сказать не может, потому что ты неправильно его задал
 

stanlee

Новичок
бать читал и не раз и не в первой

но не писать же мне тут портянки
вы ж их разбирать не будете
 

kvf77

Red Devil
stanlee

ну на нет и суда нет - что поделать - значит ты так хочешь решить свою проблему - топик можно закрывать
 

stanlee

Новичок
лана смотри

вот форма с авторизацией
PHP:
function login_form() {
	global $REQUEST_URI;
	global $submiting;

	if (!$_SESSION["auth_key"]) {
		mt_srand(make_seed());
		#генерируем слуайное число
		$auth_key = mt_rand(1, 10000000);
		#превращаем это число в случайную строку
		$auth_key = md5($auth_key);
		#запоминаем наш случайный ключ к следуйщей странице
		
		//session_id($auth_key);

		$_SESSION["auth_key"] = $auth_key;
	}

	$REQUEST_URI = htmlspecialchars(stripslashes($REQUEST_URI));

	echo "<form action=\"".$REQUEST_URI."\" method=post>
	<table border=0 cellspacing=0 cellpadding=4>
	<tr>
		<td align=right>Имя пользователя:</td>
		<td><input type=text name=auth_username size=32 maxlength=32></td>
	</tr>
	<tr>
		<td align=right>Пароль:</td>
		<td><input type=auth_password name=password size=32 maxlength=32></td>
	</tr>
	<tr>
		<td></td>
		<td><input type=hidden name=submiting value=".$_SESSION["auth_key"].">
		<input type=submit value='Вход в систему'></td>
	</tr>
	</table>
	</form>";
}
в конфиге естесно session_start();

а в файле авторизации

PHP:
if ($_SESSION["auth_username"]) {
	$sel = "SELECT * FROM ".DB_PREFIX."user WHERE user_name = \"".$_SESSION["auth_username"]."\" AND visible = 1";
	$res = query($sel);
	$cnt = mysql_num_rows($res);

	if ($cnt > 0) {
		list($user_id, $group_id, $user_name, $password) = mysql_fetch_row($res);

		if ($_SESSION["auth_username"] != $user_name || $_SESSION["auth_password"] != $password) {
			login_header();
			login_form();
			login_footer();
			exit;
		} else {
			$_SESSION["auth_user_id"] = $user_id;
			$_SESSION["auth_group_id"] = $group_id;
			$_SESSION["auth_username"] = $user_name;
			$_SESSION["auth_password"] = $password;
		}
	} else {
		login_header();
		login_form();
		login_footer();
		exit;
	}
} else {
	if (isset($submiting)) {
		if ($auth_password) $auth_password = md5(substr($auth_password, 0, 20));

		$sel = "SELECT * FROM ".DB_PREFIX."user WHERE user_name = \"".$auth_username."\" ".($auth_password?"AND password = \"".($auth_password)."\"":"")." AND visible = 1";
		$res = query($sel);
		$cnt = mysql_num_rows($res);

		if ($cnt > 0) {
			list($user_id, $group_id, $user_name, $password) = mysql_fetch_row($res);

			if ($auth_username == $user_name && $auth_password == $password && $submiting == $_SESSION["auth_key"] && strlen($_SESSION["auth_key"]) == 32) {
				$_SESSION["auth_user_id"] = $user_id;
				$_SESSION["auth_group_id"] = $group_id;
				$_SESSION["auth_username"] = $user_name;
				$_SESSION["auth_password"] = $password;
			} else {
				login_header();
				login_form();
				login_footer();
				exit;
			}
		} else {
			login_header();
			login_form();
			login_footer();
			exit;
		}
	} else {
		login_header();
		login_form();
		login_footer();
		exit;
	}
}
 

kvf77

Red Devil
stanlee

зачем тут форма?
нфига тут всякие случайные ключи?

и потом, зачем мне твоя форма, если сессия у тебя теряется не на этом этапе?

короче, читаем вслед за прошлой ссылкой вот эту:

http://phpfaq.ru/debug
 
Сверху