KF

Техника => Технические вопросы => Тема начата: kuzma от 26-12-2007, 22:39:44



Название: Авторизация
Отправлено: kuzma от 26-12-2007, 22:39:44
нужно сделать авторизацию для сайта через одну форму чтоб админ поподал в админку а юзер каждый на свою строничка задача реализовать на php+MySQL


Название: Re: Авторизация
Отправлено: kuzma от 27-12-2007, 08:13:15
хотяб скажите как это реализовать


Название: Re: Авторизация
Отправлено: WolF от 27-12-2007, 08:47:47
Код:
форма:
<form action="login.php" method="POST">
<input type="text" name="login">
<input type="password" name="pwd">
<input type="submit">
</form>

база:
CREATE TABLE users (user_id int(11) NOT NULL AUTO_INCREMENT, login varchar(255), passwd varchar(255), user_group tinyint(1), PRIMARY KEY (user_id))

скрипт:
<?php

$get_user_sql 
"SELECT user_id, user_group FROM users WHERE login = '".mysql_real_escape_string($_POST['login'])."' AND passwd = '".md5($_POST['paswd']."'";
$user_query mysql_query ($get_user_sql);
$redirect_path '?auth_error=1';
if (
mysql_num_rows ($user_query)) {
$user_row mysql_fetch_assoc ($user_query);
if (
$user_row['user_group'] == 1) {
$redirect_path '/admin/index.php';
} else {
$redirect_path '/index.php';
}
}
header ("Location: ".$redirect_path);

?>



Доступно?


Название: Re: Авторизация
Отправлено: kuzma от 27-12-2007, 08:52:23
да доступно но не всем мнеб хотелось тему развить


Название: Re: Авторизация
Отправлено: WolF от 27-12-2007, 08:55:38
А чё её развивать то? Задача проста как три копейки.


Название: Re: Авторизация
Отправлено: kuzma от 27-12-2007, 08:58:36
недумаю вот допустим мне надо полностью закрыть дерикторию где будет админка
а юзеров перенаправить в другую где будит их личный кабинет с которого они моглиб делать заявки и оформлять заказ


Название: Re: Авторизация
Отправлено: kuzma от 27-12-2007, 09:06:17
да что касается 3коп. сообщите мне ваш WMR и аську


Название: Re: Авторизация
Отправлено: WolF от 27-12-2007, 09:10:01
недумаю вот допустим мне надо полностью закрыть дерикторию где будет админка
а юзеров перенаправить в другую где будит их личный кабинет с которого они моглиб делать заявки и оформлять заказ

Не вижу проблемы абсолютно. Закрывать директорию где админка абсолютно не обязательно - просто все скрипты, которые лежат в /admin/ должны смотреть - авторизован ли юзер или нет, авторизованный юзер является админом или нет.


Название: Re: Авторизация
Отправлено: WolF от 27-12-2007, 09:12:08
да что касается 3коп. сообщите мне ваш WMR и аську

А вот это совершенно ни к чему :) Делать её за вас я всё равно не буду...


Название: Re: Авторизация
Отправлено: kuzma от 27-12-2007, 09:15:01
никто вас и не просит делать её за меня ...
Юзер это потребитель и доступ к админке иметь не должен
а Админ соответственно должен


Название: Re: Авторизация
Отправлено: WolF от 27-12-2007, 09:15:05
p.s. естественно для того чтобы перед каждой страницей пользователя / админа не спрашивать логин-пароль надо использовать сессии - лиюо встроенные в PHP либо писать аналогичный механизм самостоятельно. и в том и в другом случае - не хранить данные пользователя в cookies в открытом виде, дабы избежать фальсификации оных....


Название: Re: Авторизация
Отправлено: WolF от 27-12-2007, 09:17:02
никто вас и не просит делать её за меня ...
Юзер это потребитель и доступ к админке иметь не должен
а Админ соответственно должен

Я сказал каким образом это делается. Либо закрывать админку через .htaccess, но это не совсем хороший вариант по причинам вышеприведенным, либо а начале КАЖДОГО php скрипта в админке делать вышеприведенную проверку.


Название: Re: Авторизация
Отправлено: kuzma от 27-12-2007, 09:23:11
иными словами сделать фай который проверял бы это и просто на каждую строничку его подрубить
а как такую проверку сделать ???


