আপনি যদি কোনও ভারসাম্য রক্ষাকারী হিসাবে থাকেন তবে লারাভেলস \Request::ip()
সর্বদা ব্যালেন্সারের আইপি প্রদান করে:
echo $request->ip();
// server ip
echo \Request::ip();
// server ip
echo \request()->ip();
// server ip
echo $this->getIp(); //see the method below
// clent ip
এই কাস্টম পদ্ধতিটি আসল ক্লায়েন্ট আইপি প্রদান করে:
public function getIp(){
foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key){
if (array_key_exists($key, $_SERVER) === true){
foreach (explode(',', $_SERVER[$key]) as $ip){
$ip = trim($ip); // just to be safe
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false){
return $ip;
}
}
}
}
}
এগুলি ছাড়াও আমি আপনাকে লারাভেলের থ্রটল মিডলওয়্যারটি ব্যবহার করে খুব সতর্কতা অবলম্বন করার পরামর্শ দিচ্ছি : এটি লারাভেলকেও ব্যবহার করে Request::ip()
, সুতরাং আপনার সমস্ত দর্শক একই ব্যবহারকারী হিসাবে চিহ্নিত হবে এবং আপনি খুব শীঘ্রই থ্রটল সীমাতে আঘাত হানবেন। আমি এই লাইভটি অভিজ্ঞতা পেয়েছি এবং এর ফলে বড় সমস্যার সৃষ্টি হয়েছে।
এটি ঠিক করতে:
জ্বালান \ http \ Request.php
public function ip()
{
//return $this->getClientIp(); //original method
return $this->getIp(); // the above method
}
আপনি এখন এটিও ব্যবহার করতে পারেন Request::ip()
, যা উত্পাদনে আসল আইপি ফিরিয়ে আনতে হবে।