Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: IP-Adresse falsch in Datenbank wegen $_SERVER['REMOTE_ADDR'] ?!?

    sixtyseven

    • Fördermitglied
    • Beiträge: 107
    • Geschlecht:
    Hmm, wie es aussieht, habe ich mich bei meinem Shop irgendwo "verbastelt". Irgendwie wird die IP-Adresse nicht mehr vernünftig in die Datenbank geschrieben. Im Feld customers_ip der gleichnamigen Tabelle steht jetzt jedesmal so etwas merkwürdiges wie '2003:71:f06:1364:9c1d:717c:blubbblubb:blahblah'.

    Blöderweise habe ich meine Basteleien nur mäßig bis saumäßig dokumentiert, ich kann mich beim besten Willen nicht erinnern, wo ich jemals an diesem Wert gedreht hatte. Wenn ich mir die Werte aus $_SESSION['tracking'] ausgeben lasse, kann ich sehen, dass der Wert schon in der Session mitgeschleift wird.

    Während ich noch an diesem Beitrag hier tippe, habe ich mir dann mal die includes/tracking.php angesehen, um nachzusehen, was überhaupt in diese Session geschrieben wird, und habe da folgendes gefunden:

    Code: PHP  [Auswählen]
    // IP
    if (!isset($_SESSION['tracking']['ip'])) $_SESSION['tracking']['ip'] = $_SERVER['REMOTE_ADDR'];

    Als Konsequenz daraus habe ich mir mal meine $_SERVER angeschaut, und siehe da: Der Wert steht so bei mir in $_SERVER['REMOTE_ADDR'], ich kann daran also nichts machen. Dann bin ich auf folgende Lösung gekommen:

    Code: PHP  [Auswählen]
    $ipAddress = gethostbyname($_SERVER['SERVER_NAME']);
    echo $ipAddress;

    Pronto, es wird anscheinend eine IP Adresse angezeigt: 217.160.xxx.xxx. Wenn ich nun aber z.B. über www.whatsmyip.com meine aktuelle IP abfrage, steht da 87.160.xxx.xx

    Hat jemand eine Idee, was da los ist? Hier besteht meines Erachtens dringend Handlungsbedarf! Bin für jeden Vorschlag sehr dankbar!

    PHP-Version: 5.5.19 CGI/fast CGI

    Linkback: https://www.modified-shop.org/forum/index.php?topic=31693.0

    sixtyseven

    • Fördermitglied
    • Beiträge: 107
    • Geschlecht:
    Mittlerweile bin ich schon einen Schritt weiter: Es scheint sich hier wohl um eine IP im IPV6 Format zu handeln, also eine gültige IP. Mit diesem Wissen und etwas Hilfe vom großen Bruder Google habe ich schnell dies hier zusammengelötet: Proxycheck und validierung einer IP Adresse, sowohl für v4 als auch für v6 Adressen:

    Code: PHP  [Auswählen]
    function get_ip() {
        $ipaddress = '';
       
            if (getenv('HTTP_CLIENT_IP')){
            $ipaddress = getenv('HTTP_CLIENT_IP');
            } else if(getenv('HTTP_X_FORWARDED_FOR')){
            $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
            } else if(getenv('HTTP_X_FORWARDED')){
            $ipaddress = getenv('HTTP_X_FORWARDED');
            } else if(getenv('HTTP_FORWARDED_FOR')) {
            $ipaddress = getenv('HTTP_FORWARDED_FOR');
            } else if(getenv('HTTP_FORWARDED')){
           $ipaddress = getenv('HTTP_FORWARDED');
            } else if(getenv('REMOTE_ADDR')) {
            $ipaddress = getenv('REMOTE_ADDR');
            }
       
            if(inet_pton($ipaddress) !== false){
                    return $ipaddress;
            } else {
                    return 'Invalid / Unknown';
            }
    }

    Diese Funktion habe ich an das Ende der tracking.php gepackt und rufe die Zuweisung der Session jetzt so auf:

    Code: PHP  [Auswählen]
    // IP
    if (!isset($_SESSION['tracking']['ip'])) $_SESSION['tracking']['ip'] = get_ip();


    Funktion inet_pton()
    Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware
    0 Antworten
    1009 Aufrufe
    25. September 2017, 15:39:17 von Friederike
    2 Antworten
    1838 Aufrufe
    16. April 2018, 16:31:26 von webald
    3 Antworten
    2202 Aufrufe
    30. Oktober 2013, 16:31:03 von sandro22
               
    anything