[PHP 5]: Wie kann man am einfachsten erkennen, ob php Lokal oder auf dem Server?

mr5

Banned
Registriert
Feb. 2005
Beiträge
1.041
Hallo Ihr Lieben - ich habe schon wieder eine Frage:

Ich habe 2x MySQL Zugangsdaten.

1x für lokal unter XAMPP
und
1x für online für meinen Webspace.


Früher habe ich mit $_SERVER[REMOTE_ADDR] lokal keine IP zurückbekommen. Jetzt bekomme ich auch bei XAMPP eine IP geliefert.

Ist zwar eine eine etwas seltene: 127.0.0.0 - aber ich kann ja nicht wissen ob nicht irgend wo in einer Firma bei einem Proxy gleiche IP eingerichtet ist, und dann klappt der ganze Datenbankzugriff nicht.

Hat einer von euch ein einfaches probades Hausmittel um die lokale Umgebung zu erkennen?

Scriptstück einfach hier reinkopieren - wäre schon genug :).


DAANKE IM VORAUS!!!

Gruß
Stefan
 
Zuletzt bearbeitet:
Wenn die gelieferte IP aus dem bereich 127.x.x.x ist, ist immer der lokale Rechner gemeint.
 
Warum nicht einfach eine Datei includen, die sich auf Client und Server unterscheidet, und eine Variable bereitstellt?

David
 
127.0.0.0 = Localhost ... schön, dass ich das auch mal weiss :D

Include mit unterschiedlicher Variable ... auf die einfachsten Dinge kommt man selber nicht. :daumen:

Danke für eure Mühe!
 
merv schrieb:
127.0.0.0 == localhost ;)

Stimmt nicht so ganz!
localhost == 127.0.0.1

127.0.0.0 ist die Netzwerkadresse
127.0.0.255 ist die Broadcastadresse für das entsprechende Subnetz.

Netzwerkadressen und Broadcastadressen dürfen nie für Netzwerkgeräte verwendet werden. Daher kann 127.0.0.0 auch nicht die Adresse für den "localhost" sein.

Hier mal ein Auszug von devmag.net:
devmag.net schrieb:
Die Reservierung von Netzadresse und Broadcastadresse hat nichts mit den nach RFC 1918 reservierten Adressbereichen zu tun:

Reservierte IP Adressen nach RFC 1918
von bis
10.0.0.0 10.255.255.255
172.16.0.0 172.31.255.255
192.168.0.0 192.168.255.255

Diese Adressen sind für private Netze reserviert und werden generell nicht geroutet oder offiziell vergeben. Eine besondere reservierte Adresse ist auch die IP 127.0.0.1 - diese IP ist auf jedem System stets der localhost.

Eine weitere Besonderheit ist das Netz 169.254.1.0. Es ist nach RFC 3927 ebenfalls als privates Netz definiert. Verwendet wird dieser Adressbereich von der Zeroconf-Technologie (auch "Automatic Private IP Addressing" oder APIPA) zur automatischen Konfiguration von Netzwerkgeräten, wenn kein DHCP Server verfügbar ist.
(Wenn ihr z.B. keinen Router mit enthaltenem DHCP-Server habt und den Rechner anmacht - Auf das Broadcasting reagiert kein DHCP-Server, also wird der Netzwerkkarte automatisch eine IP zugewiesen. Diese IP ist im Bereich 169.254.1.x).

Gruß,

Bene
 
Vossen schrieb:
Stimmt nicht so ganz!
localhost == 127.0.0.1
das ist so nicht auch nicht richtig.
localhost ist gleich _allen_ adresse aus dem 127.0.0.0/8 netz (also auch 127.156.4.3 oder 127.3.4.0). meistens werden zwar alle adressen aus diesem bereich verstanden, aber wie die rfc 3330 erklärt, wird üblicherweise als loopback netz "nur" 127.0.0.0/32 reserviert, womit deine broadcastadresse wieder richtig ist.
zum selber lesen: http://tools.ietf.org/html/rfc3330 da stehen auch alle anderen reservierten netze drin.
 
Zuletzt bearbeitet:
Is ja interessant !

Ich find das ja hier einfach nur Klasse!
 
Laz-Y schrieb:
was ist das besondere an den Adressen, die hinten eine 0 haben?
Ganz einfach: Nichts. :D
Im Internet bekommst du eine IP zugewiesen. Im Netzwerk manchmal auch, machmal muss man sich auch selbst eine geben. Ob die letzte Zahl jetzt eine Null oder eine 255 ist, dass ist vollkommen egal.
Interessanter sind die ersten beiden Gruppen. Aber die letzte ist vollkommen egal.
 
Computer Freak schrieb:
Ganz einfach: Nichts. :D
Im Internet bekommst du eine IP zugewiesen. Im Netzwerk manchmal auch, machmal muss man sich auch selbst eine geben. Ob die letzte Zahl jetzt eine Null oder eine 255 ist, dass ist vollkommen egal.
Interessanter sind die ersten beiden Gruppen. Aber die letzte ist vollkommen egal.
welche beiden ersten gruppen?

ansonsten: nein, es ist nicht egal.
um die bedeutung der netzwerkadresse zu erklären, muss ich allerdings ein bisschen ausholen
also das ist ein netzwerk: 169.158.0.0/16
das heißt, die netzwerkadresse ist 169.158.0.0 und die netzmaske ist 255.255.0.0. auf die netzmaske kommt man, wie folgt: die /16 bedeutet, dass die 16 ersten bits die netzadresse ausmachen, dafür muss man allerdings die adresse einmal umdrehen, also die ersten 16bits von rechts von 0.0.158.169 sind die netzadresse. alle anderen bits werden mit 1 gefüllt und als netzmaske bezeichnet.
wenn du nun herausfinden willst, ob eine beliebige adresse zu deinem netz gehört, machst du das ganz einfach: du nimmst diese adresse und machst eine und-verknüpfung mit der netzmaske. wenn das ergebnis gleich der netzwerkadresse ist, ist die adresse im eigenen sub-netz. (ob die adresse im eigenen sub-netz ist, ist beim versenden von daten wichtig, sonst müssen sie an nächste gateway geschickt werden.)
wichtig ist: netzadressen normalerweise auf null. müssen sie aber nicht, die fällen in denen sie es nicht tun, sind aber eher exotisch und treten in der praxis nicht auf.
nicht alles was auf null endet ist ein netzwerkadresse. in den obigen bsp ist etwa die adresse 169.158.2.0 keine netzwerkadresse, sondern eine völlig legale adresse.
das ist die bedeutung der netzwerkadresse.

die broadcast-adresse ist nun einfach die letzte adresse in dem netz. (das hat auch eine algorithmische begründung, aber die spare ich mir hier mal...)
auch hier gilt wieder: nicht jede adresse auf 255 ist eine broadcast-adresse und in ein paar exotischen konfigurationen, die in der praxis nicht auftreten, endet die broadcast-adresse nicht auf 255.
 
Zurück
Oben