В прошлом посте сделали простейший PHP скрипт авторизации, сейчас усовершенствуем его при помощи JS. Будем проверять форму перед отправкой при помощи самописной функции
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<script> <!-- // Функция проверки формы function validate_form ( ) { if ( (document.submit_form.login.value)==''){alert('Поле логин не заполнено'); return false; exit(); }; if ( (document.submit_form.password.value)==''){alert('Поле пароль не заполнено'); return false; exit();}; alert('Подтверждаю отправку данных'); document.submit_form.name.submit(); } //--> </script> |
На клиенте проверяем заполнены ли поля. Тут можно кучу других проверок организовать, но это уже тема отдельного поста.
Таким образом, у нас получится следующий код для LoginForm.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame Remove this if you use the .htaccess --> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>LoginForm2</title> <meta name="description" content=""> <meta name="author" content="YellowFriend"> <meta name="viewport" content="width=device-width; initial-scale=1.0"> <!-- Replace favicon.ico & apple-touch-icon.png in the root of your domain and delete these references --> <link rel="shortcut icon" href="/favicon.ico"> <link rel="apple-touch-icon" href="/apple-touch-icon.png"> </head> <body> <div> <header> <h1 style="text-align: left">LoginForm</h1> </header> <nav> <p> <a href="/">Home</a> </p> <p> <a href="/contact">Contact</a> </p> </nav> <div> <!--Логин форма--> <form name="submit_form" onsubmit="return validate_form();" class="submit_form" style="width: 500px; border: 1px red; margin: auto;" action="http://myphpproject.ru/authorization.php" method="POST"> <div id="login_id" style="padding: 10px;">Логин: <span style="float: right;"><input name="login" size="50" type="text" /></span></div> <div id="password_id" style="padding: 10px;">Пароль:<span style="float: right;"> <input name="password" size="50" type="text" /></span></div> <center><div style="position: relative; left: 70px;"><input name="submit_form" type="submit" value="Отправить" /></div></center> </form> <script> <!-- // Функция проверки формы function validate_form ( ) { if ( (document.submit_form.login.value)==''){alert('Поле логин не заполнено'); return false; exit(); }; if ( (document.submit_form.password.value)==''){alert('Поле пароль не заполнено'); return false; exit();}; alert('Подтверждаю отправку данных'); document.submit_form.name.submit(); } //--> </script> <?php echo "Wow! It is PHP here !!!"; ?> </div> <footer> <p> © Copyright by Panteleev Stas (elGringo) </p> </footer> </div> </body> </html> |
Серверный скрипт остался тем же самым
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
<?php //---------------------------------Пишем функцию авторизации---------------------- function CheckLoginPassowrdInDB($Login,$Password){ //Подключаемся к базе данных $dbHost='localhost';// чаще всего это так, но иногда требуется прописать ip адрес базы данных $dbName='coffeetest_db';// название вашей базы $dbUser='coffeetest_user';// пользователь базы данных $dbPass='coffeetest_password';// пароль пользователя $mysqli = new mysqli($dbHost, $dbUser, $dbPass,$dbName ); /* ProcedureStyle проверка соединения */ if (mysqli_connect_errno()) { echo "<br><b>ProcedureStyle. Подключение невозможно</b>: ".mysqli_connect_error(); } else {echo "<br><b>Procedure Style</b>. Соединение с базой $dbName данных успешно установлено ";}; //Делаем запрос пользователей $sql_select="SELECT * FROM `coffeetest_db`.`users`"; $result=mysqli_query($mysqli, $sql_select); // ($result = $mysqli->query($sql_select)); //Проверяем авторизацию $row = mysqli_fetch_array($result); // << Получаем первый ряд в массив //Проходим циклом по выборке и проверяем пару логин-пароль do { if (is_null($row['Login']) || is_null($row['Password'])){continue;}; if ( ($Login==$row['Login']) && (($Password==$row['Password'])) ) { return true; break; } else return false; } while($row = mysqli_fetch_array($result)) ; }; //CheckLoginPassowrdInDB //---------------------------------Применяем нашу функцию проверки логина пароля---------------------- //Получаем логин пароль, отправленные из формы или др. прилолжения $Login=trim($_REQUEST['login']); $Password=trim($_REQUEST['password']); if ( CheckLoginPassowrdInDB($Login,$Password) ) {echo "<br><br><b>Результат авторизации:</b> Пара Логин / Пароль $Login $Password совпадает. Вход может быть выполнен";} else { echo "<br><br><b>Результат авторизации:</b> Пара Логин / Пароль $Login / $Password не совпадает. Вход не может быть выполнен"; } ?> |