Проверить наличие элемента в таблице базы данных на веб-сайте с помощью службы restful - PullRequest
0 голосов
/ 12 января 2020

У меня есть веб-сайт с сервисом restful, моей проблемой является проверка существования токена аутентификации пользователя, расположенного в локальном хранилище браузера, с использованием html5.

Я использую jQuery для передачи токена от клиента к серверу, чтобы проверить, существует ли токен, но если токен существует или нет, возвращаемый код состояния http всегда равен 200, я не понимаю, почему.

Мой код для этой работы разделен на две страницы: одну для клиента и одну для сервера.

Home. html

<script type="text/javascript">

//other code 

 $(document).ready(function(){
    localStorage.getItem("tokenMyWebSite");
    document.getElementById("tokenhtml").innerHTML = localStorage.getItem("tokenMyWebSite");

    if (localStorage.getItem("tokenMyWebSite") === null) {
      window.location.replace("index.html");
    } else {
      var token = localStorage.getItem("tokenMyWebSite");
      $.ajax( {
        url: 'verify.php',
        method: 'GET',
        data: {
          token: token,     /* (backend): (frontend)*/
        },

        error:function(response){
          // Simulate an HTTP redirect:
          alert("Token is not present in database");
          //localStorage.removeItem("tokenListenMe"); 
          //window.location.replace("index.html");
        }
      });
    }
 });

    //other code

</script>

проверить. php

<?php

  require ("debug.php");

  $conn = new mysqli('localhost', 'root', '', 'MyWebSite');

  $token = $conn->real_escape_string($_GET["token"]);

  $sql = $conn->query("SELECT token FROM credenziali where token = '$token' LIMIT 1");

  if (!$sql) {
    http_response_code(404);
    die(mysqli_error());
  }

  if(mysql_fetch_array($sql) !== false) {
    http_response_code(200); 
  } else {
    http_response_code(404);
  }

  mysqli_close($conn);

?>

1 Ответ

1 голос
/ 12 января 2020

Вы смешиваете mysqli с mysql (устарело). Обратите внимание на отсутствие i здесь:

if(mysql_fetch_array($sql) !== false) {

Измените это на mysqli_fetch_array и !== false на !== null (потому что mysqli_fetch_array() возвращает ноль, а не ложь при сбое), и вы должны быть хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...