Я должен создать веб-сайт с единственной целью подключения к базе данных MySQL и отображения его информации в графическом интерфейсе пользователя.
Пока все работает хорошо. Моя проблема, однако, заключается в создании своего рода системы регистрации, чтобы получить $username
и $password
.
Хотя веб-сайт разрабатывается для использования в локальной сети, я бы предпочел не вводить username
и password
в HTML или PHP по соображениям безопасности.
Как я могу написать код, чтобы спросить у пользователя password
и username
на моей индексной странице, использовать его для всех других страниц на моем сайте и, в конечном счете, забыть, когда пользователь закрывает мой сайт? На данный момент я знаю только HTML, CSS и очень наивный PHP.
в двух словах: login.php
<?php session_start(); function hhb_tohtml($str) { return htmlentities($str, ENT_QUOTES | ENT_HTML401 | ENT_SUBSTITUTE | ENT_DISALLOWED, 'UTF-8', true); } $accounts=array( //username =>password 'smith'=>'smell', 'admin'=>'password', 'guest'=>'guestpass' ); if(array_key_exists('submit',$_POST)){ if(!array_key_exists('username',$_POST)){ $username=''; } else { $username=$_POST['username']; } if(!array_key_exists('password',$_POST)){ $password=''; }else { $password=$_POST['password']; } if(!array_key_exists($username,$accounts)){ die('This username does not exist.'); } if($accounts[$username]!==$password){ die('wrong password!'); } $_SESSION['logged_in']=true; $_SESSION['username']=$username; die('you have logged in as: '.hhb_tohtml($username)); } ?> <!DOCTYPE html> <html> <head><title></title></head> <body> <form action="?" method="post"> Username: <input type="text" name="username" /><br> Password: <input type="password" name="password" /><br> <input type="submit" name="submit" value="Submit" /> </form> </body> </html>
и в других местах, например controlpanel.php:
session_start(); if(!isset($_SESSION['logged_in'])){die('you need to login first!');}
идентификатор сеанса будет сохранен в cookie, благодаря session_start (), и сервер будет помнить, зарегистрирован ли этот идентификатор сеанса.
Насколько я понимаю, вы сможете использовать стандартный тип входа, используя сеанс. Существует много учебников, в которых показано, как достичь этого, и есть много разных способов добраться до результата. Все зависит от ваших навыков, уровня безопасности и требований к базе данных, чтобы назвать несколько.
Вы должны начать с изучения учебника, подобного этому, который использует сеанс http://www.formget.com/login-form-in-php/, это даст вам функциональность «забыть пароль». Если пользователь не сохраняет пароль с помощью своего браузера.
На всякий случай вышеприведенный урок не по вашему вкусу здесь еще несколько: http://www.homeandlearn.co.uk/php/php14p2.html http://www.phpeasystep.com/phptu/6.html
и мой личный фаворит http://www.tutorialspoint.com/php/php_login_example.htm
Надеюсь, что вы найдете что-то, что поможет вам, если у вас возникнут какие-либо проблемы при реализации одного из этих примеров, отправьте вопрос с кодом, чтобы кто-то помог вам его решить.