возврат из формы авторизации обратно на главную авторизованного юзера

Kuchuluk

Новичок
здравствуйте.
авторизацию и регистрацию пользователей начал учить недавно. и вот такая проблемка возникла. на сайте файл гостевой книги guestbook.php, в котором, чтобы можно было оставить отзыв, нужно авторизоваться. Форму авторизации я сделал в отдельном файле login.php, код такой
PHP:
<?php
require_once 'connectDB.php';

if (isset($_REQUEST["submit"]))
{
	$login = mysql_real_escape_string($_REQUEST["login"]);
	$password = md5(mysql_real_escape_string($_REQUEST["password"]));
	$query = "SELECT * FROM users WHERE login='{$login}' AND password='{$password}'";
	$result = mysql_query($query) or die(mysql_error());
	$onerow = mysql_fetch_row($result);
	
	if (!empty($onerow))
		{
			session_start();
			$_SESSION['auth'] = true;
			$_SESSION['login'] = $_REQUEST["login"];
			echo "Поздравляем, {$_SESSION['login']}! Вы успешно авторизованы!<br>";
		}
		else
		{
			echo "Неправильно ввели логин или пароль.";
		}
}
else
{
?>
<form action="login.php" method="POST">
Логин: <input name="login" type="text">
Пароль: <input name="password" type="password">
<input type="submit" name="submit" value="отправить">
</form>
<?php
}
?>
этот файл работает и выводит сообщение "Поздравляем, user1! Вы успешно авторизованы!". но как сделать, чтобы пользователь обратно возвращался на главную страницу или на страницу гостевой книги, но уже авторизованным? Я сначала думал просто ссылку сделать и в качестве параметром поставить переменные логин и пароль, но ведь через GET метод их нельзя передавать...
Подскажите, пожалуйста как можно сделать.
 

Фанат

oncle terrible
Команда форума
в чем вопрос?
как обратно возвращался?
или уже авторизованным?
 

artoodetoo

великий и ужасный
Kuchuluk, у вас косяков целый вагон. Если отвечать только на поставленный вопрос, то здесь не хватает буквально проверки "пользователь уже авторизован" )))
По вашей технологии получается что-то такое:
"чтобы пользователь обратно возвращался на главную страницу..."
PHP:
header('Location: /');
exit();
"...но уже авторизованным"
PHP:
session_start()
if (isset($_SESSION['login'])) {
  // делаем то, что можно авторизованному пользователю
} else {
  // это анонимус
}
 

artoodetoo

великий и ужасный
Ну теперь ты знаешь как оно работает. Вставь в правильное место
 

Kuchuluk

Новичок
ты сначала добейся чтобы работало так, как задумано. остальное потом
спасибо за наводку на мысль. правда у меня только вот так заработало
PHP:
header('Location: guestbook.php');
. переадресует теперь нормально, еще одну штуку узнал, в качестве параметра в ссылку надо вставлять переменную $_SESSION["login"], вот так
PHP:
header('Location: guestbook.php?login='.$_SESSION['login']);
а какие еще косяки есть?
 

artoodetoo

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

md5(mysql_real_escape_string($x)) это нелепо! ты знаешь зачем нужен escape и какие данные возвращает md5?

то же самое с $_REQUEST. ты не заешь чем он отличается от $_POST или это способ спрятать косяки в логике, например вот это говорит о потере контроля:
спасибо за наводку на мысль. правда у меня только вот так заработало
PHP:
header('Location: guestbook.php');
. переадресует теперь нормально, еще одну штуку узнал, в качестве параметра в ссылку надо вставлять переменную $_SESSION["login"], вот так
PHP:
header('Location: guestbook.php?login='.$_SESSION['login']);
зачем это???

я бы посоветовал перечитать справку по PHP про суперглобальные переменные $_POST, $_SESSION, $_REQUEST, а затем попытаться написать всё с нуля, не подсматривая в старое.
 
Сверху