[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Щифровка пароля в cookie
m4a1fox
Всем доброго дня. Пишу систему авторизации на cookie. Стало интересно. Как в cookie можно зашифровать пароль? Вроде для этого используют нечто под название hash? Или я ошибаюсь? Если кто знает решение, пожалуйста сообщите! Спасибо.



Спустя 22 минуты, 7 секунд (3.04.2011 - 12:38) quickxyan написал(а):
ну куки хэширует по md5 пароль

Спустя 30 минут, 2 секунды (3.04.2011 - 13:08) m4a1fox написал(а):
quickxyan
А так можно? Ну к примеру setcookie("pass", md5(пароль))? так что ли получается?

Спустя 6 минут, 55 секунд (3.04.2011 - 13:15) quickxyan написал(а):
ну да. я затупил - думал, что он сам шифрует в мд5. да именно так и надо

Спустя 1 минута, 2 секунды (3.04.2011 - 13:16) m4a1fox написал(а):
quickxyan
Ага! Ясненько. Сейчас буду экспериментировать.

Спустя 1 минута, 42 секунды (3.04.2011 - 13:18) m4a1fox написал(а):
quickxyan
Да. Сработало. Спасибо.

Спустя 21 минута, 41 секунда (3.04.2011 - 13:39) m4a1fox написал(а):
еще вопрос. Я сделал структуру таким образом. Создал папку log в ней есть index с проверкой логина и пароля, далее в ней же есть cookie и в ней же создается session. При открытии админки, если нет ыуыышщт то идёт перенаправление на папку log. Хочется сделать так, что бы если есть cookie с паролем и логином (а они есть!) то при открытии index в админке, не было редиректа на папку log.

Спустя 12 минут, 56 секунд (3.04.2011 - 13:52) m4a1fox написал(а):
Реально где то запутался в коде.

Спустя 3 минуты, 40 секунд (3.04.2011 - 13:56) m4a1fox написал(а):
Почему то если проверяю на странице сущ cookie вот таким способом [php]if(isset($_COOKIE['login']) && isset($_COOKIE['password'])) то ничего не происходит. Подскажите кто знает. Спасибо.

Спустя 8 минут, 34 секунды (3.04.2011 - 14:05) m4a1fox написал(а):
Черт. Ни как не получается проверить на сущ cookie.

Спустя 6 минут, 50 секунд (3.04.2011 - 14:11) RAZZOR написал(а):
Вобще условие написано правильно. Вот только функция isset() может принимать несколько аргументов. Лучше сделать так:

 if ( isset($_COOKIE['login'], $_COOKIE['password']) ) 


А вобще, напиши этот кусок кода и что у тебя висит в куках на момент проверки


Спустя 1 минута, 37 секунд (3.04.2011 - 14:13) m4a1fox написал(а):
Другое ) как передать cookie на другую страницу?

Спустя 2 минуты, 27 секунд (3.04.2011 - 14:15) RAZZOR написал(а):
Куки хранятся в браузере у конкрентого пользователя, а не на странице. Т.е. они доступны на всех страницах данного сайта

Спустя 47 секунд (3.04.2011 - 14:16) m4a1fox написал(а):
RAZZOR
Вот и я так думаю. Сейчас кусок кода скину.

Спустя 7 минут, 58 секунд (3.04.2011 - 14:24) m4a1fox написал(а):
Вот это код отвечает за ввод логина и пароля

if(isset ($_POST['login']))
{
$name = (isset ($_POST['name'])) ? $_POST['name'] : '';
$password = (isset ($_POST['password'])) ? md5($_POST['password']) : '';
$result = mysql_query("SELECT COUNT(*) AS `cnt` FROM `table1`
WHERE user='"
. mysql_real_escape_string($name) ."'
AND password='"
. $password ."'"
);
if (mysql_result($result, 0) == 0)
{
$ok = 'Нет такой!!!';
}
else
{
setcookie("auth", "$name", time()+3600);
setcookie("pass", "$password", time()+3600);
$_SESSION['ok'] = $name;
$ok = 'Есть такой!!!';
header('Refresh: 2; url=../index.php');
}
}



