setcookie("cookiename",$login,time()+3600*24*365);
потом кажди раз, когда ползовател заходит на саите, на кажди странице проверяется через скл-запроса,
Свернутый текст
сам скл запрос что-то такого вида:
mysql_query("SELECT login FROM users WHERE login = '".$_COOKIE['cookiename']."' ");
если значение кукисов сушествует в базе, то ползовател авторизован,
если нет, говорим ему: "ви не авторизовани"
ето так происходит? тоест особенно интересует скл на каждои странице оправдано? или нужно по другому?
буду очен благароден за люби ответ.
Спустя 30 минут, 46 секунд (17.11.2011 - 17:30) killer8080 написал(а):
dadli
Ага, и что мешает подделать куки, и вписать туда чужой логин?
Ага, и что мешает подделать куки, и вписать туда чужой логин?
Спустя 9 минут, 1 секунда (17.11.2011 - 17:39) lans8097 написал(а):
Нет это тупой способ так как кто угодно сможет зайти под логином админа
Лично я при входе клиента записываю 2 переменые с md5+соль записываю их в куки и аналогичные данные записываю в таблици sessions
В этой таблице 5 поля id,key1,key2,user_id,date
Зашол на сайт опа есть куки опа совпадает опа запускаем сесию
Лично я при входе клиента записываю 2 переменые с md5+соль записываю их в куки и аналогичные данные записываю в таблици sessions
В этой таблице 5 поля id,key1,key2,user_id,date
Зашол на сайт опа есть куки опа совпадает опа запускаем сесию
Спустя 8 минут, 23 секунды (17.11.2011 - 17:48) lans8097 написал(а):
Ещё видил прастой способ
Брался ник и шифровался в md5(md5(соль.md5(соль).соль)); и проверялось естли такой ник
Какие плюсы и минусы
+ не нужна отдельная таблица
+ быстрота проверки
- Если подберут метод шифра можешь спакойно выкидывать все пароли из базы
- Если агромный проэкт то просто тупо берём кучу хэша и системотично прогоняем через цикл пока не попадём на какой то логин. Да попыток будит оч много но шанс давольно велик ) )
Брался ник и шифровался в md5(md5(соль.md5(соль).соль)); и проверялось естли такой ник
Какие плюсы и минусы
+ не нужна отдельная таблица
+ быстрота проверки
- Если подберут метод шифра можешь спакойно выкидывать все пароли из базы
- Если агромный проэкт то просто тупо берём кучу хэша и системотично прогоняем через цикл пока не попадём на какой то логин. Да попыток будит оч много но шанс давольно велик ) )
Спустя 45 минут, 32 секунды (17.11.2011 - 18:33) killer8080 написал(а):
Цитата (lans8097 @ 17.11.2011 - 17:48) |
- Если подберут метод шифра можешь спакойно выкидывать все пароли из базы |
Вот по этому и нельзя хранить пароли в куках ни в каком виде. Механизма сессий вполне достаточно в большинстве случаев.
Спустя 3 часа, 12 минут, 52 секунды (17.11.2011 - 21:46) dadli написал(а):
killer8080
lans8097
да конечно сохранят значение кукисов в откритом виде ето не можно, тупанул я, но ето не понимаю: я сохраняю в куках какоита данние да? (захешированни через несколко мд5 + соль и т.д.) потом когда ползовател заходит на саите, проверяется: если ети данние которие в куках, совпадает данних которие есть базе, включаем сесию - даиом ползувателю привилегии. ето так?
lans8097
да конечно сохранят значение кукисов в откритом виде ето не можно, тупанул я, но ето не понимаю: я сохраняю в куках какоита данние да? (захешированни через несколко мд5 + соль и т.д.) потом когда ползовател заходит на саите, проверяется: если ети данние которие в куках, совпадает данних которие есть базе, включаем сесию - даиом ползувателю привилегии. ето так?
Спустя 12 минут, 17 секунд (17.11.2011 - 21:58) KonstantinK написал(а):
вот тут http://irbis-team.com/15/7/4 понятно описано
Спустя 1 минута, 36 секунд (17.11.2011 - 22:00) killer8080 написал(а):
dadli
нет, ненужны тебе никакие дополнительные куки, просто при успешной авторизации в $_SESSION создавай флаг, а по его наличию определяешь авторизовался он или нет.
нет, ненужны тебе никакие дополнительные куки, просто при успешной авторизации в $_SESSION создавай флаг, а по его наличию определяешь авторизовался он или нет.
Спустя 15 минут, 23 секунды (17.11.2011 - 22:15) dadli написал(а):
killer8080
да ето понятно, ето при авторизации да?
я ето не понимаю: когда авторизованни ползовател закроит свои браузер сесии умерают да? и когда снова откроит браузер и заидиот на маиом саите, ему же не нужно снова авторизоватся, так как я ему браузеру задавал какоита данние через кукисов setcookie("имя_кукисов","значение_кукисов","время").
таак: сеичас нужно ети кукисов проверять, если такие данние есть на базе, то сесии стартуем, если нет, сесии не стартуем, я прав? так ето нада реализовать?
да ето понятно, ето при авторизации да?
я ето не понимаю: когда авторизованни ползовател закроит свои браузер сесии умерают да? и когда снова откроит браузер и заидиот на маиом саите, ему же не нужно снова авторизоватся, так как я ему браузеру задавал какоита данние через кукисов setcookie("имя_кукисов","значение_кукисов","время").
таак: сеичас нужно ети кукисов проверять, если такие данние есть на базе, то сесии стартуем, если нет, сесии не стартуем, я прав? так ето нада реализовать?
Спустя 9 минут, 10 секунд (17.11.2011 - 22:24) killer8080 написал(а):
dadli
нет, никаких setcookie() сессии сами создают куки. Реализовать можно например так. На страницах требующих авторизацию, подключаешь файл auth.php с таким содержимым
На странице авторизации при успешной проверке логина/пароля создаешь в сессии флаг
$_SESSION['auth'] = 1;
и кидаешь обратно редиректом.
нет, никаких setcookie() сессии сами создают куки. Реализовать можно например так. На страницах требующих авторизацию, подключаешь файл auth.php с таким содержимым
session_start();
if(empty($_SESSION['auth'])){
header('Location: /login.php'); // редирект на страницу авторизации
die();
}
На странице авторизации при успешной проверке логина/пароля создаешь в сессии флаг
$_SESSION['auth'] = 1;
и кидаешь обратно редиректом.
Спустя 36 минут, 7 секунд (17.11.2011 - 23:00) dadli написал(а):
killer8080
иизвини за маио глупост но не поиму: так, на кажди раз, если закрою браузер, потом открою и заиду на саите, саит хочет от меня что я снова авторизовалос
иизвини за маио глупост но не поиму: так, на кажди раз, если закрою браузер, потом открою и заиду на саите, саит хочет от меня что я снова авторизовалос
Спустя 5 часов, 2 минуты, 6 секунд (18.11.2011 - 04:03) lans8097 написал(а):
Цитата (dadli @ 17.11.2011 - 18:46) |
killer8080 lans8097 да конечно сохранят значение кукисов в откритом виде ето не можно, тупанул я, но ето не понимаю: я сохраняю в куках какоита данние да? (захешированни через несколко мд5 + соль и т.д.) потом когда ползовател заходит на саите, проверяется: если ети данние которие в куках, совпадает данних которие есть базе, включаем сесию - даиом ползувателю привилегии. ето так? |
Мдауш а я думал эт у меня проблемы с русским
Значит так
Сценарий
Игорь пришол на сайт (Существует ли сессия userAction) если нет то Проверяем естли куки (Если куки совпали с ключями из баззы Производим процедуру создания сессии)Еслиже нет то росим авторизироваться
В общем где-то так
Сессия удоляется автоматически при закрытии браузэра по истичению времени указанным в настройках apach
а вот куки по истечению времени задынным при создания куки
Но очень редко куки доживают до конца своего времени чаще всего их удоляют пользователи )
p/s
Прежде чем юзать сессии и кукисы прогугли их мануал там есть подводные камни )
Спустя 6 часов, 41 минута, 50 секунд (18.11.2011 - 10:44) dadli написал(а):
lans8097
Цитата |
Мдауш а я думал эт у меня проблемы с русским |
а я победил вас
мне нет непонятност с сесиями, я их работу хорошо понимаю, я но понимаю что надо в куках сохранять
Цитата |
Если куки совпали с ключями |
вот ето не понимаю: что именно нада в куках сохранят?
Спустя 21 минута, 19 секунд (18.11.2011 - 11:06) killer8080 написал(а):
dadli
ненужно никаких дополнительных кук. Сессии создают свои куки, и этого вполне достаточно.
Единственное, в целях безопасности, имеет смысл делать привязку к IP и юзер агенту.
ненужно никаких дополнительных кук. Сессии создают свои куки, и этого вполне достаточно.
Единственное, в целях безопасности, имеет смысл делать привязку к IP и юзер агенту.
Спустя 6 минут, 41 секунда (18.11.2011 - 11:12) dadli написал(а):
killer8080
а как ето? что-то не понимаю, если не нужно setcookie(), то как запомнит например етото саит что ви killer8080 ? и как дапускает вас без новий авторизации, ему же нада что как то определит ползовател?
ето не понимаю
а как ето? что-то не понимаю, если не нужно setcookie(), то как запомнит например етото саит что ви killer8080 ? и как дапускает вас без новий авторизации, ему же нада что как то определит ползовател?
ето не понимаю
Спустя 12 минут, 51 секунда (18.11.2011 - 11:25) dadli написал(а):
вот например так сделаю страницу авторизации: (здес не пишy никаких мускл_реал_ескапе_стринг() и мд5 и так далее, патаму здес ето не важно)
сесия стартуется хорошо, когда я на саите, я авторизован, но если закрою -> открою браузер уже нада мне снова авторизоватся, если сесии сам саздаёт кукисов, то почему не происходит автометически авторизаця ?
if (isset($_POST['login'])) {
$login = $_POST['login'];
}
if (isset($_POST['password'])) {
$password = $_POST['password'];
}
$res = mysql_query(
"SELECT login FROM users WHERE
login = '".$login."' AND password = '".$password."' ",$db);
$row = mysql_fetch_row($res);
if (mysql_num_rows($res) != 1) {
exit("login i/ili parol ne pravilni");
}
session_start();
$_SESSION['login'] = $row[0];
сесия стартуется хорошо, когда я на саите, я авторизован, но если закрою -> открою браузер уже нада мне снова авторизоватся, если сесии сам саздаёт кукисов, то почему не происходит автометически авторизаця ?
Спустя 1 час, 19 минут, 17 секунд (18.11.2011 - 12:45) lans8097 написал(а):
Цитата (killer8080 @ 18.11.2011 - 08:06) |
dadli ненужно никаких дополнительных кук. Сессии создают свои куки, и этого вполне достаточно. Единственное, в целях безопасности, имеет смысл делать привязку к IP и юзер агенту. |
Как не надо ? )
Если я не ошибаюсь то утт шла речь не просто об авторизации а также и об авто авторизации
Тобиш зашол авторизировался и сиди пока кукисы не закончиться ну или пока базу не почистят.
А проверять по ip не вижу смысла так как восновном у всех стаит динамический айпи а у некотрых он вобще каждые 2 чеса меняеться
Я туже прочитал агромную кучу статей по этой теме и пришол к выводу что самый оптимальный вариант это 2 3 уни ключика и сопоставления их с базой
Щяс набросаю небольшой пример
<?php
session_start();
if(!empty($_SESSION['user'])){
echo'Привет '.$_SESSION['user']['name'].' вы уже авторизированы';
}else{
//Если сессии не существует то проверяем на наличии кукисов
if(!empty($_COOKIE['key1']) && !empty($_COOKIE['key2'])){
//Оброщяемся к базе к таблице session и проверяем естли запись с данными ключиками
$myrow = mysql_query("SELECT user_id FROM `sessions` WHERE `key1`='".$_COOKIE['key1']."' AND `key2`='".$_COOKIE['key2']."'");
if(mysql_num_rows($myrow)){
$result = mysql_fetch_assoc($myrow);
//Вызываем данные о пользователе и записываем сессию
$myrow = mysql_query("SELECT `name`,`login`,`grup` FROM users WHERE id='".$result['user_id']."'");
$result = mysql_fetch_assoc($myrow);
$_SESSION['user']['name']=$result['name'];
$_SESSION['user']['login']=$result['name'];
$_SESSION['user']['grup']=$result['grup'];
}else{
//Если нет совпадений всёравно просим пройти авторизацию
}
}else{
//Если куков не найдено то просим авторизироваться
}
}
?>
Эт оч грубый набросок но смысл верен
Спустя 59 минут, 28 секунд (18.11.2011 - 13:44) dadli написал(а):
lans8097
ааа понимал, ну не уверен что ето так, думаю killer8080 прав, не нада никаких setcookie(), нада исползовать session_set_cookie_params() чтоби установит сесионние куки
killer8080
ето так?
ааа понимал, ну не уверен что ето так, думаю killer8080 прав, не нада никаких setcookie(), нада исползовать session_set_cookie_params() чтоби установит сесионние куки
killer8080
ето так?
Спустя 4 минуты, 2 секунды (18.11.2011 - 13:48) killer8080 написал(а):
Цитата (lans8097 @ 18.11.2011 - 12:45) |
Как не надо ? ) Если я не ошибаюсь то утт шла речь не просто об авторизации а также и об авто авторизации Тобиш зашол авторизировался и сиди пока кукисы не закончиться ну или пока базу не почистят. |
Сессия устанавливает свою печеньку, в её уникальности никто не сомневается, нет смысла генерить дополнительные идентификаторы. Если нужно сделать длительное хранение сессии, то либо меняются настройки session.gc, либо ид сессии сохраняется в базе. Ну и само собой настроить сессионные куки на длительное хранение. Этого вполне достаточно. Никаких зашифрованных логинов/паролей в куках хранить нельзя, это уже будет уязвимость.
Цитата (lans8097 @ 18.11.2011 - 12:45) |
А проверять по ip не вижу смысла так как восновном у всех стаит динамический айпи а у некотрых он вобще каждые 2 чеса меняеться |
А тут уже сам решаешь что важней, удобство пользователям, или безопасность. Желательно привязывать не только к ip, но и к http заголовкам (конечно не ко всем, а только к статичным).
Если привязок не делать, то аккаунт можно угнать банальной кражей кук.
Спустя 33 секунды (18.11.2011 - 13:49) killer8080 написал(а):
dadli
совершенно верно.
совершенно верно.
Спустя 1 минута, 39 секунд (18.11.2011 - 13:50) lans8097 написал(а):
Цитата (dadli @ 18.11.2011 - 10:44) |
lans8097 ааа понимал, ну не уверен что ето так, думаю killer8080 прав, не нада никаких setcookie(), нада исползовать session_set_cookie_params() чтоби установит сесионние куки killer8080 ето так? |
Ну если тебе нужно просто авторизировать на период сессии то да
Но если ты хочиш чтобы пользователь каждый раз заходив на сайт не авторизировался заново а это происходило мгновенно то по-любому нужно хранить куки ибо не захломлять сервер
Но может я не прав так как тот способ не пробывал
Но уже подумав о нём он мне не понравился
Спустя 4 минуты, 57 секунд (18.11.2011 - 13:55) killer8080 написал(а):
Цитата (lans8097 @ 18.11.2011 - 13:50) |
Но если ты хочиш чтобы пользователь каждый раз заходив на сайт не авторизировался заново а это происходило мгновенно то по-любому нужно хранить куки ибо не захломлять сервер |
Ага, а таблица sessions это что Что мешает туда записать ид сессии, вместо дополнительных идентификаторов. Смысл их вообще генерировать?
Спустя 18 минут, 17 секунд (18.11.2011 - 14:13) dadli написал(а):
lans8097
killer8080
ну балшое челавечиски спасибо оба вам, очен благароден за помош и за ответаx, дьержите плюсики
killer8080
ну балшое челавечиски спасибо оба вам, очен благароден за помош и за ответаx, дьержите плюсики
Спустя 4 минуты, 25 секунд (18.11.2011 - 14:18) killer8080 написал(а):
dadli
да не за что
да не за что
_____________
когда чарли чаплин принимал участие в конкурсе: "клон чарли чаплинов", то чарли занимал третю позицию.