Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 07. Februar 2020 10:06

philfr
probiert CMS/ms aus
Registriert: 08. Mai 2019
Beiträge: 49

Problem mit $_SERVER['REMOTE_ADDR']

Hallo,

wenn ich in einem Script außerhalb von CMSMS $_SERVER['REMOTE_ADDR'] verwende, dann bekomme ich auch die richtige Adresse.
Wenn ich das aber innerhalb von CMSMS verwende, bekomme ich als Ergebnis immerzu die Adresse des Servers, also $_SERVER['SERVER_ADDR']
Gehostet ist alles bei 1blu.
Wird die Client-Adresse nun innerhalb von CMSMS auf die Server-Adresse umgebogen oder hat der Hoster seine Finger im Spiel? Gegen letzters spricht, dass das solo aufgerufene Script ja die korrekte Adresse liefert.

Kann jemand das Rätsel lösen?

Frank

Offline

#2 07. Februar 2020 12:09

philfr
probiert CMS/ms aus
Registriert: 08. Mai 2019
Beiträge: 49

Re: Problem mit $_SERVER['REMOTE_ADDR']

Ich hab das jetzt mal im lokalen Netzwerk ausprobiert, da ist das Problem das Gleiche:
Außerhalb von CMSMS liefern $_SERVER['REMOTE_ADDR'] und $_SERVER['SERVER_ADDR'] korrekte Werte,
innerhalb von CMSMS aufgerufen liefern beide $_SERVER['SERVER_ADDR'] zurück. Am Hoster liegt es also nicht, irgendwo in CMSMS wird die Variable  $_SERVER['REMOTE_ADDR'] geändert in $_SERVER['SERVER_ADDR'].
Habe Version 2.2.10

Offline

#3 07. Februar 2020 20:05

Janl
Server-Pate
Ort: Freistadt, Österreich
Registriert: 13. Dezember 2010
Beiträge: 1.175
Webseite

Re: Problem mit $_SERVER['REMOTE_ADDR']

vielleicht mal ein String-search in eine ausgepackte lokale CMSMS tun.
So suche ich immer nach Kode-Fragmente.

MfG
Jan


Ubuntu 16.04 mit KDE - Kubuntu 18.04 / win10 (1 duo-boot laptop)- LAMP

Offline

#4 09. Februar 2020 12:02

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.316

Re: Problem mit $_SERVER['REMOTE_ADDR']

Kann ich unter CMSms 2.2.12 nicht bestätigen.

Probier mal statt $_SERVER['REMOTE_ADDR'] die Funktion cms_utils::get_realip();

Wenn das nichts ändert: unter welchen Bedingungen genau tritt das Problem auf?
Wie wird denn das Script innerhalb von CMSms aufgerufen?

Offline

#5 09. Februar 2020 12:45

philfr
probiert CMS/ms aus
Registriert: 08. Mai 2019
Beiträge: 49

Re: Problem mit $_SERVER['REMOTE_ADDR']

Das Problem tritt auf, wen ich im Formbuilder "Ergebnisse an eine festgelegte Formular-Aktion senden" verwende, die dann das Script aufruft.
cms_utils::get_real_ip() hatte ich auch schon probiert, das gab in meinem Script nur einen leeren String zurück.
Suche nach Codefragment brachte auch keinen Erfolg, also keine Stelle, wo $_SERVER['REMOTE_ADDR'] manipuliert wird.
Es ist auch noch verrückter:
Habe ein benutzerdefiniertes Tag gebaut:

[== php ==]
echo $_SERVER['REMOTE_ADDR'] ;

welches die richtige Adresse anzeigt, während im Script die Serveradresse angezeigt wird.
Aber wenn ich das Script direkt aufrufe, funktioniert es richtig.

Mein Workaround ist jetzt erst mal nach der Methode "vom Rücken durch die Brust ins Auge" - ich lege ein verstecktes Feld im Formular an, das dann mit der Adresse gefüllt und vom Script ausgelesen wird.

Offline

#6 09. Februar 2020 14:13

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.316

Re: Problem mit $_SERVER['REMOTE_ADDR']

"Ergebnisse an eine festgelegte Formular-Aktion senden"

Fällt Dir was auf?
Von wem wird das Ergebnis an die festgelegte Aktion gesendet?
Tipp: Nicht vom Browser.
Erstmal wird das Formular an den Server gesendet.
Und von dort an die jeweilige Aktion.
Dass Du also dann in Deinem Script immer die Server-Adresse bekommst, ist folgerichtig und logisch.

Offline

#7 09. Februar 2020 14:20

philfr
probiert CMS/ms aus
Registriert: 08. Mai 2019
Beiträge: 49

Re: Problem mit $_SERVER['REMOTE_ADDR']

Na ja, nach meinem letzten Beitrag schwante mir schon so was...
Also ist mein Workaround wohl gleichzeitig die ideale Lösung.
Vielen Dank für die Auflösung.

Offline

#8 10. Februar 2020 08:44

philfr
probiert CMS/ms aus
Registriert: 08. Mai 2019
Beiträge: 49

Re: Problem mit $_SERVER['REMOTE_ADDR']

Ich habe es jetzt noch etwas eleganter gelöst:
Datei DispositionForm.class.php
in function DisposeForm($returnid)
nach der for-Schleife
folgende Zeilen eingefügt:

[== php ==]
$pl = urlencode('REMOTE_ADDR').'='.urlencode($_SERVER['REMOTE_ADDR']); 		
array_push($payload, $pl);

Offline