Страница авторизации

B
На сайте с 28.07.2012
Offline
50
624

Всем привет. Загнался вопросом, перекопал кучу материалов по теме, но сам так и не смог реализовать. Есть скрипт авторизации:

<?php    


if (!empty($_POST))
{
$login = (isset($_POST['login'])) ? mysql_real_escape_string($_POST['login']) : '';

$query = "SELECT `salt`
FROM `users`
WHERE `login`='{$login}'
LIMIT 1";
$sql = mysql_query($query) or die(mysql_error());

if (mysql_num_rows($sql) == 1)
{
$row = mysql_fetch_assoc($sql);

// итак, вот она соль, соответствующая этому логину:
$salt = $row['salt'];

// теперь хешируем введенный пароль как надо и повторям шаги, которые были описаны выше:
$password = md5(md5($_POST['password']) . $salt);

// и пошло поехало...

// делаем запрос к БД
// и ищем юзера с таким логином и паролем

$query = "SELECT `id`
FROM `users`
WHERE `login`='{$login}' AND `password`='{$password}'
LIMIT 1";
$sql = mysql_query($query) or die(mysql_error());

// если такой пользователь нашелся
if (mysql_num_rows($sql) == 1)
{
// то мы ставим об этом метку в сессии (допустим мы будем ставить ID пользователя)

$row = mysql_fetch_assoc($sql);
$_SESSION['user_id'] = $row['id'];


// если пользователь решил "запомнить себя"
// то ставим ему в куку логин с хешем пароля

$time = 86400; // ставим куку на 24 часа

if (isset($_POST['remember']))
{
setcookie('login', $login, time()+$time, "/");
setcookie('password', $password, time()+$time, "/");
}

// и перекидываем его на закрытую страницу
print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=main.php'>";
exit;

// не забываем, что для работы с сессионными данными, у нас в каждом скрипте должно присутствовать session_start();
}
else
{
die('Такой логин с паролем не найдены в базе данных. И даём ссылку на повторную авторизацию. — <a href="index.php">Авторизоваться</a>');
}
}
else
{
die('пользователь с таким логином не найден, даём ссылку на повторную авторизацию. — <a href="index.php">Авторизоваться</a>');
}
}


?>

Все работает исправно, но появилась необходимость для некоторых пользователей сделать другую страницу после входа. В таблице создал еще одно поле для пользователей "Group" Нужно сделать следующее: Если у пользователя в поле "group"запись admin - то переходит на страницу main.php, если user, то на страницу work.php

p.s. я только учусь....

IL
На сайте с 20.04.2007
Offline
435
#1

Если в учебных целях

1. в текущем коде можно обойтись без двух запросов - сначала переписать

2. в переписанном коде запрашивать из базы ещё и group (или вообще 'SELECT *')

3. "перебрасывать" можно, используя HTTP-заголовок вместо Meta

<?php header ('Location:main.php');
... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
[Удален]
#2

другая страница?

<?

if ($rank==1) { header ('Location:1.php') }

else { header ('Location:2.php') }

или

if ($rank==1) { header ('Location:1.php') }

if ($rank==2) { header ('Location:2.php') }

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий