2013-03-15 8 views
-1

텍스트 상자에서 텍스트를 읽고 데이터베이스에 저장하려고합니다. 내 데이터베이스의 보안이 최우선 순위이며 특수 문자는 초입니다. 현재 사용자는 기본 특수 문자 (! @ # ... 요법)를 사용할 수 있지만 (<>) 또는 (☺☻ ♥)보다 크거나 작지는 않습니다.MySQL에서 '<' or '>'값을 갖지 못했습니다.

이것은 코드가 지금과 같은 모양입니다.

$temp = $tableName.".".$fieldName." = '".mysql_real_escape_string(strip_tags($fieldValue))."'"; 

나는 내가 내 데이터베이스에 공백을받을 < 또는 >에 넣어 때. 및 또는 에 입력하면 ?이 입력으로 수신됩니다.

이것에 대한 어떤 입력도 좋을 것입니다. 고맙습니다.

+0

strip_tags()는 HTML의 유효성을 실제로 검사하지 않기 때문에 부분 또는 부러진 태그로 인해 예상보다 많은 텍스트/데이터가 제거 될 수 있습니다. [http://php.net/strip_tags](http://php.net/strip_tags) – zgr024

+0

에서 인용 함 mysql_ * 함수는 더 이상 사용되지 않습니다. 당신은 mysqli 또는 PDO를 사용해야합니다 – Cfreak

답변

1

에서 HTML과 PHP 태그를 제거합니다() 함수를 관련 '>'난에 공백을 받게 내 데이터 베이스.

strip_tags 방법은

을 무엇의

내가 '☺'또는 '☻'에 넣어 때 내가받을 '?' 입력으로

그건 encoding입니다. 내 데이터베이스의

보안에 관해서는

는 첫 번째 우선 순위에있다

난 당신이 준비된 문 (mysqli 또는 PDO)에 코드를 마이그레이션하는 것이 좋습니다.

+0

글쎄, 나는 mysqli로 옮기고 있지만 현재로서는이 문제를 해결할 수 없다. –

3

이것은 데이터베이스에 관련이없는이,이 strip_tags에 내가 '<'에 넣어 또는 문자열

+1

첫 번째 부분은 맞습니다. 테이블에있는 문자 집합이 실제로 문자 – Cfreak

+0

을 지원하지 않기 때문에 다른 문자가'? '로 표시 될 수 있습니다. m_r_e_s는 DB에 대한 실시간 연결이 필요합니다. db 설정은 문자열을 지울 수 있습니다. –

0

스트립 태그 대신 htmlentities 또는 htmlspecialchars을 사용하십시오. Strip 태그는 문자열에서 HTML 태그를 제거합니다. 앞서 언급 한 두 가지 기능은 HTML 태그를 html 엔티티 (예 : &lt;)의 텍스트 표현으로 변환합니다. 즉, 텍스트로 페이지에 출력 할 수 있고 브라우저에서 HTML로 구문 분석 할 수 없음을 의미합니다.

+0

이제 코드가 = ' "이라고 읽습니다.mysql_real_escape_string (htmlentities ($ fieldValue)). " '"; '<' or '>'이라고 입력하면 제대로 작동하지만 '☺'(alt + 1)을 입력하면 â이 표시됩니까? º –

0

도움을 주셔서 감사합니다. 나는 그 문제를 발견했다. 내가 편집하고있는 코드는 데이터베이스상의 이유로 '&'에서 % HEX로 특수 문자 코드를 변경하고있었습니다.

관련 문제