PHP: IP eines Clients abfragen

Ditron

Mitglied
11. Dez. 2011
281
6
18
Sprachen
  1. BascomAVR
Moin!

Ich gehe euch momentan etwas fremd und arbeite wieder an meiner Lagerverwaltung. Diese wird bei der Arbeit genutzt um den Bestand von Bauteilen & Zubehör (zZt ca. 1500 Artikel) zu verwalten. Das Programm selber ist in PHP geschrieben und fragt eine MySQL-Datenbank ab. Momentan steht der PC noch als Standalone im Lager, auf ihm läuft ein Apache-/MySQL-Server in einem virtuellen PC (der gesperrt ist, so dass kein Nutzer an die Admin-Oberflächen oder die PHP-Skripte zugreifen kann). Die Abfragen werden dann auf der "realen" Windows-Oberfläche durchgeführt (ganz simpel im Browser).

Nun soll der Rechner ins Netzwerk, damit die Nutzer den aktuellen Lagerbestand von ihren eigenen Rechnern abfragen können. Allerdings sollen diese Nutzer nur Abfragen und keine Buchungen durchführen können. Nur der Lager-PC und ich (als 'Admin') sollen auch buchen können. Das ganze ist soweit schon vorbereitet: Es gibt zwei verschiedene PHP-Skripte (include), die die Verbindung zur Datenbank herstellen:

1. Nutzer-Verbindung: nur für Abfragen
2. Buchung-Verbindung: Abfragen und Buchungen

Diese beiden PHP-Skripte enthalten die Datenbank Zugangsdaten und werden per include in die jeweiligen PHP-Skripte "eingefügt".

Unser Netzwerk nutzt einen Domain-Controller. Jeder PC, der über die MAC-Adresse identifiziert wird, erhält eine feste IP. Weiterhin hat jeder Nutzer sein eigenes Nutzerkonto (nur so nebenbei, für dieses Projekt nicht relevant).

Und nun kommts: Meine Idee ist es, dass die "Buchung-Verbindung" nur dann eine Verbindung zur Datenbank herstellt, wenn dieses Skript vom Lager-PC oder von meinem PC aufgerufen wird (über eine einfache IF-Then-Abfrage).

Aber wie macht man das? Wie kann ich die IP des Clients abfragen? Es ginge natürlich auch die Abfrage der MAC, falls das möglich ist - da bin ich flexibel.

Ich hoffe, hier sind ein paar PHP-Kenner, die mir weiterhelfen können :)
 
Schau Dir mal die Variable $_REQUEST mal an, ich meine, da steht die IP des Aufrufers drin.

Grüße
Heinrich
 
Hallo Ditron!

Wie wäre es denn mit einer Funktion wie "banIpAdress".

Hiermit kannst du prüfen, ob eine (oder mehrere) IP-Adressen Zugang zu einer Seite (einem Service) erhalten sollen, oder zu einer anderen Seite (z.B. 404-Seite, wieder zur Startseite, oder Yahoo,.... ) weitergereicht werden.

Es kommt eben drauf an, wie du die Funktion aufbaust. :wink:


Schau doch mal bei SelfPHP !
Die haben da auch ein Beispiel zur Anwendung mit drin.

PHP:
 <?PHP 

function banIpAdress( $value ) {
  
  if ( is_array ( $value ) ){
      
      $checkIp = $value;
      
  }
  elseif ( file_exists( $value ) ) {
      
      $checkIp = file( $value );
       
  }
  else {
      
      return false;
      
  }
  
  $ip = $_SERVER['REMOTE_ADDR'];
  
  foreach ($checkIp as $ipCheck) {
          
    if ( $ip == trim( $ipCheck ) ) { 
        header('location: http://Yahoo.com');
        die();
    }
    
  }

  return true;
   
}

?>


PHP:
 <?PHP

// IP-Adressen in einer Text-Datei - pro Zeile eine IP-Adresse
$holdIp = 'ip-adressen.txt';

banIpAdress( $holdIp );

?>


