Wie bekomme ich die IP-Adresse des Clients in CakePHP? Es wäre $_SERVER['REMOTE_ADDR'] in reinem PHP.
Ich dachte, es ist wie alles $_SERVER vars und kann über aufgerufen werden env('VAR_NAME')oder getClientIP() in CakePHP, aber es gibt nicht die gleichen Ergebnisse zurück.
RequestHandler::getClientIp() ist veraltet; Die Client-IP bekommst du aus der CakeRequest Objekt:
$this->request->clientIp();
Vielen Dank. Funktioniert super. Ich habe gehört, dass RequestHandler langsamer sein kann als die Verwendung von reinem PHP $_SERVER[‘REMOTE_ADDR’]. Ist das wahr?
– Ryan
26. September 2011 um 9:31 Uhr
Nun, das Hinzufügen von Komplexitätsschichten verlangsamt immer die Verarbeitung, aber das tut mehr als nur: return $_SERVER['REMOTE_ADDR'];.
– reich97
26. September 2011 um 16:08 Uhr
getClientIp(false) kann in bestimmten Situationen ratsam sein, manchmal (wie bei Heroku) ist die IP in HTTP_X_FORWARDED_FOR.
– Brad Koch
4. August 2012 um 19:53 Uhr
Es ist veraltet, verwenden $this->request->clientIp() stattdessen von Ihrem Controller.
– Mrdaliri
8. August 2012 um 11:17 Uhr
@Brad Danke für den Tipp, du hast mir wahrscheinlich viel Schmerz und Elend erspart.
Wenn Sie sich in einem Modell befinden, tun Sie es $ServerRequest = new \Cake\Http\ServerRequest(); und dann $entity->remote_addr = $ServerRequest->clientIp();
– ᴍᴇʜᴏᴠ
29. Oktober 2019 um 8:12 Uhr
Wenn Sie die IP-Adresse innerhalb eines Modells abrufen müssen, $this->request->getClientIp() wird nicht funktionieren, werfen:
Fehler: Aufruf einer Member-Funktion clientIp() für ein Nicht-Objekt