@hossein.r.1442
میشه متوجه شد ک vps هستن یا نه درسته ؟
شاید پاسخ شما همینجا باشد
همانطور که دوستان در بالا گفتن شما با محدود کردن ip میتونی کارتون رو انجام بدی ، با سرویس سایت ipapi.com شما میتونی با GuzzleHttp ای پی کاربر رو به api سایت بفرستی که نتیجه بازگشتی که شما یه بخش Security داره که مشخص میکنه امن هست (لینک آموزشی که دوستمون @coaradsupp گذاشتن ) یعنی از شبکه TOR استفاده میکنه یا خیر، همه ی این کارها رو با مشخص کردن میدلور در لاراول میتونی انجام بدی.
public function handle($request, Closure $next)
{
$ip = $request->ip();
$key = config('services.ip.key');
$url = "http://api.ipapi.com/api/{$ip}?access_key={$key}&security=1";
// make request
$client = new Client;
$response = $client->request('GET', $url);
$data = json_decode((string) $response->getBody(), true);
if (!array_key_exists('security', $data)) {
return false;
}
return $data['security']['threat_level'] === 'high' ? abort(403) : $next($request);
}
همونطور که دوست عزیز آقای موسوی فرمودند شما میتونید از سرویس که گفتند استفاده کنید ولی چون این سرویس رایگان نیست و در پاسخ مقدار Security وجود نداره شما چک کنید میتونید به شکل زیر استفاده کنید.
حالا خطا رو به هر شکلی که دوست داشتین برگردونید.
public function handle($request, Closure $next)
{
$ip = $request->ip();
$key = config('services.ip.key');
$url = "http://api.ipapi.com/api/{$ip}?access_key={$key}&security=1";
$client = new Client();
$response = $client->request('GET',$url);
$data = json_decode((string) $response->getBody() , true);
if ($data['country_name'] !== 'Iran') {
return response("country : ".$data['country_name']." not support" , 403);
}
return $next($request);
}