Помощник
|
Авторизация на сайте |
Ekgor
|
Сообщение
#1
|
||
|
|
||
|
|||
Webmaster_hb |
10.9.2007, 15:38;
Ответить: Webmaster_hb
Сообщение
#2
|
|
Кто-нибудь знает код, уж не знаю, java или HTML, чтобы создавать регистрацию на сайте? Очень НАДО!!! Авторизацию для сайта можно сделать на JavaScript'e (для детей) можно на сервере с использованием .htaccess можно в серверных скриптах asp, php, cgi но всё это дело не одной строчки, а приличного куска кода примеров таких предостаточно, но использовать их не разбираясь в этом не получится |
|
|
Ekgor
|
Сообщение
#3
|
|
Webmaster, Возможно Вы можете подсказать какие-то ссылочки, где это демонстрируется или электронные книги, где это написано, хоть что-то!?
|
|
|
Webmaster_hb |
10.9.2007, 18:16;
Ответить: Webmaster_hb
Сообщение
#4
|
|
[php]
<? session_start(); header("Content-Type: text/html; charset=cp1251"); function show_form($message){ ?> <?=$message?><br/> <form method="post" name='form' id='form' action='login.php'> <B>Имя:</B> <input type='text' name='user' /> <br /> <B>Пароль:</B> <input type='password' name='pass' /> <input type='submit' value="Вход" name='subm'/> </form> <? die(); } //Проверка нажатия кнопки submit if(!isset($_POST['subm'])) show_from(''); //Проверка на введенные данные if(!isset($_POST['user']) OR !isset($_POST['pass']) OR empty($_POST['user']) OR empty($_POST['pass'])) show_form("Не правильная пара логин-пароль."); // подключение к БД - соответственно прописываем свои данные доступа к базе данных $connection = mysql_connect("localhost","","") ; mysql_select_db('database') ; // НЕ смог достучаться до БД if (mysql_error()) die(); $user = mysql_escape_string($_POST['user']); $pass = md5($_POST['pass']."ahha"); // Проверяем есть ли пользователь с таким логином и паролем $result = mysql_query("SELECT `id` FROM `users` WHERE `login`='".$user."' AND `pass`='".$pass."'"); // если есть - впускаем if(mysql_num_rows($result)==1) $_SESSION['admin']=$adm; // Если нет - пишем так. else show_form("Incorrect login-password."); // Далее сообщение которое увидит вошедший пользователь ?> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" > <meta http-equiv="refresh" content="3; url=index.php" > Здравствуйте <?=mysql_escape_string($user);?>! [/php] SQL CREATE TABLE `users` (
`username` varchar(20) NOT NULL default '', `pass` varchar(20) NOT NULL default '' ) ENGINE=MyISAM; |
|
|
Exterior |
14.8.2008, 10:24;
Ответить: Exterior
Сообщение
#5
|
|
Данный пример не претендует на звание идеального метода защиты, но все же обойти его будет достаточно трудно. Представим следующее: у вас есть закрытый сайт "для своих" и вы не хотите чтобы туда заходили всякие нехорошие личности. В этом нам помогут сессии. Пароли и логины будем хранить в таблице mysql.
На первой странице index.php делаем форму для ввода данных: <form method="post" аction="index2.php"> <table align="center" cellspacing="2" cellpadding="2" border="0" width="320"> <tr> <td width="100">Имя:</td> <td width="200"><input type="text" name="name" /></td> </tr> <tr> <td width="100">Пароль:</td> <td width="200"><input type="password" name="pass" /></td> </tr> <tr> <td colspan="2" width="300" align="center"> <input type="submit" value="Вход" /> <input type="reset" value="Сбросить" /> </td> </tr> </table> </form> Думаю здесь пояснять ничего не нужно. Идем дальше: Сначала краткое пояснение. Мы создаем функцию проверки пользователя check(). У нас есть база данных my_site, содержащая поля id, name и pass, где name и pass - логин и пароль пользователя соответственно. Функция пропускает только тех, кто указал верный логин и пароль в форме ($name, $pass) на входе, потом эти переменные сохраняются в сессию, следовательно, пока сессия жива пользователь может заходить на ваш сайт без авторизации. Даже указав другой верный логин и пароль, он будет авторизирован под указанным ранее логином. Предполагается, что соединение с базой mysql уже произведено и база данных выбрана. [php]<? function check() { if (empty($pass)||empty($name)) error("Не указан логин или пароль"); $sql = "select * from my_site where login='".$name."'"; if ($show = mysql_query($sql)) { $a = mysql_fetch_array($show); if ($a['pass']!=$pass) { error("Не верное сочетание логин - пароль"); } else { session_register("name","pass"); } } else { error("Ошибка запроса к базе данных"); } } ?>[/php] Начнем пояснения с первой строки. [PHP]if (empty($pass)||empty($name))[/PHP] проверяем задан ли пароль и логин. Если одно из полей пустое, то [PHP]error("Не указан логин или пароль");[/PHP] Здесь error - это любая функция вывода ошибки: [php]<? function error($er) { echo $er; exit(0); } ?>[/php] Если поля не пусты, то скрипт продолжает работу. [PHP]$sql="select pass from mysite where login='".$name."'";[/PHP] пишем запрос к базе mysql, который вернет нам значение поля pass, строки, где login=$name. [PHP]if ($show=mysql_query($sql))[/PHP] если запрос обработан без ошибок, то [PHP]$a=mysql_fetch_array($show);[/PHP] Присваиваем переменной $а (ассоциативный массив) значение поля pass i[PHP]f ($a['pass']!=$pass) error("Не верное сочетание логин - пароль");[/PHP] Если поле pass не соответствует тому, что ввел пользователь или тому, что хранится в сессии, то мы опять через функцию error выводим ему ошибку. [PHP]else session_register("name","pass");[/PHP] Иначе записываем переменные $name и $pass в сессию и продолжаем выполнять скрипт. [PHP]} else error("Ошибка запроса к базе данных"); } ?>[/PHP] Если есть ошибка в запросе к базе mysql, то мы опять же выводим ошибку пользователю. Итак, вначале каждой страницы, к которой нужно запретить доступ посторонним пишем: [PHP]<? session_start(); /* эта функция открывающая или продолжающая работу с сессиями. Она должна быть задана в самом начале страницы до отправки заголовка страницы. */ check(); //наша функция проверки. ?>[/PHP] Теперь проверим логику скрипта. Если человек не заполняет одно из полей и нажимает кнопку "вход", то перейдя на страницу index2.php он получит надпись "Ошибка: Не указан логин или пароль". Если он указывает неверный логин или пароль, то ему выпадает "Ошибка: Не верное сочетание логин - пароль". Если же он все указывает верно, то попадет на страницу index2.php где вы храните свои тайны. За счет того, что логин и пароль записываются в сессию, юзер может бродить по вашему сверх тайному сайту авторизировавшись только один раз. Возможные проблемы: Нельзя заходить на сайт под разными именами. Если человек раз зашел на сайт, то с его компьютера можно посещать этот сайт еще в течении некоторого времени (пока жива сессия), что не очень хорошо, если ты работаешь из Интернет салона. Автор: неизвестен
|
|
|
batis |
28.12.2008, 11:47;
Ответить: batis
Сообщение
#6
|
|
если сессию закрыть то можно будет потом зайти под другим логином и паролем?
|
|
|
Гость_0_* Гость_0_* |
3.1.2009, 15:56;
Ответить: Гость_0_*
Сообщение
#7
|
|
Да, можно.
Ну если вы хотите 100% безопасности, то создайте файл .htaccess, и напишите в нем следующее: [PHP]AuthType Basic AuthName "auth" AuthUserFile /www/site/.htpasswd require valid-user[/PHP] Потом создайте файл .htpasswd, и сгененируйте логин и пароль на http://www.htaccesstools.com/htpasswd-generator/ И все. |
|
|
mawa |
4.1.2009, 1:40;
Ответить: mawa
Сообщение
#8
|
|
Да, можно. Ну если вы хотите 100% безопасности, то создайте файл .htaccess, и напишите в нем следующее: [php]AuthType Basic AuthName "auth" AuthUserFile /www/site/.htpasswd require valid-user[/php]Потом создайте файл .htpasswd, и сгененируйте логин и пароль на http://www.htaccesstools.com/htpasswd-generator/ И все. если это 100% защита, то почему я в и-нете не встречал всплывающие окошко от браузера с запросом на ввод логина и пароля? Я только видел использование форм на ввод логина и пароля!!!! |
|
|
Гость_0_* Гость_0_* |
4.1.2009, 19:39;
Ответить: Гость_0_*
Сообщение
#9
|
|
Потому-что это неудобно. Например http://vvsh.ru/admin/
|
|
|
Webmaster_hb |
4.1.2009, 20:52;
Ответить: Webmaster_hb
Сообщение
#10
|
|
если это 100% защита, то почему я в и-нете не встречал всплывающие окошко от браузера с запросом на ввод логина и пароля? Я только видел использование форм на ввод логина и пароля!!!! это авторизация средствами самого сервера, и поэтому точно надежнее, ее минус - удобство, а второй минус это работа с добавлением изменением новых пользователей и паролей т.к. для этого надо использовать инструменты сервера ну и еще один минус, это то что кроме имени и пароля и папки больше нельзя указать уровень доступа |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Боты могут делать пушподписки на моём сайте? | 2 | Megaspryt | 835 | Вчера, 23:09 автор: MorKer |
|
Быстрый и качественный обмен на сайте Baksman.org Обмен Bitcoin, BTC-e, PM, Qiwi, Yandex money, Карты банк |
53 | Baksman | 33765 | Вчера, 11:29 автор: Baksman |
|
CryptoCloud — прием USDT, BTC, ETH, LTC на любом сайте | 36 | CryptoCLoud | 10661 | 16.4.2024, 16:02 автор: CryptoCLoud |
|
Странный трафик на сайте длительное время | 33 | TABAK | 8912 | 12.4.2024, 5:56 автор: Skyworker |
|
Алтуально ли заработок на сайте? Оцение пожалуйста идею |
10 | hitman20 | 1885 | 1.2.2024, 5:37 автор: Liudmila |
Текстовая версия | Сейчас: 24.4.2024, 1:24 |