נפתרה: רק ה-IP שלי

בטח, הבנתי את הדרישות שלך. כך יכול להיראות המאמר שלך בנושא "טיפול בכתובות PHP ו-IP":

עבודה עם כתובות IP בעולם פיתוח אתרים מקובל, במיוחד כאשר עוסקים במעקב אחר משתמשים, הגדרת אימות מבוסס IP ועוד ועוד. מפתח יודע שישנן דרכים מרובות להביא את כתובת ה-IP של לקוח, אבל יש כמה מורכבויות הקשורות בפיתוח מאחורי פרוקסי, מכיוון שהוא עשוי להחזיר את ה-IP של השרת ולא את ה-IP של הלקוח. כאן נכנס לתמונה הכוח של PHP, ומספק תכונות מובנות לטיפול במצבים כאלה ביעילות.

הבנת כתובת IP ו-PHP

כתובת פרוטוקול האינטרנט (או כתובת ה-IP) היא מחרוזת מספרים ייחודית המופרדת על ידי נקודות המזהה כל מחשב המשתמש בפרוטוקול האינטרנט כדי לתקשר דרך רשת. ב-PHP, $ _SERVER הוא משתנה סופר גלובלי, המכיל מידע על כותרות, מיקום סקריפט ונתיבים. כדי להביא את כתובת ה-IP של המערכת, אתה יכול להשתמש ישירות ב-$_SERVER['REMOTE_ADDR'], אך ייתכן שזה לא תמיד יביא את התוצאה הצפויה, במיוחד במקרים שבהם לקוח נמצא מאחורי שרת proxy.

פתרון: זיהוי כתובות IP מדויק ב-PHP

כדי לקבל את כתובת ה-IP המדויקת של הלקוח, גם כשהוא מאחורי שרת proxy, אנו יכולים להשתמש בכותרות HTTP_CLIENT_IP ו-HTTP_X_FORWARDED_FOR המכילות את כתובת ה-IP המקורית של הלקוח. עלינו לבדוק תחילה את הכותרות הללו כדי לוודא שכתובת IP אינה מזויפת על ידי משתמש זדוני.

להלן פירוט שלב אחר שלב של פתרון קוד PHP.

<?php
function getUserIP(){
    if(!empty($_SERVER&#91;'HTTP_CLIENT_IP'&#93;)){
        // IP address from shared Internet
        $ip = $_SERVER&#91;'HTTP_CLIENT_IP'&#93;;
    }elseif(!empty($_SERVER&#91;'HTTP_X_FORWARDED_FOR'&#93;)){
        // IP address from proxy server
        $ip = $_SERVER&#91;'HTTP_X_FORWARDED_FOR'&#93;;
    }else{
        // IP address from remote address
        $ip = $_SERVER&#91;'REMOTE_ADDR'&#93;;
    }
    return $ip;
}
$userIP = getUserIP();
echo "User's IP: " . $userIP;
?>

הסבר על קוד PHP

הפונקציה getUserIp ב-PHP שואפת לקבל את כתובת ה-IP של הלקוח על ידי בדיקה תחילה של הכותרת HTTP_CLIENT_IP. לעתים קרובות זה מכיל את כתובת ה-IP המקורית של הלקוח בעת שימוש בשירות אינטרנט משותף. אם הכותרת הזו ריקה, היא תבדוק את הכותרת HTTP_X_FORWARDED_FOR, שיכולה גם להכיל את כתובת ה-IP המקורית של הלקוח שנשלחה על ידי שרת ה-proxy.

  • אם שתי הכותרות ריקות, הוא נופל בחזרה ל-$_SERVER['REMOTE_ADDR'] שמחזיר את כתובת ה-IP של השרת.
  • לאחר קבלת כתובת ה-IP, הקוד מדפיס אותה עם הצהרת הד.

שיטה זו היא אחת הדרכים האמינות יותר להשיג כתובת IP של משתמש ב-PHP. עם זאת, זכור עדיין לנקוט באמצעי זהירות כדי להגן מפני זיוף IP. תמיד לטהר או לאמת כתובות IP כחלק מפרוטוקול האבטחה שלך.

הודעות קשורות:

השאירו תגובה