Вот этот код проверяет, если есть cookie то идет проверка и если норм и проверка прошла то перенаправляем.

if (isset($_COOKIE['auth']) && isset($_COOKIE['pass']))
{
$name = mysql_real_escape_string($_COOKIE['auth']);
$password = mysql_real_escape_string($_COOKIE['pass']);

$result = mysql_query("SELECT COUNT(*) AS `cnt` FROM `adminc`
WHERE user='"
. mysql_real_escape_string($name) ."'
AND password='"
. $password ."'"
);
//$ok = (mysql_result($result, 0) == 0) ? 'Нет такого!' : 'Есть такой';
if (mysql_result($result, 0) == 0)
{
$ok = 'Нет такой!!!';
}
else
{
//$ok = 'Все норм. Ты прошел проверку.';
header('Refresh: 0; url=../index.php');
$_SESSION['ok'] = $name;
}
}


код выше находится по пути http://www.sitename.ru/admin/log/index.php


Но есть еще и страница http://www.sitename.ru/admin/index.php
Вот собственно хочется сделать на ней прогверку, если cookie есть, то все хорошо, на ней и остаемся, а если нет - то переадрессовываем на log/index.php. Где собственно и есть форма для ввода логина и пароля.

Спустя 6 минут, 9 секунд (3.04.2011 - 14:30) RAZZOR написал(а):
Так а в чём собственно проблема?

Спустя 1 минута, 48 секунд (3.04.2011 - 14:32) m4a1fox написал(а):
Проблема в том, что страница http://www.sitename.ru/admin/index.php я не могу на нее сделать проверку cookie.

Спустя 4 минуты, 18 секунд (3.04.2011 - 14:36) m4a1fox написал(а):
Смотрите, как я понимаю систему авторизации в админ панели.
1. Если введен адресс http://www.sitename.ru/admin/index.php, и нет cookie с логином и паролем, то переадресовываем на http://www.sitename.ru/admin/log/index.php
2. Вводим логин и пароль.
3. Создать cookie с логином и паролем.
4. Если хочется выйти - выходим и удаляем cookie.
5. Если я просто закрываю браузер, то cookie сохраняются, и при следующем обращении к http://www.sitename.ru/admin/index.php, проверяется на наличии cookie и если есть то вот это http://www.sitename.ru/admin/log/index.php пропускаем а попадаем сразу на http://www.sitename.ru/admin/index.php.

Вот собственно проблема в 5 пункте.

Спустя 4 минуты, 24 секунды (3.04.2011 - 14:41) RAZZOR написал(а):
Так а куки в браузере вобще прописываются?

Спустя 2 минуты, 20 секунд (3.04.2011 - 14:43) RAZZOR написал(а):
Цитата
Смотрите, как я понимаю систему авторизации в админ панели


На самом деле, описанный вами вариант, не самый лучший в плане безопасности

Спустя 7 минут, 30 секунд (3.04.2011 - 14:51) m4a1fox написал(а):
Цитата
Так а куки в браузере вобще прописываются?

Да! Они существуют.
Цитата
На самом деле, описанный вами вариант, не самый лучший в плане безопасности

да, я знаю. Просто хочется что бы стало понятно. вообще у меня другая система авторизации.

Спустя 5 минут, 25 секунд (3.04.2011 - 14:56) RAZZOR написал(а):
У вас в первом листинге скримт дёргает логин-пароль из table1, а во второй раз - из adminc. Это так и задумано, или что?

Спустя 3 минуты, 3 секунды (3.04.2011 - 14:59) m4a1fox написал(а):
RAZZOR
Да нет. Там adminc везде. Это я тупанул. понимаете, я не могу понять, как мне на index странице в админке, проверять на существование cookie, если есть то все нормально а иначе перенаправлять в папку log.

Спустя 6 минут, 26 секунд (3.04.2011 - 15:06) RAZZOR написал(а):
В общем пропишите внутри ифа, который проверяет на наличие кук что-нибудь вроде
echo 'cookies working';

