Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有自定义头的PHP基本Rest API_Php_Rest - Fatal编程技术网

带有自定义头的PHP基本Rest API

带有自定义头的PHP基本Rest API,php,rest,Php,Rest,我对PHP Rest API相当陌生。我想升级我的知识,因此我需要为我的web服务创建授权。我想先问一下他们是否有权查看我的web服务,如果没有,他们就不会看到 这就是我到目前为止所做的: <?php include('db.php'); $sql = "SELECT * FROM bb_users"; $stmt = $conn->prepare($sql); $stmt->execute(); $set = array(); while(

我对PHP Rest API相当陌生。我想升级我的知识,因此我需要为我的web服务创建授权。我想先问一下他们是否有权查看我的web服务,如果没有,他们就不会看到

这就是我到目前为止所做的:

  <?php 
  include('db.php');

  $sql = "SELECT * FROM bb_users";
  $stmt = $conn->prepare($sql);
  $stmt->execute();

  $set = array();

  while($r = $stmt->fetchAll(PDO::FETCH_ASSOC)){
      $set = $r;
  }

  // $username='ABC';
  // $password='XYZ';

  //header("Authorization: Basic " . base64_encode($username . ":" . $password));
  header('Content-type: application/json');
  header('Access-Control-Allow-Origin: *');
  echo json_encode($set);

  ?>

有什么想法吗?我非常感谢你的帮助。如果你能提供一些开始的提示或链接

这是您尝试执行的基本实现。请记住,这使用基本的访问身份验证,它不提供任何针对用户名和密码的保护,因为这些基本上是通过网络传输的

为了构建更好、更健壮的API,我推荐它是最好的API之一,如果不是最好的

至于身份验证,我建议使用OAuth

仅供参考:我假设您的代码是正确的,并且没有任何错误,所以我只是将其移动到if块中。有一个用于检查\u凭证\u是否有效的\u函数的调用,该函数是您将定义并调用以确保用户名和密码有效的函数。如果凭证有效,它将返回json编码的数据并退出,否则它将继续到脚本末尾并返回401状态代码

<?php

$headers = apache_request_headers();

if(isset($headers['Authorization'])) {

  $authorization = $headers['Authorization'];

  if (preg_match('/Basic\s+(.*)$/i', $authorization, $auth)) {

      // Split the string, base64 decode it
      list($user, $pass) = explode(':', base64_decode($auth[1]));

      if (check_if_credentials_are_valid_function($user, $pass)) {

        include('db.php');

        $sql = "SELECT * FROM bb_users";
        $stmt = $conn->prepare($sql);
        $stmt->execute();

        $set = array();

        while($r = $stmt->fetchAll(PDO::FETCH_ASSOC)){
          $set = $r;
        }

        // $username='ABC';
        // $password='XYZ';

        //header("Authorization: Basic " . base64_encode($username . ":" . $password));

        header('Content-type: application/json');
        header('Access-Control-Allow-Origin: *');

        echo json_encode($set);
        exit();
      }
  }

}

header('HTTP/1.0 401 Unauthorized');
exit();

?>