목차
您可能感兴趣的文章
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 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

e의 NameResolutionError(self.host, self, e) 이유와 해결 방법 e의 NameResolutionError(self.host, self, e) 이유와 해결 방법 Mar 01, 2024 pm 01:20 PM

오류의 원인은 urllib3 라이브러리의 예외 유형인 NameResolutionError(self.host,self,e)frome입니다. 이 오류의 원인은 DNS 확인에 실패했기 때문입니다. 해결을 찾을 수 없습니다. 이는 입력한 URL 주소가 정확하지 않거나 DNS 서버를 일시적으로 사용할 수 없기 때문에 발생할 수 있습니다. 이 오류를 해결하는 방법 이 오류를 해결하는 방법은 여러 가지가 있습니다. 입력한 URL 주소가 올바른지 확인하고 액세스할 수 있는지 확인하십시오. DNS 서버를 사용할 수 있는지 확인하십시오. 명령줄에서 "ping" 명령을 사용해 볼 수 있습니다. DNS 서버를 사용할 수 있는지 테스트하려면 프록시 뒤에 있는 경우 호스트 이름 대신 IP 주소를 사용하여 웹사이트에 액세스해 보세요.

Jul 25, 2023 am 09:05 AM

PHP 기능 소개 - get_headers(): URL의 응답 헤더 정보 얻기 개요: PHP 개발에서는 웹 페이지나 원격 리소스의 응답 헤더 정보를 얻어야 하는 경우가 많습니다. PHP 함수 get_headers()를 사용하면 대상 URL의 응답 헤더 정보를 쉽게 얻고 이를 배열 형식으로 반환할 수 있습니다. 이 기사에서는 get_headers() 함수의 사용법을 소개하고 관련 코드 예제를 제공합니다. get_headers() 함수 사용법: get_header

기본 DEX 수도꼭지: 비행장 VS 곡선 기본 DEX 수도꼭지: 비행장 VS 곡선 Mar 26, 2024 pm 04:31 PM

Velodrome 모델은 veCRV에서 영감을 얻었으며 유동성 공급자(LP), 토큰 보유자 및 유동성이 필요한 프로젝트를 포함하여 DEX의 세 가지 주요 참여자 간에 탁월한 일관성을 달성하는 것을 목표로 합니다. 그러나 DeFi 공간의 많은 플레이어는 여전히 근본적인 이유를 완전히 이해하지 못하고 있습니다. 이 글을 깊이 있게 읽으면, 이 딜레마에서 벗어나 그 근본 원인을 파악할 수 있을 것입니다. 오늘은 DeFi 분야의 실제 성공 사례인 Velodrome/Aerodrome에 대해 논의하겠습니다. 이 기사에서는 두 모델을 비교하고 Velodrome이 veCRV 모델을 어떻게 개선하고 이러한 작은 차이가 어떤 중요한 영향을 미치는지 설명합니다. 먼저 말씀드리자면

HTML과 URL의 차이점은 무엇입니까 HTML과 URL의 차이점은 무엇입니까 Mar 06, 2024 pm 03:06 PM

차이점: 1. 정의가 다릅니다. url은 균일한 리소스 위치 지정자이고 html은 하이퍼텍스트 마크업 언어입니다. 2. html에는 여러 개의 URL이 있을 수 있지만 하나의 url에는 단 하나의 html 페이지만 존재할 수 있습니다. 웹 페이지이고 url은 웹 사이트 주소를 나타냅니다.

몇 단계만으로 Steam ID를 얻는 방법은 무엇입니까? 몇 단계만으로 Steam ID를 얻는 방법은 무엇입니까? May 08, 2023 pm 11:43 PM

요즘에는 게임을 좋아하는 많은 Windows 사용자들이 Steam 클라이언트에 접속하여 좋은 게임을 검색하고 다운로드하여 플레이할 수 있습니다. 그러나 많은 사용자의 프로필이 정확히 동일한 이름을 가질 수 있으므로 프로필을 찾거나 Steam 프로필을 다른 제3자 계정에 연결하거나 Steam 포럼에 가입하여 콘텐츠를 공유하기가 어렵습니다. 프로필에는 고유한 17자리 ID가 할당되며, 이는 동일하게 유지되며 사용자가 언제든지 변경할 수 없는 반면, 사용자 이름이나 맞춤 URL은 변경할 수 있습니다. 그럼에도 불구하고 일부 사용자는 자신의 Steamid를 모르므로 이를 아는 것이 중요합니다. 계정의 Steamid를 찾는 방법을 모르더라도 당황하지 마세요. 이 기사에서는

golang에서 정규식을 사용하여 입력이 합법적인 base64 문자열인지 확인하세요. golang에서 정규식을 사용하여 입력이 합법적인 base64 문자열인지 확인하세요. Jun 24, 2023 am 10:01 AM

Golang 프로그래밍에서는 입력이 합법적인 base64 문자열인지 확인하기 위해 정규식을 사용하는 것이 상대적으로 일반적인 요구 사항입니다. 개발자의 경우 정규식을 사용하여 사용자 입력이 올바른지 빠르고 정확하게 확인할 수 있습니다. 이 기사에서는 Golang에서 정규식을 사용하여 입력이 합법적인 base64 문자열인지 확인하는 방법을 소개합니다. 기본 구문으로 시작하기 Golang에서 정규식을 사용하려면 "regexp" 라이브러리를 사용해야 합니다. 이 라이브러리는 "컴파일" 및 "

Java에서 Base64 함수를 사용하여 인코딩 및 디코딩하는 방법 Java에서 Base64 함수를 사용하여 인코딩 및 디코딩하는 방법 Jun 26, 2023 pm 02:24 PM

Java 프로그래밍에서는 전송을 위해 바이너리 데이터를 텍스트 형식으로 변환해야 하는 경우가 많으며 Base64 인코딩이 일반적으로 사용되는 변환 방법입니다. Base64는 3바이트의 데이터를 4바이트의 텍스트 데이터로 변환합니다. 텍스트 데이터는 인쇄 가능한 문자만 포함하므로 이메일 및 HTTP 요청 메시지와 같은 프로토콜로 전송할 수 있습니다. Java는 Base64 인코딩 및 디코딩 API를 제공하므로 데이터를 쉽게 변환할 수 있습니다. 이 기사에서는 Java에서의 사용 방법을 소개합니다.

Java에서 URL 인코딩 및 디코딩을 사용하는 방법 Java에서 URL 인코딩 및 디코딩을 사용하는 방법 May 08, 2023 pm 05:46 PM

url을 사용하여 java.net.URLDecoder.decode(url, 디코딩 형식) 클래스 decoder.decoding 인코딩 및 디코딩 방법을 인코딩 및 디코딩합니다. 일반 문자열로 변환하는 URLEncoder.decode(url, 인코딩 형식)는 일반 문자열을 지정된 형식의 문자열로 변환합니다. packagecom.zixue.springbootmybatis.test;importjava.io.UnsupportedEncodingException;importjava.net.URLDecoder;importjava.net. URL인코더

See all articles