И если выведет, то куки работают исправно и надо разбираться с MySQL запросом. Выводите на экран, что именно он возвращает и разбирайтесь. А ещё, я бы советовал делать редирект при помощи
header("Location: index.php");
die();

Именно с die(); в конце. Ибо пользователь уже ушел и серверу незачем дальше работать впустую

Спустя 3 минуты, 49 секунд (3.04.2011 - 15:09) RAZZOR написал(а):
Цитата
Понимаете, я не могу понять, как мне на index странице в админке, проверять на существование cookie


Так вы правильно всё делаете. При помощи if и isset. Если у вас не редиректит как надо, то проблема наверняка в последующем запросе. Напихайте там везде echo, а потом наблюдайте на каком этапе скрипт ведёт себя не так, как вы предполагали

Спустя 3 минуты, 41 секунда (3.04.2011 - 15:13) m4a1fox написал(а):
RAZZOR
Еще уточнение. Если я вывожу на index странице adminки вот это

echo $_COOKIE['auth'];

то ничего не происходит.
А если на странице в папке log эта же надпись нормально работает!

Спустя 7 минут, 38 секунд (3.04.2011 - 15:21) RAZZOR написал(а):
Если бы $_COOKIE['auth'] не существовало, то должен был бы появиться ворнинг (У вас показ ошибок вобще включён на сервере?). А раз его нету, то может быть проблема в том, что выводит, да не там, где вы ожидаете. Или белым цветом на белом фоне. Или скрипт вобще до этого места не доходит из-за какого-нибудь if-else. Или ещё чего. Или опять таки у вас выключено отображение ошибок, но я понятия не имею, как тогда можно заниматься дебаггингом. Всё-равно, что на кофейной гуще гадать

Спустя 5 минут, 57 секунд (3.04.2011 - 15:27) neadekvat написал(а):
Цитата (RAZZOR @ 3.04.2011 - 15:21)
то должен был бы появиться ворнинг

Нотайс.

Автору: сделайте print_r($_COOKIE);

Спустя 2 минуты, 2 секунды (3.04.2011 - 15:29) m4a1fox написал(а):
RAZZOR
Ладно. Спасибо все равно вам. Буду разбираться.

Спустя 5 минут, 50 секунд (3.04.2011 - 15:34) m4a1fox написал(а):
neadekvat
Есть такое дело.

Спустя 58 секунд (3.04.2011 - 15:35) m4a1fox написал(а):
Ха. Есть ошибочка.

Спустя 2 минуты, 12 секунд (3.04.2011 - 15:38) m4a1fox написал(а):
Почему то index странице в админке. Есть только [PHPSESSID]. А на странице index в папке log Есть и [auth] и [pass] и [PHPSESSID].

Спустя 1 минута, 35 секунд (3.04.2011 - 15:39) neadekvat написал(а):
В setcookie(); добавляйте 4й параметр:
setcookie("pass", "$password", time()+3600, '/');

Как оно там будет?

Кстати, оставлять только логин и пароль в кукисах ни в коем случаи нельзя. Это, можно сказать, дырка: входи, не хочу.

Спустя 4 минуты, 54 секунды (3.04.2011 - 15:44) m4a1fox написал(а):
neadekvat
Цитата

setcookie("pass", "$password", time()+3600, '/');

не помогло.

Спустя 3 минуты, 16 секунд (3.04.2011 - 15:47) neadekvat написал(а):
Цитата (m4a1fox @ 3.04.2011 - 15:44)
не помогло.

А если удалить старые кукисы и сессию и по-новой попробовать?

Спустя 31 секунда (3.04.2011 - 15:48) m4a1fox написал(а):
На сессиях все работает.

Спустя 2 минуты, 53 секунды (3.04.2011 - 15:51) m4a1fox написал(а):
neadekvat
Цитата
А если удалить старые кукисы и сессию и по-новой попробовать?

Да так сработало. Объясните?

