[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Редирект в форме логина
Gate007
Код скрипта login.php:
<?
mysql_connect(localhost,doctor) OR DIE("Не могу создать соединение ");
mysql_select_db('doctor');
session_start();
if ($_SESSION['user_id'][0]==1)
{
Header("Location: /admin.php");
exit;
}
echo '
<html>
<body>
<form action="/login.php" method="POST">
логин: <input type = text name=user_name> пароль: <input type = password name=user_pass> <br>
<input type = submit name=add value="Войти в систему"><br>
</form>'
;
if (!empty($_POST['add']))
{
$query = sprintf("SELECT pass FROM user where name LIKE ('%s')",
mysql_real_escape_string($_POST['user_name']));
$result=mysql_fetch_row(mysql_query($query));
if ((!empty($result)) AND ($_POST['user_pass']==$result[0]))
{
echo 'Готово! Сейчас вы будете перемещены';
$query = sprintf("SELECT id FROM user where name LIKE ('%s')",
mysql_real_escape_string($_POST['user_name']));
$result=mysql_fetch_row(mysql_query($query));
$_SESSION['user_id'] = $result;
}
else
{
echo 'Неверные данные для доступа!';
}
}

echo '<br>';
echo "
</body>
</html>"
;
?>

Проблема: не перенаправляется на целевую страницу (admin.php) после ввода верного логина-пароля. Нужно заново обновлять страницу, тогда сделает перенаправление.
Протестировано на опере 9.63.
Каким образом можно сделать перенаправление без перезагрузки страницы?
Гуглинг по форуму дал, что лучше всего перенаправление реализовать через хеадер, что и сделано. Но с другой стороны, хеадер нужно выводить до html документа.
Какой может быть выход?



Спустя 1 час, 6 минут, 48 секунд (15.11.2009 - 20:13) MainVoid написал(а):
Все верно. у тебя данные в сессию заносятся в середине страницы, а редирект - в начале. Т.е. во время
if ($_SESSION['user_id'][0]==1)

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

Спустя 19 минут, 18 секунд (15.11.2009 - 20:32) Gate007 написал(а):
Спасибо за наводку smile.gif
Все получилось:
<?
mysql_connect(localhost,doctor) OR DIE("Не могу создать соединение ");
mysql_select_db('doctor');
session_start();
if (!empty($_POST['add']))
{
$query = sprintf("SELECT pass FROM user where name LIKE ('%s')",
mysql_real_escape_string($_POST['user_name']));
$result=mysql_fetch_row(mysql_query($query));
if ((!empty($result)) AND ($_POST['user_pass']==$result[0]))
{
$query = sprintf("SELECT id FROM user where name LIKE ('%s')",
mysql_real_escape_string($_POST['user_name']));
$result=mysql_fetch_row(mysql_query($query));
$_SESSION['user_id'] = $result;
if ($_SESSION['user_id'][0]==1)
{
Header("Location: /admin.php");
exit;
}
echo 'Готово! Сейчас вы будете перемещены';
}
else
{
echo 'Неверные данные для доступа!';
}
}


echo '
<html>
<body>
<form action="/login.php" method="POST">
логин: <input type = text name=user_name> пароль: <input type = password name=user_pass> <br>
<input type = submit name=add value="Войти в систему"><br>
</form>'
;

echo "
</body>
</html>"
;
?>

Доведу скрипт до более читабельного состояния, проштудирую и выложу на аудит smile.gif

Спустя 25 минут, 20 секунд (15.11.2009 - 20:57) MainVoid написал(а):
Молодец. Рад, что помог.
Быстрый ответ:

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