Inhaltsverzeichnis
您可能感兴趣的文章
Heim php教程 php手册 url传递中文字符,特殊危险字符的解决方案(仅供参考)urldecode、base64_encode

url传递中文字符,特殊危险字符的解决方案(仅供参考)urldecode、base64_encode

Jun 21, 2016 am 08:46 AM
array base encode str url

web开发的过程中,当我们需要在url中传递中文字符或是其它的html等特殊字符时,似乎总会碰到各种各样的小问题,因为不同的浏览器对他们的编码又不一样。对于中文,一般的做法是:

把这些文本字符串传给url之前,先进行urlencode($text)一下。

但是对于一些很“危险”的字符,比如说html字符,甚至是SQL注入相关的字符,如果很明显的传给系统,出于安全考虑,系统一般都会把它们过滤掉的。

那么,如果我们需要保留这些危险字符,不被过滤,该这么办呢?

我想到的办法是先给它们 base64_encode($text) 编码,到服务端时,又给它们 base64_decode($text) 解码,

貌似很完美,但是在使用的过程中又遇到一个问题,base64_encode 编码后的字符串中含有 "/", "+", "=" 等字符,

这些字符在url编码中又是特殊字符,比如 "+" ,它就表示 “空格”,但是不同的浏览器对“空格”的编码又不一样,有的是用“+”表示,有的是用“20%”表示,也就是说,让这些base64_encode编码后的字符串在url中传递,用不同的浏览器去浏览时,服务端得到值不一样。

于是乎,想到了一个折中办法,先将这些base64编码后的特殊字符替换掉,到服务端后,又替换回来:

function base_encode($str) {
        $src  = array("/","+","=");
        $dist = array("_a","_b","_c");
        $old  = base64_encode($str);
        $new  = str_replace($src,$dist,$old);
        return $new;
}
 
function base_decode($str) {
        $src = array("_a","_b","_c");
        $dist  = array("/","+","=");
        $old  = str_replace($src,$dist,$str);
        $new = base64_decode($old);
        return $new;
}
Nach dem Login kopieren

下面是在浏览器中得到的效果

xOO6w6Osuf65_aiy_atL_b00Ke5_b8jnus6ho6GjoaM_c

呵呵,看看效果如何。。。

您可能感兴趣的文章

  • PHP解决网址URL编码问题的函数urlencode()、urldecode()、rawurlencode()、rawurldecode()
  • js限制只能输入英文字母和数字,不能输入中文和其他特殊字符的办法
  • php打造属于自己的MVC框架简单案例,提供思路,仅供参考
  • AJAX中POST或GET传递中文字符乱码的解决办法
  • mysql命令更改表结构:添加、删除、修改字段、调整字段顺序
  • 在php中分别使用curl的post提交数据的方法和get获取网页数据的方法总结
  • js 修改url中某个指定的参数的值
  • 复选框(checkbox)和单选框(radio)与文字水平垂直居中对齐的解决方法



Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Einführung in die PHP-Funktion – get_headers(): Ruft die Antwortheaderinformationen der URL ab Einführung in die PHP-Funktion – get_headers(): Ruft die Antwortheaderinformationen der URL ab Jul 25, 2023 am 09:05 AM

Einführung in die PHP-Funktion – get_headers(): Überblick über das Abrufen der Antwort-Header-Informationen der URL: In der PHP-Entwicklung müssen wir häufig die Antwort-Header-Informationen einer Webseite oder einer Remote-Ressource abrufen. Die PHP-Funktion get_headers() kann problemlos die Antwortheaderinformationen der Ziel-URL abrufen und in Form eines Arrays zurückgeben. In diesem Artikel wird die Verwendung der Funktion get_headers() vorgestellt und einige zugehörige Codebeispiele bereitgestellt. Verwendung der Funktion get_headers(): get_header

Basis-DEX-Wasserhahn: Aerodrome VS Curve Basis-DEX-Wasserhahn: Aerodrome VS Curve Mar 26, 2024 pm 04:31 PM

Das Velodrome-Modell ist von veCRV inspiriert und zielt darauf ab, eine überlegene Konsistenz zwischen den drei Hauptteilnehmern von DEX zu erreichen, darunter Liquiditätsanbieter (LPs), Token-Inhaber und Projekte, die Liquidität benötigen. Allerdings verstehen viele Teilnehmer im DeFi-Bereich die zugrunde liegenden Gründe immer noch nicht vollständig. Wenn Sie diesen Artikel ausführlich lesen, werden Sie in der Lage sein, aus diesem Dilemma herauszukommen und ihm auf den Grund zu gehen. Heute werden wir über Velodrome/Aerodrome sprechen, eine echte Erfolgsgeschichte im DeFi-Bereich. In diesem Artikel werden die beiden Modelle verglichen und erläutert, wie Velodrome das veCRV-Modell verbessert und welche erheblichen Auswirkungen diese kleinen Unterschiede haben. Lassen Sie mich zunächst Folgendes sagen

Wie erhalten Sie in wenigen Schritten Ihre Steam-ID? Wie erhalten Sie in wenigen Schritten Ihre Steam-ID? May 08, 2023 pm 11:43 PM