Спустя 38 секунд (3.04.2011 - 15:51) neadekvat написал(а):
Цитата (m4a1fox @ 3.04.2011 - 15:51)
Объясните?

Какое слово в описании функции не понятно?

Спустя 5 минут, 48 секунд (3.04.2011 - 15:57) m4a1fox написал(а):
neadekvat
Нет! Со словами все норм. Почему так получилось? Пока не удалил, то все не работало. Кстати. Уничтожать cookie - в моем случае

setcookie("auth", "");
setcookie("path", "");

Так или нет?

Спустя 3 минуты, 37 секунд (3.04.2011 - 16:01) neadekvat написал(а):
Мысли есть, но озвучивать не буду - там несколько нюансов есть, не могу расписывать.

Цитата (m4a1fox @ 3.04.2011 - 15:57)
etcookie("auth", "");
setcookie("path", "");

Лучше также, как и ставить - с 4м параметром, пустым значением и отрицательным временем.

Спустя 2 минуты, 21 секунда (3.04.2011 - 16:03) m4a1fox написал(а):
neadekvat
Цитата
отрицательным временем.

Это что типо этого
 setcookie("auth", "", time() - 60, '/');

Спустя 2 минуты, 54 секунды (3.04.2011 - 16:06) neadekvat написал(а):
Цитата (m4a1fox @ 3.04.2011 - 16:03)
Это что типо этого

Верно.

Конечно, я имел в виду прошедшее время, а не отрицательное.

Спустя 20 минут, 21 секунда (3.04.2011 - 16:26) m4a1fox написал(а):
neadekvat
Спасибо что помогли. Как я понимаю безопасность такого метода это отдельная тема?

Спустя 1 минута, 20 секунд (3.04.2011 - 16:28) neadekvat написал(а):
Цитата (m4a1fox @ 3.04.2011 - 16:26)
Как я понимаю безопасность такого метода это отдельная тема?

Вкратце - безопасность на нуле. Угнал кукис - и все, ты админ.

Спустя 5 минут, 14 секунд (3.04.2011 - 16:33) m4a1fox написал(а):
neadekvat
Ну да. Это факт. Я использую вот эту авторизацию тут. номер 2!

Спустя 8 минут, 38 секунд (3.04.2011 - 16:42) neadekvat написал(а):
m4a1fox, там нет упоминаний о кукисах. Без них авторизация вполне надежна. Кроме одного - кажется, чтобы "выйти" придется перезапустить браузер.

Спустя 3 минуты, 9 секунд (3.04.2011 - 16:45) m4a1fox написал(а):
neadekvat
Во-во! Это вы точно подметили. Собственно как с этим бороться наверно никто не знает. Поэтому сегодня и пытался сделать авторизацию на cookie что бы можно было сделать выход.

Спустя 2 минуты, 6 секунд (3.04.2011 - 16:47) m4a1fox написал(а):
neadekvat
Попытался. С Вашей помощью - получилось. Но придется отказаться. А может вы знаете где про это можно толково почитать?

Спустя 6 минут, 27 секунд (3.04.2011 - 16:53) neadekvat написал(а):
Цитата (m4a1fox @ 3.04.2011 - 16:45)
Собственно как с этим бороться наверно никто не знает.

С этим не надо бороться, просто другие методы авторизации использовать.

Почитать.. не знаю, под рукой такой литературы. В свое время раз писят переписывал код под этот процесс.
Помучайте Гугл, статей все-таки хватает. Просто к ним с умом надо - только полезное извлекать.

Спустя 2 минуты, 24 секунды (3.04.2011 - 16:56) m4a1fox написал(а):
neadekvat
Может что то посоветуете. По поводу возможности выхода из админки?

Спустя 15 минут, 17 секунд (3.04.2011 - 17:11) neadekvat написал(а):
Цитата (m4a1fox @ 3.04.2011 - 16:56)
Может что то посоветуете. По поводу возможности выхода из админки?

Делай на обычных сессиях. А выход:
session_destroy();

