Подскажите как обезапасить данные пользователей (сайт - чтото навроде записной книжки), то есть как обеспечить необходимый минимум? После проверки логина и пороля, пользователь перанаправляется на page.php?id=123, и далее перемещаеться по страницам с передоваемым id от страницы к странице, ссесии не используються. Все переменные инициализированы. Вот то что я думаю можно сделать: закодировать данные передоваемые через гет, еще сделать так - запомнить айпи с которым пользователь вошол, таким образом пользователь не сможет изменить id в адресной строке, ето будет работать? обязательно переменную о выполнении входа и времени входа. еще мое собственное изобретение - сделать все страницы с фреймами, таким образом адресная строка будет вопше пустая, если юзер откроет фрейм в отдельной вкладке, тогда переадресация на страницу с фреймами) Подскажите как правильно это делаеться? спасибо
В таком случае по большому счету никак. Куки поставь при авторизации. И сверяй id с значением в куках. Если совпал - то можно показывать. Но это все ерунда. Нужны хотя бы сессии.
все что ты напридумывал, извини, ерунда. я обычно делаю так: при авторизации посылаю две куки(логин, хеш от пароля(md5 например)). В БД у тебя будет храниться так же логин и хэш пароля. таким образом можешь проверять при заходе на сайт есть ли эти куки и совпадают ли они с тем что в БД. когда юзер жмет кнопку выйти, просто убиваем куки.
понятно, всем спасибо. а не могли бы вы, дать ссылки на статьи или обсуждения как осуществить это с помощью ссесий. Еще такой вапрос, это не метод, но что если сделать все через пост, тогда по идее что ни делай с адресной строкой ничего не получится, какие в таком случае будут недостатки?
Придется каждую ссылку с помощью JavaScript делать, или ставить кнопку вместо ссылки, ибо ссылки не могут форму отправлять. И к тому же кому надо тот и пост отправит, и окажется в аккаунте пользователя, безопасно? думаю не очень.
да придется еще кучу форм вставлять... не могли бы ва написать как это делается как надо, 1. - включаем тото 2.- используем тото там... ну и т.п., буду благодарен
Вариант с куками? Вот как то так: PHP: //Если нажали выход - удаляем куки if (isset($_GET['exit'])) { setcookie('login', "", time()-86400); setcookie('hash', "", time()-86400); } else //Если производят вход - отправляем куки if (isset($_POST['login']) and isset($_POST['password'])) { setcookie('login', $_POST['login'], time()+86400); setcookie('hash', md5($_POST['password']), time()+86400); } $authorized = false; $is_attempt = false; if (!isset($_GET['exit'])) //Пробуем опознать пользователя по параметрам пришедшим по методу post if (isset($_POST['login']) and isset($_POST['password'])) { $login = $_POST['login']; $hash = $_POST['password']; $is_attempt = true; } else { //Пробуем опознать пользователя по кукам if (isset($_COOKIE['login']) and isset($_COOKIE['hash'])) { $login = $_COOKIE['login']; $hash = $_COOKIE['hash']; $is_attempt = true; } else { //Не получилось, извините $authorized = false; } } if ($is_attempt) { $tmp_arr = $sql->sql_exec("select * from users where password='$hash' and login='$login'", 'select'); $authorized = (sizeof($tmp_arr)==1); } if ($authorized) { //Грузим основные данные пользователя $user_id = $tmp_arr[0]['id']; $login = $tmp_arr[0]['login']; // И т.д. // Показываем все что нужно показать зашедшему юзеру } else { //Пользователь не вошел в систему, показываем форму авторизации // Показываем форму входа }
Pascal4eg Вот так я тоже изначально думал, но позже переделал так. Две куки : Первая hash. В ней md5 "рэндомного числа"+ слова (статическое слово, предложение, пароль юзера тут не участвует). Вторая login, значение в БД юзера. (т.е. id юзера мы не светим) При этом.. hash генерится каждый раз при логине и логауте (и меняется сразу в БД, исключение логаут по закрытию окна ). Т.е. зайти под одним акком одновременно двум и более не получится. Да только волнует кое что, при такой системе. Что будет если куки уведут? То что это вина юзера это ясно.. Но всё же как лучше уйти от этого? Что ещё привязывать в этом случаи к юзеру? Или же над этим вообще не стоит заморачиватья? Ваши мысли...