Grüße,
Cassio
 
Vielen Dank euch beiden, das bringt mich weiter!

Dank Hemi bin ich per Google auf http://www.evocomp.de/beispiele/php/ip.html gestossen. Das wäre eine einfache Lösung.

Die Luxus-Version ist die Lösung von Cassio, die dann sogar erlaubt den User auf eine "Das klickst du besser nicht an"-Seite leitet.
 
Hallo Ditron!

Nun ja.... eine Luxus-Version ist das Beispiel nun auch nicht.

Letztlich arbeitet es ja auch nur mit dem Hinweis von Heinrich:
PHP:
  $ip = $_SERVER['REMOTE_ADDR'];



Du musst aber anschließend sowieso irgendwie die Info zur IP weiter verarbeiten. :wink:


Grüße,
Cassio
 
Du has natürlich recht. Allerdings betrachte ich Verwaltung der IP-Adressen durch eine Textdatei und das Weiterleiten auf eine weitere Seite schon als Luxus.

Aber zur Zeit ergibt sich ein anderes Problem...

In unserem Netzwerk läuft der IPCop als Proxy für den Internet-Zugang. Wenn ich nun die IP eines Clients abfrage, wird mir immer die IP des IPCop-Rechners angezeigt. Ich brauche aber ja die IP des Clients ^^ :help:
 
Habs schon!

Man muss nur im Firefox eingeben, dass er bei bestimmten IPs nicht über den Proxy gehen soll.
 
Man muss nur im Firefox eingeben, dass er bei bestimmten IPs nicht über den Proxy gehen soll.
entweder das ... oder man sagt dem Proxy das er die Env-Variable "forwarded_for" mit der Client-IP besetzen soll. Dann geht das auch durch den Proxy durch. Wird beim Squid per default immer mit der Client-IP besetzt.

Gruß
Dino
 
Danke für den Hinweis, allerdings kenne ich mit dem IPCop kaum aus.

Kann man das dort einstellen? Falls ja, weißt du wie?
 
Danke für den Hinweis, allerdings kenne ich mit dem IPCop kaum aus.
Kann man das dort einstellen? Falls ja, weißt du wie?
Ich kenn mich nur mit Squid aus. IPCop ist ne Linux Appliance-Distribution.

http://www.ipcop.org/2.0.0/de/admin/html/status-proxy-graphs.html
"2.3.6. Web-Proxy-Diagramme
Diese Seite zeigt das Ergebnis von squid-graph."

Aha ...

Sieh dir mal /etc/squid/squid.conf an. In der Datei sollte sowas wie forwarded_for=... drinstehen. Da gibt es drei Möglichkeiten. Entweder man schaltet das aus, legt eine feste IP-Adresse fest oder läßt die Client-IP eintragen. Das wirst du aber mit Sicherheit im Internet finden wenn du nach "squid.conf forwarded_for" suchst.

Gruß
Dino
 
Danke für die Infos!

Da werde ich morgen mal reinschauen. Allerdings möchte ich da auch nicht zu tief reingehen und was zerschießen. Wie heißt es auch noch so schön? "Never touch a running system!"
 
Hallo zusammen!

Ist IPCop nicht die alte Smoothwall? :hmmmm:
Ich meine schon!

Der Name IPCop kam erst später, durch ein paar Änderungen.
Letztlich baut das System aber immer noch auf die Grundlagen der Smoothwall auf.

Puh... das ist jetzt aber laaaaange her, dass ich damit gearbeitet habe.
Ich bin mir aber auch sehr sicher, dass der Proxy lediglich Squid ist.
Da ich früher aber den WWWOfflE lieber mochte, hatte ich mich mit Squid nicht so richtig befasst. :wink:

Grüße,
Cassio
 
Hallo Ditron,

bist du dir sicher, dass du die "Sicherheit" an die MAC bzw. IP Adresse hängen willst?
Jeder, der sich etwas mit Netzwerktechnik auskennt, kann die MAC und auch die IP Adresse ändern!

gp177
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)