API թոկենով ավտորիզացիայով PHP-ում

Հնարավոր է այնպես անել, որ API-ն լինի ոչ թե հանրային, այլ փակ, հասանելի միայն գաղտնաբառով։ Այս դեպքում մեր API-ին դիմելիս յուրաքանչյուր հարցման մեջ պարամետրերից բացի անհրաժեշտ կլինի փոխանցել նաև ճիշտ գաղտնաբառը։ Այդպիսի գաղտնաբառը կոչվում է թոկեն։

Մեր API-ի օգտատերերը պետք է ինչ-որ կերպ ստանան այս թոկենը։ Օրինակ, գնեն այն։ Այս դեպքում յուրաքանչյուր գնորդ կունենա իր թոկենը։

Եկեք դիտարկենք թոկենների հետ աշխատանքը օրինակով։ Ենթադրենք, մեր API-ն պարամետրով կընդունի թիվ, և կվերադարձնի այդ թվի քառակուսին։ Եկեք այս API-ն դարձնենք փակ։ Սկսենք իրականացումից։

Սկզբից, պարզության համար, եկեք ստեղծենք մեկ ընդհանուր թոկեն և այն կպահենք բաց տեսքով ֆայլում։

api.loc/index.php<?php
  $token = '12345';
?>

Ահա այսպես մենք կդիմենք մեր API-ին, փոխանցելով պարամետրը և թոկենը։

urlhttp://api.loc/index.php?num=100&token=12345

Եկեք իրականացնենք API թոկենի ստուգմամբ։

api.loc/index.php<?php
  $token = '12345';
  
  if (isset($_GET['token']) and $_GET['token'] === $token) {
    if (isset($_GET['num'])) {
      echo $_GET['num'] ** 2;
    } else {
      echo 'error';
    }
  } else {
    echo 'incorrect token';
  }
  
?>
Задание 1

Ստեղծեք API, որը պարամետրով կընդունի ծննդյան օրվա ամսաթիվը և կվերադարձնի թե քանի օր է մնացել այդ ամսաթվին։ Կատարեք ավտորիզացիա թոկենով։

Задание 2

Փոփոխեք նախորդ առաջադրանքն այնպես, որ և՛ պարամետրը, և՛ թոկենը փոխանցվեն POST մեթոդով։

Задание 3

Փոփոխեք նախորդ առաջադրանքն այնպես, որ թոկենը փոխանցվի HTTP վերնագրի միջոցով X-Token։

Задание 4

Այնպես արեք, որ թոկենները պահվեն տվյալների բազայում և API-ի յուրաքանչյուր օգտատեր ունենա իր թոկենը։

Задание 5

Սահմանափակեք յուրաքանչյուր API օգտատերի հարցումների քանակը մինչև 10 օրում։