[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Опять работа с сессиями
UScorp
Доброго времени суток. Помогите разобраться с сессиями.

Пытаюсь написать процедуру, которая вставляет в нужное мне место форму для ввода логина и пароля (если пользоватль еще не авторизирован) или какую-то информацию уже авторизованному пользователю (типа "Здравствуйте, ИВАНОВ ИВАН ИВАНОВИЧ").

Делаю это следующим образом:

/* ****************************************************************************** */
function _LoginMenu() /* если еще не авторизирован */
{
echo "
<table border=0>
<tr><td align=center>
<form method='POST'>
<table border=1>
<tr>
<td>Логин:</td>
<td><input type='text' name='login' size='15'></td>
</tr>
<tr>
<td>Пароль:</td>
<td><input type='password' name='pass' size='15'></td>
</tr>
<tr>
<td align=right colspan=2><input type='submit' name='ok' value='Вход'></td>
</tr>
</table>
</form>
</td></tr>
</table>"
;
}
/* ****************************************************************************** */
function _LoginedMenu() /* если уже авторизирован */
{
$user_login = $_SESSION['login'];
echo "
<table border=0>
<tr><td align=center>
Добрый день,
$user_login
</td></tr>
</table>"
;
}
/* ****************************************************************************** */
function PrintLoginPanel()
{
//echo "!!!-" . $_SESSION['user_id'] . "-!!!";

if (isset($_SESSION['user_id']))
{
_LoginedMenu();
}
elseif(isset($_POST['ok']))
{
$db = mysql_connect('localhost', 'root', '');
mysql_select_db('Nurlan', $db);

//проверяем есть ли пользователь с таким login'ом и password'ом
$login = mysql_real_escape_string($_POST['login']);
$pass = mysql_real_escape_string($_POST['pass']);
$query = "SELECT * FROM users WHERE login='$login' AND password='$pass'";
$res = mysql_query($query) or trigger_error(mysql_error().$query);

if ($row = mysql_fetch_assoc($res))
{
session_start();
$_SESSION['user_id'] = $row['id'];
$_SESSION['login'] = $row['login']; //устанавливаем login & pass
$_SESSION['pass'] = $row['password'];

_LoginedMenu();
}
else
{
echo "Введены не верные логин или пароль ";
_LoginMenu();
}
mysql_close();
}
else
{
_LoginMenu();
}
}



Затем в конкретном файле (напирмер index.php) делаю вызов (это весь код, содержащийся в данном файле):


<?php
if (isset($_REQUEST[session_name()])) session_start();

include "php_funcs.php";
PrintMainStruct("index_content.php");
?>


где внутри функции "PrintMainStruct()" вызывается "PrintLoginPanel()".

Теперь, при вводе верного логина и пароля и нажатии ОК, выводится сообщение уже авторизованного пользователя. А после обновления страницы снова получаю неавторизованного пользователя. Где я ошибся?

_____________
Чем меньше мы начинаем думать, тем больше у нас появляется единомышленников.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.