عزیز شما میخوای کسی نتونه از اون api استفاده بکنه و بزاره مثلا داخل سایت خودش و کاربر هاش استفاده کنن ؟
اگر فقط یکبار در هر مراجعه api اطلاعات میده این کد به دردتون میخوره . اگر نه کد دوم که مخصوص api هست رو تغییر بدید که سشن رو پاک نکنه
کد اول هنگام لود صفحه ی مورد نظر ( تنها در همین صفحه اجرا شود و نه کل اسکریپت ( عدم همپوشانی با api به خاطر حذف نشدن سشن))
کد PHP:
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
$api_sec = rand(500000, 5000000);
$_SESSION['api_sec'] = $api_sec;
setcookie("api_sec", $api_sec);
کد دوم برای فرانت . متغییر url رو به نام چیزی که هست برای api تغییر بدید
کد:
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
var url = 'api.php?api_sec='+getCookie('api_sec');
کد سوم مربوط به api
کد PHP:
if(!isset($_SESSION['api_sec']) || empty($_SESSION['api_sec']) || !isset($_GET['api_sec']) || $_GET['api_sec'] != $_SESSION['api_sec']){
die;
} else{
$_SESSION['api_sec'] = "";
}