Heutzutage haben viele Windows-Benutzer, die Spiele lieben, den Steam-Client aufgerufen und können alle guten Spiele suchen, herunterladen und spielen. Allerdings haben die Profile vieler Benutzer möglicherweise genau denselben Namen, was es schwierig macht, ein Profil zu finden oder sogar ein Steam-Profil mit anderen Konten von Drittanbietern zu verknüpfen oder Steam-Foren beizutreten, um Inhalte zu teilen. Dem Profil wird eine eindeutige 17-stellige ID zugewiesen, die gleich bleibt und vom Benutzer zu keinem Zeitpunkt geändert werden kann, der Benutzername oder die benutzerdefinierte URL hingegen schon. Unabhängig davon kennen einige Benutzer ihr Steamid nicht und es ist wichtig, dies zu wissen. Wenn Sie nicht wissen, wie Sie das Steamid Ihres Kontos finden, geraten Sie nicht in Panik. In diesem Artikel

Warum NameResolutionError(self.host, self, e) von e und wie man es löst Warum NameResolutionError(self.host, self, e) von e und wie man es löst Mar 01, 2024 pm 01:20 PM

Der Grund für den Fehler ist NameResolutionError(self.host,self,e)frome, ein Ausnahmetyp in der urllib3-Bibliothek. Der Grund für diesen Fehler ist, dass die DNS-Auflösung fehlgeschlagen ist, d. h. der Hostname oder die IP-Adresse Der Lösungsversuch konnte nicht gefunden werden. Dies kann daran liegen, dass die eingegebene URL-Adresse falsch ist oder der DNS-Server vorübergehend nicht verfügbar ist. So beheben Sie diesen Fehler Es gibt möglicherweise mehrere Möglichkeiten, diesen Fehler zu beheben: Überprüfen Sie, ob die eingegebene URL-Adresse korrekt ist und stellen Sie sicher, dass sie zugänglich ist. Stellen Sie sicher, dass der DNS-Server verfügbar ist. Sie können es mit dem Befehl „ping“ in der Befehlszeile versuchen Um zu testen, ob der DNS-Server verfügbar ist, versuchen Sie, über die IP-Adresse statt über den Hostnamen auf die Website zuzugreifen, wenn Sie sich hinter einem Proxy befinden

So verwenden Sie die URL-Kodierung und -Dekodierung in Java So verwenden Sie die URL-Kodierung und -Dekodierung in Java May 08, 2023 pm 05:46 PM

Verwenden Sie die URL zum Kodieren und Dekodieren der Klasse java.net.URLDecoder.decode(url, decoding format) decoder.decoding-Methode zum Kodieren und Dekodieren. In eine gewöhnliche Zeichenfolge konvertieren, wandelt URLEncoder.decode (URL, Codierungsformat) die gewöhnliche Zeichenfolge in eine Zeichenfolge im angegebenen Format um packagecom.zixue.springbootmybatis.test;importjava.io.UnsupportedEncodingException;importjava.net.URLDecoder;importjava.net. URLEncoder

Verwenden Sie reguläre Ausdrücke in Golang, um zu überprüfen, ob die Eingabe eine zulässige Base64-Zeichenfolge ist Verwenden Sie reguläre Ausdrücke in Golang, um zu überprüfen, ob die Eingabe eine zulässige Base64-Zeichenfolge ist Jun 24, 2023 am 10:01 AM

Bei der Golang-Programmierung ist es eine relativ häufige Anforderung, reguläre Ausdrücke zu verwenden, um zu überprüfen, ob die Eingabe eine zulässige Base64-Zeichenfolge ist. Für Entwickler können reguläre Ausdrücke verwendet werden, um schnell und genau zu überprüfen, ob Benutzereingaben korrekt sind. In diesem Artikel wird erläutert, wie Sie mithilfe regulärer Ausdrücke in Golang überprüfen, ob es sich bei der Eingabe um eine zulässige Base64-Zeichenfolge handelt. Beginnend mit der grundlegenden Syntax In Golang erfordert die Verwendung regulärer Ausdrücke die Verwendung der Bibliothek „regexp“. Diese Bibliothek bietet „Kompilieren“ und „

So kodieren und dekodieren Sie mit Base64-Funktionen in Java So kodieren und dekodieren Sie mit Base64-Funktionen in Java Jun 26, 2023 pm 02:24 PM

Bei der Java-Programmierung ist es häufig erforderlich, Binärdaten zur Übertragung in ein Textformat zu konvertieren, und die Base64-Codierung ist eine häufig verwendete Konvertierungsmethode. Base64 wandelt drei Byte Daten in vier Byte Textdaten um. Die Textdaten bestehen aus nur druckbaren Zeichen und können daher in Protokollen wie E-Mails und HTTP-Anfragenachrichten übertragen werden. Java bietet Base64-Codierungs- und Decodierungs-APIs, sodass wir Daten problemlos konvertieren können. In diesem Artikel wird die Verwendung in Java vorgestellt

Was ist der Unterschied zwischen HTML und URL? Was ist der Unterschied zwischen HTML und URL? Mar 06, 2024 pm 03:06 PM

Unterschiede: 1. Unterschiedliche Definitionen, URL ist ein einheitlicher Ressourcen-Locator und HTML ist eine Hypertext-Markup-Sprache. 2. Es kann viele URLs in einer HTML-Seite geben, aber nur eine HTML-Seite kann in einer URL vorhanden sein eine Webseite, und URL bezieht sich auf die Website-Adresse.

See all articles