Advertisement
Guest User

Untitled

a guest
Aug 10th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.85 KB | None | 0 0
  1. <?php
  2.     /* Это кусок кода, точнее ajax-хэндлера,
  3.      * который отвечает за создание и уничтожение сессий.
  4.      * Данные о пользователе ищутся в базе CouchDB
  5.      * через библиотеку PHP on Couch.
  6.     */
  7.  
  8.     //иклюд конфигурации
  9.     require "inc/config.inc.php";
  10.  
  11.     if(isset($_POST['operation'])) {
  12.  
  13.         //создание инстанса подключения к БД CouchDB
  14.         require "inc/dbconn.inc.php";
  15.  
  16.         //виды операций
  17.         switch($_POST['operation']) {
  18.             case "login":
  19.                 //да, да, голые данные пихаю в запрос, проверку потом сделаю. Тем более это не SQL запросы
  20.                 $login    = $_POST['data']['login'];
  21.                 $password = $_POST['data']['password'];
  22.  
  23.                 try {
  24.                     //получение документа олицетворяющего пользователя
  25.                     $user = $conn->getDoc('user_'.$login);
  26.  
  27.                     if($user->password == $password) {
  28.                         //стартум сессию если пароль правильный. Пароли кстати хранятся маринованными в MD5 :)
  29.                         session_name("sid");
  30.                         session_start();
  31.                         $_SESSION['login'] = "pioneer";
  32.  
  33.                         //формируем ответ клиенту
  34.                         $response = array(
  35.                             "result" => "granted"
  36.                         );
  37.                     }
  38.                     else {
  39.                         //пароль не совпал, отвечаем доступ запрещен
  40.                         $response = array(
  41.                             "result" => "denied"
  42.                         );
  43.                     }
  44.                 }
  45.                 catch (couchException $e) {
  46.                     //на случай если, что-то будет не так с БД
  47.                     switch($e->getCode()) {
  48.                         //например это - документ не найден, значит такого пользователя не существует в базе
  49.                         case 404:
  50.                             $response = array(
  51.                                 "result" => "denied"
  52.                             );
  53.                             break;
  54.                     }
  55.                 }
  56.                
  57.                 //преобразовываем массив PHP в json объект и отправляем
  58.                 header("Content-Type: application/json");
  59.                 echo json_encode($response);
  60.                 break;
  61.  
  62.             case "logout":
  63.                 //убиваем сессию
  64.                 session_name("sid");
  65.                 session_start();
  66.                 if(session_destroy()) {
  67.                     $response = array(
  68.                         "result" => "success"
  69.                     );
  70.                 }
  71.                 else {
  72.                     $response = array(
  73.                         "result" => "failed"
  74.                     );
  75.                 }
  76.                 header("Content-Type: application/json");
  77.                 echo json_encode($response);
  78.                 break;
  79.  
  80.             default:
  81.                 //если пришел неправильный запрос
  82.                 header("HTTP/1.1 400 Bad Request");
  83.                 exit();
  84.                 break;
  85.         }
  86.     }
  87.     else {
  88.         //если пришел неправильный запрос
  89.         header("HTTP/1.1 400 Bad Request");
  90.         exit();
  91.     }
  92. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement