ყველაზე ხშირად, საიტის ვიზიტორის IP მისამართი გამოიყენება მისი იდენტიფიკაციისთვის. ამის გარდა, IP– ს გამოყენებით, შეგიძლიათ მიიღოთ ბევრი დამატებითი ინფორმაცია ვიზიტორის შესახებ - მაგალითად, გაეცანით მის ინტერნეტ – პროვაიდერს და გეოგრაფიულ მდებარეობას. პრაქტიკაში, სერვერის მხრიდან PHP სკრიპტები ყველაზე ხშირად გამოიყენება ბრაუზერის მიერ გაგზავნილი მოთხოვნის სათაურებიდან IP მისამართების მოსაპოვებლად.
Ეს აუცილებელია
PHP– ის ძირითადი ცოდნა
ინსტრუქციები
Ნაბიჯი 1
გამოიყენეთ PHP- ის ჩაშენებული getenv ფუნქცია, რომ წაიკითხოთ IP მისამართები სუპერგლობალური გარემოს ცვლადი მასივიდან. უმარტივეს შემთხვევაში საკმარისი იქნება REMOTE_ADDR სახელის ცვლადის წაკითხვა. PHP კოდის შესაბამისი ნაწილი შეიძლება ასე გამოიყურებოდეს: $ userIP = getenv ('REMOTE_ADDR');
ნაბიჯი 2
მოთხოვნაში გაგზავნილი REMOTE_ADDR ცვლადის გარდა, შეამოწმეთ HTTP_VIA და HTTP_X_FORWARDED_FOR ცვლადები. თუ სტუმარი იყენებს მარიონეტულ სერვერს, მაშინ შუალედური მისამართი უნდა ჩაიწეროს ორივე ცვლადში - როგორც HTTP_VIA- ში, ასევე REMOTE_ADDR- ში. ამ შემთხვევაში შეგიძლიათ სცადოთ HTTP_X_FORWARDED_FOR– ის საშუალებით გაეცნოთ ვიზიტორის ნამდვილ IP– ს - მარიონეტულმა სერვერმა უნდა ჩაწეროს ორიგინალი მისამართი. ამასთან, ეს ყოველთვის არ კეთდება და მომხმარებელს აქვს შესაძლებლობა აირჩიოს "გაუმჭვირვალე" მარიონეტული სერვერი, რომელიც არ გადასცემს მოთხოვნის გაგზავნილ მნახველის თავდაპირველ IP- ს. ნებისმიერ შემთხვევაში, თქვენ უნდა გამოიყენოთ რაც შეიძლება მეტი გზა თქვენი კოდის ორიგინალი IP მისამართის მისაღებად, HTTP_CLIENT_IP ცვლადის შემოწმების დამატებით.
ნაბიჯი 3
PHP კოდის ერთ სტრიქონში შეაერთეთ გარემოში სამი ცვლადის თანმიმდევრული შემოწმება, რომელიც შეიძლება შეიცავდეს ვიზიტორის თავდაპირველ IP მისამართს. ეს შეიძლება გაკეთდეს, მაგალითად, ასე: $ userIP = getenv ('HTTP_CLIENT_IP') ან $ userIP = getenv ('HTTP_X_FORWARDED_FOR') ან $ userIP = getenv ('REMOTE_ADDR');
ნაბიჯი 4
ამოიღეთ დამატებითი სიმბოლოები და სხვა "ნაგავი" მიღებული IP მნიშვნელობიდან, რომელიც შეიძლება მოხვდეს გარემოს ცვლადებში. ეს შეიძლება გაკეთდეს, მაგალითად, ჩაშენებული PHP ფუნქციების გამოყენებით TRIM და preg_replace: $ userIP = TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
ნაბიჯი 5
შეუთავსეთ ყველა კოდს მორგებულ ფუნქციად, ასე რომ თქვენ შეგიძლიათ მიმართოთ მას იმის ნაცვლად, რომ გაიმეოროთ გამშვები და გასუფთავების ხაზები თქვენი PHP სკრიპტების სხვადასხვა ნაწილში. მაგალითად, მსგავსია: FUNCTION getUserIP () {
$ userIP = getenv ('HTTP_CLIENT_IP') ან $ userIP = getenv ('HTTP_X_FORWARDED_FOR') ან $ userIP = getenv ('REMOTE_ADDR');
დაბრუნების მორთვა (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
}