Спустя 3 часа, 34 минуты, 37 секунд (3.04.2011 - 20:46) killer8080 написал(а):
Никогда не храните пароли, ни в каком виде в куках!!!
Это огромная дыра в безопасности!
В куках должен быть только id сессии и не более.

Спустя 14 минут, 35 секунд (3.04.2011 - 21:00) neadekvat написал(а):
Цитата (killer8080 @ 3.04.2011 - 20:46)
В куках должен быть только id сессии и не более.

И это вся информация, которую можно хранить в куках, по вашему?

Спустя 45 минут, 44 секунды (3.04.2011 - 21:46) killer8080 написал(а):
Цитата (neadekvat @ 3.04.2011 - 20:00)
И это вся информация, которую можно хранить в куках, по вашему?

Конечно нет. Хранить можно то, что не угрожает безопасности, и уж точно не пароль.

Спустя 20 минут, 30 секунд (3.04.2011 - 22:06) m4a1fox написал(а):
neadekvat
Да, на сессиях можно. Но жаль что если закрыть браузер, а потом открыть, то придется заново вводить пароль...

Спустя 20 минут, 46 секунд (3.04.2011 - 22:27) neadekvat написал(а):
Цитата (m4a1fox @ 3.04.2011 - 22:06)
Но жаль что если закрыть браузер, а потом открыть, то придется заново вводить пароль...

Функция автологина осуществляется с помощью кукисов. Записываете в базу id пользователя, уникальный хэш и еще что-нибудь.. Но по факту, автологин очень небезопасная вещь, т.к. при желании можно создать такие же условия, как у жертвы, у которой стырили кукисы.
Надежнее привязка к ip адресу. Но у многих ip динамический.

Спустя 5 минут, 22 секунды (3.04.2011 - 22:33) m4a1fox написал(а):
neadekvat
Цитата
Но у многих ip динамический.

Это да.
А если привязать к PHPSESSID?
Как нибудь?
Правда еще не знаю как... надо хоть прочитать про этого зверя...

Спустя 3 минуты, 1 секунда (3.04.2011 - 22:36) neadekvat написал(а):
Цитата (m4a1fox @ 3.04.2011 - 22:33)
А если привязать к PHPSESSID?

Он минут через 25 исчезает. К тому же, ситуация ни чем не лучше, чем с паролями, получается.

Спустя 2 минуты, 48 секунд (3.04.2011 - 22:38) m4a1fox написал(а):
neadekvat
Ага! Ясно! Значит делать все на session. Уже все варианты перепробывал.)

Спустя 2 минуты, 10 секунд (3.04.2011 - 22:41) m4a1fox написал(а):
neadekvat
Можно еще у Вас спросить, чуток не по теме?

Спустя 3 минуты, 1 секунда (3.04.2011 - 22:44) m4a1fox написал(а):
Просто хочу что бы Вы как эксперт чуть подсказали по логике.

Спустя 13 секунд (3.04.2011 - 22:44) neadekvat написал(а):
Мне кажется, вы чего-то не понимаете. Ну, или я не понимаю того, что вы говорите.

Сессии - это файлы, которые хранятся на сервере. Для каждой сессии - свой файл. Вот пример содержания:
user_id|s:1:"5";user_ip|s:9:"127.0.0.1";

Т.е. это та информация, которую вы в сессии и храните.

А PHPSESSID - это идентификатор сессии. Обычно он хранится в куках. Именно по нему php и узнает, что за пользователь это и какими данными надо наполнить массив $_SESSION и из какого файла.

Т.е. сессии и кука PHPSESSID связаны напрямую. Нет PHPSESSID - нет сессии.

P.S.
Я не являюсь экспертом.

Спустя 3 минуты, 42 секунды (3.04.2011 - 22:48) m4a1fox написал(а):
neadekvat
Цитата
Я не являюсь экспертом.

Ну это просто в статусе не отображается... а так.
И да. Про сессии я понял...
Куки - нет, сессия - да.
И все таки вопрос. Может вы поправите структуру...

Спустя 1 минута, 56 секунд (3.04.2011 - 22:49) neadekvat написал(а):
Вам именно автологин нужен или пока что решили разобраться с обычной авторизацией?

