目录
您可能感兴趣的文章
首页 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;
}
登录后复制

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

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)与文字水平垂直居中对齐的解决方法



本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP函数介绍—get_headers(): 获取URL的响应头信息 PHP函数介绍—get_headers(): 获取URL的响应头信息 Jul 25, 2023 am 09:05 AM

PHP函数介绍—get_headers():获取URL的响应头信息概述:在PHP开发中,我们经常需要获取网页或远程资源的响应头信息。PHP函数get_headers()能够方便地获取目标URL的响应头信息,并以数组形式返回。本文将介绍get_headers()函数的用法,以及提供一些相关的代码示例。get_headers()函数的用法:get_header

Base DEX龙头 :Aerodrome VS Curve Base DEX龙头 :Aerodrome VS Curve Mar 26, 2024 pm 04:31 PM

Velodrome模型是受veCRV启发的,旨在实现DEX三大关键参与者之间更为优越的一致性,包括流动性提供者(LPs)、代币持有者以及需要流动性的项目。然而,许多DeFi领域的参与者仍未完全理解其内在原因。通过深入阅读本文,您将能够摆脱这一困境,深入了解其中的奥秘。今天我们将探讨Velodrome/Aerodrome,在DeFi领域中属于一个真正成功的案例。本文将对这两种模式进行比较,并解释Velodrome是如何在veCRV模型上进行改进的,以及这些微小差异带来了哪些重大影响。首先,让我声明

怎样透过几个步骤获取您的 Steam ID? 怎样透过几个步骤获取您的 Steam ID? May 08, 2023 pm 11:43 PM

现在很多热爱游戏的windows用户都进入了Steam客户端,可以搜索、下载和玩任何好游戏。但是,许多用户的个人资料可能具有完全相同的名称,这使得查找个人资料或什至将Steam个人资料链接到其他第三方帐户或加入Steam论坛以共享内容变得困难。为配置文件分配了一个唯一的17位id,它保持不变,用户无法随时更改,而用户名或自定义URL可以更改。无论如何,一些用户并不知道他们的Steamid,这对于了解这一点非常重要。如果您也不知道如何找到您帐户的Steamid,请不要惊慌。在这篇文

为什么NameResolutionError(self.host, self, e) from e,怎么解决 为什么NameResolutionError(self.host, self, e) from e,怎么解决 Mar 01, 2024 pm 01:20 PM

报错的原因NameResolutionError(self.host,self,e)frome是由urllib3库中的异常类型,这个错误的原因是DNS解析失败,也就是说,试图解析的主机名或IP地址无法找到。这可能是由于输入的URL地址不正确,或者DNS服务器暂时不可用导致的。如何解决解决此错误的方法可能有以下几种:检查输入的URL地址是否正确,确保它是可访问的确保DNS服务器可用,您可以尝试在命令行中使用"ping"命令来测试DNS服务器是否可用尝试使用IP地址而不是主机名来访问网站如果是在代理

如何在Java中使用URL编码和解码 如何在Java中使用URL编码和解码 May 08, 2023 pm 05:46 PM

使用url进行编码和解码编码和解码的类java.net.URLDecoder.decode(url,解码格式)解码器.解码方法。转化成普通字符串,URLEncoder.decode(url,编码格式)将普通字符串变成指定格式的字符串packagecom.zixue.springbootmybatis.test;importjava.io.UnsupportedEncodingException;importjava.net.URLDecoder;importjava.net.URLEncoder

golang中使用正则表达式验证输入是否为合法的base64字符串 golang中使用正则表达式验证输入是否为合法的base64字符串 Jun 24, 2023 am 10:01 AM

在Golang编程中,使用正则表达式验证输入是否为合法的base64字符串是一个相对常见的需求。对于开发者而言,通过使用正则表达式可以快速而准确地验证用户输入是否正确。本文将介绍如何使用Golang中的正则表达式来验证输入是否为合法的base64字符串。从基本语法开始在Golang中,使用正则表达式需要使用"regexp"库。该库提供了"Compile"和"

如何使用Java中的Base64函数进行编码和解码 如何使用Java中的Base64函数进行编码和解码 Jun 26, 2023 pm 02:24 PM

在java编程中,经常需要将二进制数据转换为文本格式进行传输,而Base64编码正是一种常用的转换方式。Base64将三个字节的数据转换成四个字节的文本数据,文本数据由64个字符组成,它只包含可打印字符,因此可以在电子邮件,HTTP请求报文等协议中传输。Java提供了Base64编码和解码的API,我们可以很方便地进行数据的转换。本文将介绍Java中如何使用

html和url的区别是什么 html和url的区别是什么 Mar 06, 2024 pm 03:06 PM

区别:1、定义不同,url是是统一资源定位符,而html是超文本标记语言;2、一个html中可以有很多个url,而一个url中只能存在一个html页面;3、html指的是网页,而url指的是网站地址。

See all articles