백엔드 개발 PHP 튜토리얼 php mysql 字符转义有关问题

php mysql 字符转义有关问题

Jun 13, 2016 pm 01:28 PM
name post select

php mysql 字符转义问题

后台处理
$name=addslashes($_POST['name']);//转义单引号

insert的时候,是不是带着转义符号一起存到数据库里?还是去掉转义符号存进去?

如果是带着转义符号存入到数据库,这就出现了一个小问题

如果我要查义name是不是重复,就需要对$name进行比较

依然进行转义 $name=addslashes($_POST['name']);

SELECT count(*) AS num FROM talbe WHERE name = $name

num显示的是0,也就是说找不到相同的,

打印sql语句为 SELECT count(*) AS num FROM talbe WHERE name = 'this/'s a apple'

num的值为零,我打开数据库发现,name这个字段的值是 this/'s a apple,这样肯定不能找到

如果将$name,再转义一次才能找到,$name的值就是 this///'s a apple 才能找到纪录

也就是说用两次addslashes函数

请问大家是如何处理这样的问题?如果要用两次不是很麻烦吗?


------解决方案--------------------
再就是如果Php.ini开启了magic_quotes_gpc,那么cookie啊,post,get啊,都会默认就addslashes过了,比如用户上传的是li'lei,那么你$_POST['name']得到就是li\'lei, 这样直接拼接到sql里:

select * from table where name='li\'lei'就行了,不需要addslashes了。
如果你给它addslashes了,那就变态了,因为\也会影响mysql解析命令,所以addslashes也会转移它,结果就真的变态了:

addslashes("li\'lei");将生成li\\\'lei, 拼成sql:

select * from table where name='li\\\'lei',入库后实际就是li\'lei,多了一个\。


再另外,stripslashes很少使用,因为一般只有php.ini默认开启了magic_quotes_gpc(get,post,cookie的意思)的情况下,如果我们希望使用到用户真正提交的值,比如li'lei,那么需要做stripslashes($_POST['name']); 而这里的name是被自动addslahes过的li\'lei, strip后就是li'lei了。
如果不strip,那么输出到页面上,用户看到的会是li\'lei。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

페이지로 이동하기 위한 매개변수가 포함된 PHP의 POST 메소드에 대한 간략한 분석 페이지로 이동하기 위한 매개변수가 포함된 PHP의 POST 메소드에 대한 간략한 분석 Mar 23, 2023 am 09:15 AM

페이지로 이동하기 위한 매개변수가 포함된 PHP의 POST 메소드에 대한 간략한 분석

Select Channels의 비동기 처리 방법 golang을 이용한 Go 동시 프로그래밍 Select Channels의 비동기 처리 방법 golang을 이용한 Go 동시 프로그래밍 Sep 28, 2023 pm 05:27 PM

Select Channels의 비동기 처리 방법 golang을 이용한 Go 동시 프로그래밍

게시물이 PHP로 제출되었는지 확인하는 방법 게시물이 PHP로 제출되었는지 확인하는 방법 Mar 21, 2023 pm 07:12 PM

게시물이 PHP로 제출되었는지 확인하는 방법

Python 요청 게시물을 사용하는 방법 Python 요청 게시물을 사용하는 방법 Apr 29, 2023 pm 04:52 PM

Python 요청 게시물을 사용하는 방법

jquery에서 선택 요소를 숨기는 방법 jquery에서 선택 요소를 숨기는 방법 Aug 15, 2023 pm 01:56 PM

jquery에서 선택 요소를 숨기는 방법

Java는 어떻게 http 요청을 시작하고 게시물을 호출하고 인터페이스를 얻습니까? Java는 어떻게 http 요청을 시작하고 게시물을 호출하고 인터페이스를 얻습니까? May 16, 2023 pm 07:53 PM

Java는 어떻게 http 요청을 시작하고 게시물을 호출하고 인터페이스를 얻습니까?

NGINX 리버스 프록시가 HTML 페이지의 POST 요청에 대해 405를 반환하는 문제를 해결하는 방법 NGINX 리버스 프록시가 HTML 페이지의 POST 요청에 대해 405를 반환하는 문제를 해결하는 방법 May 22, 2023 pm 07:49 PM

NGINX 리버스 프록시가 HTML 페이지의 POST 요청에 대해 405를 반환하는 문제를 해결하는 방법

PHP 코드 예: POST를 사용하여 매개변수를 전달하고 페이지 점프를 구현하는 방법 PHP 코드 예: POST를 사용하여 매개변수를 전달하고 페이지 점프를 구현하는 방법 Mar 07, 2024 pm 01:45 PM

PHP 코드 예: POST를 사용하여 매개변수를 전달하고 페이지 점프를 구현하는 방법

See all articles