项目更换 Linux 后 $_GET[] 输入参数被默认urlencode了???
原来
服务器:Win2003 + IIS 无问题运行正常
本地:Win10 + apache 和 Win10 + nginx 无问题运行正常
现在
项目近日更换了阿里云CentOS7.2,nginx1.10.2;出现了问题。
具体问题(项目是ThinkPHP3.2.3写的)
页面当中有Form表单用于搜索,搜索用的get数据,点击按钮后形成如下URL
<code>/index.php/User/index.html?key=刘</code>
我在控制器中用I('key')(TP封装的获取输入变量的方式类似$_GET['key'])的方式获取这个关键词,然后进行查询分页;页码链接生成类似如下URL
<code>/index.php/User/index/key/刘/p/2.html</code>
当点击上面页码链接翻页的时候:
在本地和原来的服务器无论怎么获取这个get过来的key 都是 string "刘"
但是在新的服务器上,获取到的关键词是 string "%e5%88%98"
这就导致了我原本的程序所有带这种搜索的都失效了,都不能翻页。
我尝试的解决方案
I('key')获取这个get数据的时候urldecode一下,但是我发现,只能翻一页,再犯,这key就被又一次的urlencode了,翻多少次就被无限的urlencode
由于不能修改url模式,所以这个方式我也放弃了
为什么?
Win+IIS Win+nginx 都没问题,为什么到linux+nginx会产生这种问题,这到底是我的锅,还是linux的锅,还是nginx的锅求指教。
项目恢复正常很急切,请各位大神帮忙解答
回复内容:
原来
服务器:Win2003 + IIS 无问题运行正常
本地:Win10 + apache 和 Win10 + nginx 无问题运行正常
现在
项目近日更换了阿里云CentOS7.2,nginx1.10.2;出现了问题。
具体问题(项目是ThinkPHP3.2.3写的)
页面当中有Form表单用于搜索,搜索用的get数据,点击按钮后形成如下URL
<code>/index.php/User/index.html?key=刘</code>
我在控制器中用I('key')(TP封装的获取输入变量的方式类似$_GET['key'])的方式获取这个关键词,然后进行查询分页;页码链接生成类似如下URL
<code>/index.php/User/index/key/刘/p/2.html</code>
当点击上面页码链接翻页的时候:
在本地和原来的服务器无论怎么获取这个get过来的key 都是 string "刘"
但是在新的服务器上,获取到的关键词是 string "%e5%88%98"
这就导致了我原本的程序所有带这种搜索的都失效了,都不能翻页。
我尝试的解决方案
I('key')获取这个get数据的时候urldecode一下,但是我发现,只能翻一页,再犯,这key就被又一次的urlencode了,翻多少次就被无限的urlencode
由于不能修改url模式,所以这个方式我也放弃了
为什么?
Win+IIS Win+nginx 都没问题,为什么到linux+nginx会产生这种问题,这到底是我的锅,还是linux的锅,还是nginx的锅求指教。
项目恢复正常很急切,请各位大神帮忙解答
TP分页的源码中生成url的时候有进行urlencode操作
<code>private function url($page){ return str_replace(urlencode('[PAGE]'), $page, $this->url); }</code>
解决方法 可以在实例化分页类的时候把搜索参数作为第三个参数传入 具体可查看Page类的构造方法

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Deepseek est un puissant outil de recherche et d'analyse intelligent qui fournit deux méthodes d'accès: la version Web et le site officiel. La version Web est pratique et efficace et peut être utilisée sans installation; Que ce soit des individus ou des utilisateurs d'entreprise, ils peuvent facilement obtenir et analyser des données massives via Deepseek pour améliorer l'efficacité du travail, aider la prise de décision et promouvoir l'innovation.

Il existe de nombreuses façons d'installer Deepseek, notamment: Compiler à partir de Source (pour les développeurs expérimentés) en utilisant des packages précompilés (pour les utilisateurs de Windows) à l'aide de conteneurs Docker (pour le plus pratique, pas besoin de s'inquiéter de la compatibilité), quelle que soit la méthode que vous choisissez, veuillez lire Les documents officiels documentent soigneusement et les préparent pleinement à éviter des problèmes inutiles.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Bitget est un échange de crypto-monnaie qui fournit une variété de services de trading, notamment le trading au comptant, le trading de contrats et les dérivés. Fondée en 2018, l'échange est basée à Singapour et s'engage à fournir aux utilisateurs une plate-forme de trading sûre et fiable. Bitget propose une variété de paires de trading, notamment BTC / USDT, ETH / USDT et XRP / USDT. De plus, l'échange a une réputation de sécurité et de liquidité et offre une variété de fonctionnalités telles que les types de commandes premium, le trading à effet de levier et le support client 24/7.

OUYI OKX, le premier échange mondial d'actifs numériques, a maintenant lancé un package d'installation officiel pour offrir une expérience de trading sûre et pratique. Le package d'installation OKX de OUYI n'a pas besoin d'être accessible via un navigateur. Le processus d'installation est simple et facile à comprendre.
