לפי כתובת ה- IP של מבקר באתר שלך, אתה יכול לגלות עליו די הרבה - מדינה, עיר, שם וכתובת דוא ל של ספק האינטרנט וכו '. אך הערך העיקרי הוא שה- IP יכול לשמש כמזהה מבקר עבור סקריפטים בצד השרת. להלן מתואר כיצד ניתן לקבוע את כתובת ה- IP באמצעות PHP.
זה הכרחי
ידע בסיסי ב- PHP
הוראות
שלב 1
כדי לחלץ את כתובת ה- IP מהכותרות שנשלחו לשרת בקשת הדפדפן, השתמש בפונקציה getenv. הוא קורא את הערכים שצוינו לו מתוך משתני הסביבה. משתנה בשם REMOTE_ADDR משמש לאחסון כתובת ה- IP של המבקר. עם זאת, הלקוח יכול להשתמש בשרת proxy, ובמקרה זה המשתנה יכיל את כתובתו, ולא את זו שתרצה. תוכלו לגלות כי הגולש באינטרנט משתמש ב- IP ביניים על ידי התבוננות במשתנה הסביבה הנקרא HTTP_VIA. כל הכתובות של שרתי ה- proxy המעורבים בשרשרת ממוקמות בה ומופרדות באמצעות פסיקים. על שרתי ביניים למקם את כתובת המבקר במשתנה בשם HTTP_X_FORWARDED_FOR, אך הדבר תלוי לחלוטין בהגדרות ה- proxy. המשמעות היא שכדי לכסות כמה שיותר אפשרויות לקביעת כתובת ה- 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));
}