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