Bazı durumlarda sayfanıza erişilmesi için bir tür kimlik doğrulaması yapmanız gerekir. Eğer bunu doğrudan GET ya da POST metodlarını kullanarak yapmak istemiyorsanız en sık kullanılan yöntem “token doğrulamasıdır”.

Kısaca anlatmak gerekirse web sayfasına yaptığınız isteğin

HTTP üstbilgisi (header) içerisinde bir değişken oluşturur daha sonra da bunu sunucu tarafında kontrol edersiniz.

Örneğin göndermek istediğimiz değişkenin adı “token” olsun.

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => "http://api.sitem.com",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"token: 413c32100"
),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "Hata #:" . $err;
} else {
echo $response;
}

Yukarıdaki kod parçasında cURL ile http://api.sitem.com adresine GET methodu kullanarak (İsterseniz POST, PATCH, DELETE gibi diğer methodları da kullanabilirsiniz.) HTTP HEADER içerisinde token değişkenini gönderdik. İki noktadan sonra değişkene değer verebilirsiniz. Eğer hata oluştuysa hatayı oluşmadıysa sunucudan gelen yanıtı yazdırdık. Çift tırnaktan sonra virgül koyup daha fazla değişken de ekleyebilirsiniz.

Sunucu tarafındaki kontroli ise nispeten daha basit. Aşağıda örnek kod ile gelen “token” bilgisinin doğru olup olmadığını kontrol ettikten sonra diğer işlemlerinizi yapabilirsiniz. Dikkat etmeniz gereken nokta sunucuya gönderdiğiniz değişkenin adının her harfini bazı durumlarda büyük harflerle yazmanız gerekebiliyor. Ben Apache 2.4’te bu durumla karşılaştım küçük harfler kullanınca kabul etmedi.

<?php
if (hash_equals(isset($_SERVER['HTTP_token']), '413c32100')){
echo 'DOGRU';
} else {
http_response_code('403');
}

Yukarıda eğer gelen bilgi doğruysa DOGRU değerini döndürdük. Yanlış ise HTTP ERROR 403 ACCESS DENIED hatası oluşturduk.

Kodlarınızı yazmadan önce HTTP işlemlerinizi Postman uygulaması ile planlayıp, test edebilirsiniz. Bu size zaman kazandırır.