Название: Re: Авторизация
Отправлено: WolF от 27-12-2007, 09:40:07
иными словами сделать фай который проверял бы это и просто на каждую строничку его подрубить
а как такую проверку сделать ???

Ну не файл а функцию написать чё нить типа:

Код:
<?php

function check_admin () {
$check_result 0;
if (isset ($_COOKIE['user_id']) && $_COOKIE['user_id']) {
$user_id intval ($_COOKIE['user_id']);
$auth_user mysql_query ("SELECT user_group FROM users WHERE user_id = ".$user_id);
$check_result 0;
if (mysql_num_rows ($auth_user)) {
$user_row mysql_fetch_assoc ($auth_user);
if ($user_row['user_group'] == 1) {
$check_result 1;
}

}
return ($check_result);
}

?>


Естественно в РЕАЛЬНОЙ системе прям так доверять user_id, лежащему в cookie нельзя, иначе каждый дурак его может подменить, надо его шифровать либо вообще не хранить в куках user_id, либо помимо user_id хранить ещё md5 хэш пароля, кароче вариантов море.


Название: Re: Авторизация
Отправлено: Paladin от 27-12-2007, 09:45:19
ниче непонятно, но прикольно
продолжайте


Название: Re: Авторизация
Отправлено: kuzma от 27-12-2007, 09:47:46
как проверить соединение с БД






PS: Надо целый раздел по програмированию!


Название: Re: Авторизация
Отправлено: WolF от 27-12-2007, 09:48:22
ниче непонятно, но прикольно
продолжайте

Да ладно, я думаю что нормальный программист должен понимать (хотя бы примерно) код на любом языке кроме уж совсем эзотерических типа haskell или brainfuck :) Тем более php очень похож на С по синтаксису, а SQL он и в африке SQL...


Название: Re: Авторизация
Отправлено: WolF от 27-12-2007, 09:49:19
как проверить соединение с БД
PS: Надо целый раздел по програмированию!

А зачем его проверять? Ну сделай mysql_connect, если ошибки не вернёт, значит соединение есть :)


Название: Re: Авторизация
Отправлено: kuzma от 27-12-2007, 09:58:01
у меня в дериктории cfg/config.php лежит файл для соединения с бд
я создал в корне index.php в него внес форму создал таблицу как ты написал
в дериктории лежит файл admin/index.html для теста скрипта также в корне лежит файл с твоим скриптом login.php но не че неработает ???


Название: Re: Авторизация
Отправлено: WolF от 27-12-2007, 10:03:06
у меня в дериктории cfg/config.php лежит файл для соединения с бд
я создал в корне index.php в него внес форму создал таблицу как ты написал
в дериктории лежит файл admin/index.html для теста скрипта также в корне лежит файл с твоим скриптом login.php но не че неработает ???

Уууууу да тут всё так запууущено :) То что я писал - это чисто заготовки а не готовые скрипты. Как сделать так чтобы всё это работало - я не буду, тупо лень. Если есть опыт работы с php - разберёшься. Если нет - читай доки ибо они есть рулез.


Название: Re: Авторизация
Отправлено: kuzma от 27-12-2007, 10:08:25
я ваще не програмист вот сел разбираться поставил себе сервер теперь ковыряюсь


Название: Re: Авторизация
Отправлено: Mickey от 27-12-2007, 10:10:32
ниче непонятно, но прикольно
продолжайте

В borda-шных гостевухах раньше смайлик был, где чувак засыпает, был бы тут - поставил бы:)))


Название: Re: Авторизация
Отправлено: kuzma от 27-12-2007, 10:12:47
В borda-шных гостевухах раньше смайлик был, где чувак засыпает, был бы тут - поставил бы:)))
а это к чему


Название: Re: Авторизация
Отправлено: Mickey от 27-12-2007, 10:24:41
а это к чему

Не обращай внимания


Название: Re: Авторизация
Отправлено: WolF от 27-12-2007, 10:27:58
я ваще не програмист вот сел разбираться поставил себе сервер теперь ковыряюсь

Прежде чем начать "ковыряться" - потратьте неделю на изучение документации в PHP и MySQL и не отвлекайте занятых людей. Когда будете готовы задавать ПРАВИЛЬНЫЕ вопросы - вэлкам.