поясните формат такого пути. я так понял это что-то из оперы хеширования. Это делается для безопасного сохранения в БД. Или нет (в примере мы этого не зделали)? Какая функция обратно преобразует строку $ques, для того чтобы вывести её? Оцените пожалуста уровень защиты даного примера. Практично ли будет добавить сюда такой элемент защиты?
Ares http://php.net/mysql_real_escape_string - утрудись прочтением ссылка вызовет индексный файл директории с параметром p и значением rules
Пара дней ушла на запуск сайта, времени не было на форум Запустилась на минимуме возможностей, ибо геймеры заждались Переходим к следующему вопросу: Авторизация на сайте. Вход по логину и выход. Как реализовать ? Так как тут не принято на вопрос "А как ... ?" отвечать кодом, то скиньте хотя бы ссылки и намеки на общий принцип, я почитаю и напишу, что смогу Заранее спасибо, очень жду ответом. Хочу реализовать все модулем auth.php, который будет вызываться на каждой странице, проверять, выполнен ли вход, и выставлять переменную $LogIn=true, потом во все остальные части страницы добавлю проверки if($LogIn){То, что выводится для авторизированного пользователя}else{То, что будут видеть гости}
Мадам, умные люди придумали пословицу "только дурак учится на своих ошибках", но сами эти люди никогда этой пословице не следуют. Потому что, когда ты совершаешь ошибку, ты имеешь возможность видеть: 1) причины, которые привёли к этой ошибке; 2) путь (шаги), котороые привёли к этой ошибке; 3) умозаключения, котороые привёли к этой ошибке; 4) результаты этой ошибки. А самое главное, ты все эти пункты можешь проанализировать, дабы в дальнейшем избежать этой, и, как выяснится в процессе анализа, многих других ошибок. А все, кто наблюдал за тем, как ты делал эту ошибку, смогут только сделать вывод, что "вот так и так делать нельзя, потому что получится вот так" и не более того. То есть - будут видеть только пункты 2 и 4 - на самом деле - не самые важные для выводов. А точнее - самые не важные. Я это к чему - к тому, что подход "не принято на вопрос "А как ... ?" отвечать кодом" как раз предназначен для того, чтобы Вы сами могли делать и, главное, анализировать ошибки, дабы на них учиться и избегать их в дальнейшем. А по поводу Вашего вопроса - Вам нужно изучить механизм сессий. Начать можно с этого: http://phpfaq.ru/sessions и этого: http://php.ru/manual/features.sessions.html С уважением, Роман. PS. На вопрос - "а почему именно умные люди придумали эту пословицу?" ответ прост. Если бы пословица звучала именно так, как она и должна звучать: "только умные люди учатся на своих ошибках" - то каждый дурак, который считает себя умным (а таких - подавляющее большинство), считал бы себя вправе совершать кучу ошибок и мир бы просто рухнул из-за кучи идиотских ошибок, которые не надо совершать, потому что и так понятно, что это даже не ошибка, а просто глупость. Например, постулат: "чтобы понять, почему именно нельзя употреблять наркотики, надо их попробовать". Результат сможете представить? PPS. Что-то я разошёлся. А всё почему? Потому что у моего любимого провайдера рухнул dns-сервер и я жду, когда его починят, ибо, придурок, не озаботился спросить у яндекса пару-тройку запасных dns-серверов. Хотя знал, что у моего прова dns-сервер частенько падает.
RomanBush, ну я и не против вовсе такого подхода, ибо совершенно с вами согласна. Хотя до вашего стиля мне далеко, все же позволю себе высказаться - получив в ответ на вопрос "А как ... ?" 5 кусков кода с указаниями вставить их в разные файлы, возможно, и получится что-то рабочее, но (!) когда в следующий раз встанет вопрос о5 об этом же, прийдется либо тупо копировать, либо просить снова, ибо получившие чужой код редко утруждают себя его разбором. Работает да и ладно... Спасибо за ссылки, чуток попозже почитаю, и прододжим Удачи с днс, надеюсь быстро подымут
Ну в общем, вот что получилось. Сразу предупреждаю, механизмы работы сессий пока что понятны мне не до конца. Жду советов по исправлению ошибок. (Защиту пока не пишем, проверки тоже. Сначала с сессиями будем разбираться.) Моя цель - сделать так, чтобы пользователь входил, и в зависимости от отметки "Запомнить меня" потом автоматически входил при каждом посещении сайта или же только на один раз, а при следущем просмотре вводил логин и пасс снова. Видимо, cookies надо будет использовать потом, но сначала сессии. Итак... auth.php PHP: <?php session_start(); $authform = ' <form name="form1" method="post" action=""> <h2>Авторизация:</h2> Логин:<input name="inlogin" type="text"><br> Пароль:<input name="inpass" type="password"><br> <input type="submit"> </form> '; if (isset($_POST['inlogin'])){ $login = $_POST['inlogin']; $pass = $_POST['inpass']; mysql_connect("localhost", "root", "root") or die ("Could not connect to MySQL"); mysql_select_db ("authtest") or die ("Could not select database"); $query = "SELECT * FROM `users` WHERE `login`='$login' LIMIT 1;"; $result = mysql_query($query) or die(mysql_error()); if ($result!=0){ $user = mysql_fetch_assoc($result); if ($user['pass']==$pass){ $_SESSION['login'] = $login; echo "Вы вошли как $login<br><a href = \"exit.php\">Выйти</a>"; } else echo 'Неправильный пароль!! Попробуйте еще.<br>'.$authform; } else echo 'Пользователь не найден!! Попробуйте еще.<br>'.$authform; } else { echo $authform; } ?> exit.php PHP: <?php session_start(); $login = $_SESSION['login']; unset($_SESSION['login']); session_unregister('login'); echo $login.", Вы вышли.<br><a href=\"auth.php\">На страницу авторизации</a>"; ?>
В файле - exit.php вместо можно написать просто: Код (Text): session_destroy(); а в общем - нормально. Теперь надо сделать всевозможные проверки. Начиная от проверки на то, не забыли ли ввести пароль, заканчивая тем, что надо хотя бы strip_tags на все $_POST натравить. И ещё - подлкючение к базе обычно выносят в отдельный файл, который инклудится к странице. И ещё момент: правильней написать: Код (Text): if ($result){
А вот этого я бы делать не стал, что если у меня будет пароль "<b></b>" ? Как не раз было сказано следует ознакомиться с http://phpfaq.ru/slashes (и не просто "следует" а "критически необходимо")
Значит, ты не сможешь войти. Кстати, подал хорошую мысль - надо мне на своих сайтах сделать - если в пароле юзера есть теги - блокировать таких умных по ip. Во избежание... /me пошёл делать.
Это не сайт у вас такой, а программист на нём параноик Кстати её автора вроди тоже Романом зовут (могу ошибаться но вроде)
Теги плохи тем, что те посетители, которые реально мне (читай сайту) нужны - просто даже не знают, что такое теги. А суперкулхацкеры мне вообще не нужны. Поэтому проще их сразу блокировать по ip, чем думать, нафига они регились у меня - как нормальные посетители или для выяснения возможностей взлома. Если это нормальный чел - он по человечески напишет мне письмо-вопрос, что мол случилось и как бы мне зарегица. А суперкулхацкер либо вообще не будет писать, либо начнёт орать про дискриминацию и тому подобную чушь. И тогда я займусь вычислением его в оффлайне, с телефонным звонком с просьбой больше не беспокоить общественность.
не, ну если в смысле параноидальности - то могу смело сказать, что вы все за мной следите и только и думаете, как бы меня взломать. Это абсолютно точно.