Heim >Backend-Entwicklung >PHP-Tutorial >Sind die Eingabeparameter $_GET[] nach der Umstellung des Projekts auf Linux standardmäßig urlencodiert? ? ?
Server: Win2003 + IIS läuft normal ohne Probleme
Lokal: Win10 + Apache und Win10 + Nginx läuft normal ohne Probleme
Beim Projekt, das kürzlich Alibaba Cloud CentOS7.2 und nginx1.10.2 ersetzt hat, ist ein Problem aufgetreten.
Auf der Seite gibt es ein Formular zum Suchen und zum Abrufen von Daten für die Suche. Nach dem Klicken auf die Schaltfläche wird die folgende URL erstellt
<code>/index.php/User/index.html?key=刘</code>
Ich verwende I('key') (TP-gekapselte Methode zum Abrufen von Eingabevariablen ähnlich wie $_GET['key']) im Controller, um dieses Schlüsselwort abzurufen, und dann ist die Generierung von Seitennummernlinks ähnlich an die folgende URL
<code>/index.php/User/index/key/刘/p/2.html</code>
Wenn Sie oben auf den Seitenzahl-Link klicken, um umzublättern:
Egal, wie Sie den Schlüssel lokal oder vom ursprünglichen Server erhalten, es ist die Zeichenfolge „Liu“
Aber auf dem neuen Server ist das erhaltene Schlüsselwort die Zeichenfolge „%e5%88%98“
Dies führte dazu, dass alle meine ursprünglichen Programme mit dieser Art der Suche ungültig wurden und keine Seiten mehr umblättern konnten.
Ich ('Schlüssel') urldekodiert die Abrufdaten, wenn ich sie erhalte, aber ich habe festgestellt, dass ich nur eine Seite umblättern kann. Wenn ich es noch einmal mache, wird der Schlüssel erneut urlkodiert, und zwar unendlich dekodiert, egal wie oft der URL-Code aufgerufen wird
Da das URL-Muster nicht geändert werden kann, habe ich diese Methode aufgegeben
Win+IIS Win+nginx ist kein Problem. Warum tritt dieses Problem bei der Verwendung von Linux+Nginx auf? Liegt das an mir, Linux oder Nginx?
Wir sind sehr darauf bedacht, das Projekt wieder normal zu machen, bitte helfen Sie uns
Server: Win2003 + IIS läuft normal ohne Probleme
Lokal: Win10 + Apache und Win10 + Nginx läuft normal ohne Probleme
Beim Projekt, das kürzlich Alibaba Cloud CentOS7.2 und nginx1.10.2 ersetzt hat, ist ein Problem aufgetreten.
Auf der Seite gibt es ein Formular zum Suchen und zum Abrufen von Daten für die Suche. Nach dem Klicken auf die Schaltfläche wird die folgende URL erstellt
<code>/index.php/User/index.html?key=刘</code>
Ich verwende I('key') (TP-gekapselte Methode zum Abrufen von Eingabevariablen ähnlich wie $_GET['key']) im Controller, um dieses Schlüsselwort abzurufen, und dann ist die Generierung von Seitennummernlinks ähnlich an die folgende URL
<code>/index.php/User/index/key/刘/p/2.html</code>
Wenn Sie oben auf den Seitenzahl-Link klicken, um umzublättern:
Egal, wie Sie den Schlüssel lokal oder vom ursprünglichen Server erhalten, es ist die Zeichenfolge „Liu“
Aber auf dem neuen Server ist das erhaltene Schlüsselwort die Zeichenfolge „%e5%88%98“
Dies führte dazu, dass alle meine ursprünglichen Programme mit dieser Art der Suche ungültig wurden und keine Seiten mehr umblättern konnten.
Ich ('Schlüssel') urldekodiert die Abrufdaten, wenn ich sie erhalte, aber ich habe festgestellt, dass ich nur eine Seite umblättern kann. Wenn ich es noch einmal mache, wird der Schlüssel erneut urlkodiert, und zwar unendlich dekodiert, egal wie oft der URL-Code aufgerufen wird
Da das URL-Muster nicht geändert werden kann, habe ich diese Methode aufgegeben
Win+IIS Win+nginx ist kein Problem. Warum tritt dieses Problem bei der Verwendung von Linux+Nginx auf? Liegt das an mir, Linux oder Nginx?
Wir sind sehr darauf bedacht, das Projekt wieder normal zu machen, bitte helfen Sie uns
Beim Generieren der URL im Quellcode von TP-Paging wird der URL-Code-Vorgang ausgeführt
<code>private function url($page){ return str_replace(urlencode('[PAGE]'), $page, $this->url); }</code>
Lösung: Sie können den Suchparameter als dritten Parameter übergeben, wenn Sie die Paging-Klasse instanziieren. Weitere Informationen finden Sie in der Konstruktionsmethode der Page-Klasse