Проверка юзера в базе с помощью Angular .:

Создание сайтов сегодня - это не просто HTML+CSS+IMG (Язык разметки, стиль и картинки), хотя и это пока еще часто встречается. Сегодня стандарт создания качественного и "солидного" сайта обязательно включает в себя процесс регистрации и последующей авторизации пользователей. Много людей пользуются готовыми движками типа Wordpress, Joomla и прочими, и конечно же не задумываются о скрытых процессах авторизации и верификации пользователей, да им это и не нужно, любой серьезный движок это поддерживает по умолчанию. А что же делать начинающим программистам, которые сами бы хотели создать проверку на существование юзера в базе данных?

Представляем вам пример простейшей проверки существования пользователя в базе данных с помощью AngulaJs. Для тех кто в теме цель статьи должна быть понятна, для всех остальных - обязательно перед занесением в базу нужно проверить, существует ли введенное имя пользователя. При этом пользователь моментально узнает о том, что его имя уникально, или такое уже есть. Мы будем использовать для этой цели такой инструмент, как AnguiarJs.

Скачать рабочий пример проверки юзера в базе с помощью Angular можно тут.

Содержание:

  1. Структура таблицы
  2. Конфигурация для подключения
  3. HTML разметка
  4. CSS код стилей
  5. PHP код
  6. Сценарий
  7. Демонстрация работы
  8. Заключение

1. Структура таблицы

Мы будем использовать таблицу users в базе данных tutorial. Создаем таблицу users:

CREATE TABLE `users` (
  `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `username` varchar(80) NOT NULL,
  `name` varchar(80) NOT NULL,
  `password` varchar(80) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

2. Конфигурация для подключения

Создаем файл конфигурации для подключения к базе данных config.php и прописываем в него следующие строки:

<?php

$host = "localhost"; /* Host name */
$user = "root"; /* User */
$password = ""; /* Password */
$dbname = "tutorial"; /* Database name */

$con = mysqli_connect($host, $user, $password, $dbname);
// Check connection
if (!$con) {
 die("Connection failed: " . mysqli_connect_error());
}

3. HTML разметка

Создаем основной макет HTML страницы, который будет иметь три элемента ввода и кнопку.
Здесь определена ng-key up директива для поля ввода имени пользователя, которое вызывает checkUsername(). Добавляем <div> следующее с полем ввода имени пользователя, чтобы показать статус доступности и настроить классы по директиве <div> define ng-class.

Готовый код:

<body ng-app='myapp'>

 <div class="container" ng-controller='signup'>

  <div id="div_reg">
   <h1>Registration</h1>

   <div>
    <input type="text" class="textbox" id="txt_name" ng-model="name" placeholder="Name"/>
   </div>

   <!-- Username -->
   <div>
    <input type="text" class="textbox" id="txt_uname" ng-model="username" ng-keyup='checkUsername()' placeholder="Username" />
    <div ng-class="addClass(unamestatus)" >{{ unamestatus }}</div>
   </div>

   <div>
    <input type="password" class="textbox" id="txt_pwd" ng-model="password" placeholder="Password"/>
   </div>

   <div>
    <input type="submit" value="Submit" name="but_submit" id="but_submit" />
   </div>

  </div>

 </div>

</body>

4. CSS код стилей

Стили можно разбить по своему усмотрению и в соответствии с современными канонами верстки страницы, можно добавлять элементы bootstrap, либо других обработчиков css, sass

Код файла style.css:

/* Container */
.container{
 margin: 0 auto;
 width: 70%;
}

/* Registration */
#div_reg{
 border: 1px solid gray;
 border-radius: 3px;
 width: 470px;
 height: 370px;
 box-shadow: 0px 2px 2px 0px gray;
 margin: 0 auto;
}

#div_reg h1{
 margin-top:0px;
 font-weight: normal;
 padding:10px;
 background-color:cornflowerblue;
 color:white;
 font-family:sans-serif;
}

#div_reg div{
 clear: both;
 margin-top: 10px;
 padding: 5px;
}

#div_reg .textbox{
 width: 96%;
 padding: 7px;
}

#div_reg input[type=submit]{
 padding: 7px;
 width: 100px;
 background-color: lightseagreen;
 border: 0px;
 color: white;
}

/* Response */
.response{
 padding: 6px;
 display: block;
}
.hide{
 display: none;
}
.exists{
 color: green;
}

.not-exists{
 color: red;
}

5. PHP код

Далее создаем файл и uname_check.php прописываем в него следующие строки:
<?php

include 'config.php';

$data = json_decode(file_get_contents("php://input"));

// Username
$uname = $data->username;
 
$resText = '';

if($uname != ''){
 // Check username
 $sel = mysqli_query($con,"select count(*) as allcount from users where username = '".$uname."' ");
 $row = mysqli_fetch_array($sel);

 $resText = "Available";
 if($row['allcount'] > 0){
  $resText = 'Not available';
 }
}

echo $resText;

6. Сценарий

Определяем два метода:

Готовый код:

var fetch = angular.module('myapp', []);

fetch.controller('signup', ['$scope', '$http', function ($scope, $http) {
 
 // Check username 
 $scope.checkUsername = function(){
 
  $http({
   method: 'post',
   url: 'uname_check.php',
   data: {username:$scope.username}
  }).then(function successCallback(response) {
   $scope.unamestatus = response.data;
  });
 }

 // Set class
 $scope.addClass = function(unamestatus){
  if(unamestatus == 'Available'){
   return 'response exists';
  }else if(unamestatus == 'Not available'){
   return 'response not-exists';
  }else{
   return 'hide';
  }
 }

}]);

7. Демонстрация работы

Для демонстрации работы скрипта проверки юзера в базе данных приводим форму. Здесь в поле можно вводить любые имена, однако в базу данных уже занесены - yssyogesh, sona, vishal, sunil, vijay, anil, jiten. Так, что полезно будет потыкать по клавищам проверяя на существование юзера в базе данных с помощью Angular.

Registration

{{ unamestatus }}

8. Заключение

Используя приведенный выше скрипт, вы можете предупредить пользователя, существует ли введенное им "имя пользователя" в базе или нет.
Во избежании ошибок записи, всегда проверяйте значение перед сохранением в таблицу базы данных.


Источник: makitweb.com


<< назад <<   ||  >> home >>