Спустя 1 минута, 12 секунд (3.04.2011 - 22:51) m4a1fox написал(а):
Есть админ панель. Досту к ней - http://www.sitename.ru/admin/index.php.
Хочу отказаться от index.php. А создать файл например login.php. Разместить его в директории http://www.sitename.ru/login.php. И если все нормально то перенаправляем на определенный файл, например content.php в папке http://www.sitename.ru/damin/content.php. Как думаете так можно делать?

Спустя 50 секунд (3.04.2011 - 22:51) m4a1fox написал(а):
neadekvat
Цитата
Вам именно автологин нужен или пока что решили разобраться с обычной авторизацией?

Решил на обычной построить...

Спустя 2 минуты, 20 секунд (3.04.2011 - 22:54) m4a1fox написал(а):
neadekvat
Только вот проблемка, как перенаправлять на файл login.php если я ввожу в строке браузера http://www.sitename.ru/admin/?

Спустя 6 минут, 22 секунды (3.04.2011 - 23:00) m4a1fox написал(а):
В.htaccess не получилось.... жаль идея была ничего...

Спустя 2 минуты, 23 секунды (3.04.2011 - 23:03) neadekvat написал(а):
Я не буду описывать формы авторизации (на самом деле аутентификации), проверки паролей и т.д.

Допустим, что логин и пароль соответствуют действительности, т.е. такая связка есть в бд (или в файле - смотря где хранятся логины и пароли пользователе) - пользователь существует.

Теперь можно добавить, например, такие поля в сессию (потому что эти значения пользователь изменить не может): user_id, user_agent (браузер), user_ip. Не забудьте перед этими операциями начать сессию (session_start()).

Далее от вас требуется только в каждой странице стартовать сессию и проверять значения сессионных переменных (тех, которые вы сохранили при авторизации, теперь они в _SESSION) и фактических (которые хранятся в _SERVER). Если все совпадает - считаем, что пользователь авторизован и предоставляем ему какие-то привилегии. Если не совпадает - значит просим еще раз пройти аутентификацию.

Описанное в предыдщем обзаце можно выделить в отдельный файл и подключать в начале других исполняющих файлов.

Сразу поясню, в чем разница:
аутентификация - грубо говоря, проверка логина и пароля. Т.е. мы узнаем, есть ли у человека в принципе доступ;
авторизация - это присвоение человеку, прошедшему доступ (или гостю), своих привилегий. Например, гости могут только читать, а админ - делать, что хочет.

Спустя 3 минуты, 14 секунд (3.04.2011 - 23:06) m4a1fox написал(а):
neadekvat
Ясно. Значит аунтификации... так как мне переадресовывать с http://www.sitename.ru/admin на http://www.sitename.ru/login.php при условии что в.htaccess не получается. Делаю так

Redirect /admin/ http://www.sitename.ru/login.php

Спустя 3 минуты, 37 секунд (3.04.2011 - 23:09) m4a1fox написал(а):
При условии что в папке админ нет index файла, а в настройках.htaccess есть вот это

Options -Indexes

