ধরে নিই যে একটিতে একটি সাধারণ সেটআপ রয়েছে (সেন্টস 7, অ্যাপাচি ২.৪.x এবং পিএইচপি ৫..6.২০) এবং কেবল একটি ওয়েবসাইট (ভার্চুয়াল হোস্টিং অনুমান করে নয়) ...
পিএইচপি অর্থে, $_SERVER['SERVER_NAME']কোনও উপাদান পিএইচপি হ'ল httpd.conf $_SERVERএ আপনার অ্যাপাচি কনফিগারেশন (এর সাথে **ServerName**নির্দেশ UseCanonicalName On) এর উপর ভিত্তি করে সুপারগ্লোবলে নিবন্ধিত হয় (এটি কোনও ভার্চুয়াল হোস্ট কনফিগারেশন ফাইল হতে পারে, যাইহোক, ইত্যাদি ...)। HTTP_HOST HTTP hostশিরোনাম থেকে প্রাপ্ত । এটি ব্যবহারকারীর ইনপুট হিসাবে বিবেচনা করুন। ফিল্টার এবং ব্যবহারের আগে বৈধতা।
এখানে $_SERVER['SERVER_NAME']তুলনার ভিত্তি হিসাবে আমি কোথায় ব্যবহার করি তার একটি উদাহরণ এখানে । নিম্নলিখিত নামটি একটি কংক্রিট শিশু শ্রেণীর নাম থেকে তৈরি করা হয়েছে ServerValidator(সন্তানের Validator)। ServerValidatorusing _SERVER এ ছয় বা সাতটি উপাদান ব্যবহার করার আগে তাদের পরীক্ষা করে।
HTTP অনুরোধটি পোস্ট করা হয়েছে তা নির্ধারণের ক্ষেত্রে, আমি এই পদ্ধতিটি ব্যবহার করি।
public function isPOST()
{
return (($this->requestMethod === 'POST') && // Ignore
$this->hasTokenTimeLeft() && // Ignore
$this->hasSameGETandPOSTIdentities() && // Ingore
($this->httpHost === filter_input(INPUT_SERVER, 'SERVER_NAME')));
}
এই পদ্ধতিটি বলা হওয়ার সাথে সাথে, প্রাসঙ্গিক $ _SERVER উপাদানগুলির সমস্ত ফিল্টারিং এবং বৈধকরণ ঘটতে পারে (এবং প্রাসঙ্গিক বৈশিষ্ট্য সেট)।
লাইন ...
($this->httpHost === filter_input(INPUT_SERVER, 'SERVER_NAME')
... $_SERVER['HTTP_HOST']মানটি (চূড়ান্তভাবে অনুরোধ করা hostHTTP শিরোনাম থেকে প্রাপ্ত ) পরীক্ষা করে $_SERVER['SERVER_NAME']।
এখন আমি superglobal হয় কথা ব্যবহার করছি আমার উদাহরণস্বরূপ ব্যাখ্যা করতে, কিন্তু যে ঠিক কারণ কিছু মানুষের সাথে অপরিচিত হয় INPUT_GET, INPUT_POSTএবং INPUT_SERVERশুভেচ্ছা করতে filter_input_array()।
বটম লাইন আমি আমার সার্ভারে পোস্ট অনুরোধ পরিচালনা না করার, হয় সব চার শর্ত পূরণ করা হয়। সুতরাং, পোষ্ট অনুরোধগুলির শর্তে, এইচটিটিপি hostশিরোনাম সরবরাহ করতে ব্যর্থতা ( কঠোর এইচটিটিপি 1.0 ব্রাউজারের জন্য বানান ডুম ডুম) । তাছাড়া, অনুরোধ করা হোস্ট মান মেলানো জন্য এ httpd.conf , মান জন্য, এবং, এক্সটেনশন দ্বারা মধ্যে superglobal হয়। আবার, আমি পিএইচপি ফিল্টার ফাংশনগুলি ব্যবহার করব , তবে আপনি আমার বামনটি ধরেন।ServerName$_SERVER('SERVER_NAME')$_SERVERINPUT_SERVER
মনে রাখবেন যে আপাচি প্রায়শই স্ট্যান্ডার্ড পুনঃনির্দেশগুলিতে ব্যবহার ServerNameকরে (যেমন কোনও ইউআরএল ছাড়িয়ে ট্র্যাশিং স্ল্যাশ ছেড়ে দেওয়া: উদাহরণস্বরূপ, http://www.foo.com হয়ে উঠেছে http://www.foo.com/ ), আপনি না থাকলেও ইউআরএল পুনর্লিখন ব্যবহার।
আমি $_SERVER['SERVER_NAME']মান হিসাবে ব্যবহার করি , না $_SERVER['HTTP_HOST']। এই ইস্যুতে অনেক পিছনে রয়েছে। $_SERVER['HTTP_HOST']খালি থাকতে পারে, সুতরাং উপরোক্ত আমার পাবলিক পদ্ধতির মতো কোড কনভেনশন তৈরির ভিত্তি এটি হওয়া উচিত নয়। তবে, কেবল উভয়ই সেট করা হতে পারে তারা গ্যারান্টি দেয় না যে তারা সমান হবে। নিশ্চিত হয়ে ওঠার জন্য পরীক্ষার সর্বোত্তম উপায় (অ্যাপাচি সংস্করণ এবং পিএইচপি সংস্করণ মনে রাখে)।