PHP да авторизацияли API

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 sarlavhasi X-Token орқали ўтказилсин.

Задание 4

Токенлар маълумотлар базасида сақлансин ва ҳар бир API фойдаланувчисининг ўзига хос токени бўлсин.

Задание 5

Ҳар бир API фойдаланувчиси учун сўровлар сонини кунда 10 та чегараланг.