Спустя 1 минута, 35 секунд (3.04.2011 - 23:11) neadekvat написал(а):
В файле авторизации введите какую-нибудь переменную или константу, обозначающую успешную или неуспешную аутентификацию. Допустим, AUTH.
Затем в индексном файле админки пишите
if ( ! AUTH) {
header('location: '. http://www.sitename.ru/login.php);
die;
}

Спустя 2 минуты, 30 секунд (3.04.2011 - 23:14) m4a1fox написал(а):
neadekvat
Вариант! сейчас буду пробовать!

Спустя 3 минуты, 47 секунд (3.04.2011 - 23:17) neadekvat написал(а):
Капец я седня..
if ( ! AUTH) {
header('location: http://www.sitename.ru/login.php');
die;
}

Спустя 19 минут, 21 секунда (3.04.2011 - 23:37) m4a1fox написал(а):
Но ведь я тоже самое могу делать и с проверкой на session.

Спустя 2 минуты, 5 секунд (3.04.2011 - 23:39) neadekvat написал(а):
Цитата (m4a1fox @ 4.04.2011 - 00:37)
Но ведь я тоже самое могу делать и с проверкой на session.

Да, но там надо проверить три значения (user_id, user_agent, user_ip), ну или два (без user_id), однако ведь проще проверить однажды и ввести некий флаг, чем постоянно обращаться к сессионным значениям и значениям окружения (_SERVER)

Спустя 16 минут, 16 секунд (3.04.2011 - 23:55) m4a1fox написал(а):
neadekvat
Согласен.
Подскажите пожалуйста, в чем разница

header('Refresh: 0; url = ../index.php');

и

header('Location: ../index.php');

насколько я заметил, второй вариант как бы быстрее....

Спустя 3 минуты, 47 секунд (3.04.2011 - 23:59) neadekvat написал(а):
Location в rfc есть, а Refresh я встречал только в тэге meta, так что рекомендую пользоваться моим способом.

Спустя 3 минуты, 59 секунд (4.04.2011 - 00:03) m4a1fox написал(а):
neadekvat
Ага! Понятно. Взял на заметку. Спасибо.
И насчет сессий.
В общем я сделал так. Если введен логин и пароль, и они успешно прошли проверку, то создаю сессию с именем. Потом проверяю на сущ. эту сессию на страницах. Вот так получилось.

Спустя 2 минуты, 6 секунд (4.04.2011 - 00:05) neadekvat написал(а):
Цитата (m4a1fox @ 4.04.2011 - 01:03)
В общем я сделал так. Если введен логин и пароль, и они успешно прошли проверку, то создаю сессию с именем. Потом проверяю на сущ. эту сессию на страницах. Вот так получилось.

Без кода не пойму :)

Спустя 3 минуты, 22 секунды (4.04.2011 - 00:08) m4a1fox написал(а):
neadekvat
А! Секунду извините)

Спустя 3 минуты, 57 секунд (4.04.2011 - 00:12) m4a1fox написал(а):
Вот аунтификация

if(isset ($_POST['login']))
{
$name = (isset ($_POST['name'])) ? $_POST['name'] : '';
$password = (isset ($_POST['password'])) ? md5($_POST['password']) : '';
$result = mysql_query("SELECT COUNT(*) AS `cnt` FROM `adminc`
WHERE user='"
. mysql_real_escape_string($name) ."'
AND password='"
. $password ."'"
);
if (mysql_result($result, 0) == 0)
{
$ok = '<font color="red">Неверный логин или пароль</font>';
}
else
{
$_SESSION['ok'] = $name;
header('Location: ../index.php');
die ();
}
}


А потом вот это

$_SESSION['ok'] = $name;

проверяю на страницах.

if (!isset ($_SESSION['ok']))
{
header ('Location:../log/');
}
else
{

Тут исполняемы код всей странице

ну и закрываем тег

<?}?>

Спустя 9 часов, 58 минут, 35 секунд (4.04.2011 - 10:11) neadekvat написал(а):
Цитата (m4a1fox @ 4.04.2011 - 01:12)
аунтификация

Аутентификация :)

По коду.
Не увидел session_start(), но я думаю, вы просто не показали его.

Не ставьте лишних скобок (и обычный и фигурных):
$name = isset ($_POST['name']) ? $_POST['name'] : '';

В тернарном операторе скобки ставьте только для очевидности:
$var = ($a == $b) ? 1 : 0;
$var = ($a == ($b || $c)) ? 1 : 0;


if (!isset ($_SESSION['ok']))
{
header ('Location:../log/');
}
else
{
// код страницы
}

Это тоже избыточность. Можно проще:
if (!isset ($_SESSION['ok']))
{
header ('Location:../log/');
die;
}
// код страницы

Спустя 1 час, 16 минут, 22 секунды (4.04.2011 - 11:27) m4a1fox написал(а):
neadekvat
Спасибо. Исправляю.
Быстрый ответ:

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