2009-04-04 3 views
6

내 웹 사이트에 텍스트 상자가 있으며 사용자가 데이터베이스에 입력 한 내용을 저장하고 나중에 검색해야합니다.PHP - MySQL 데이터베이스에 텍스트 저장

PHP를 데이터베이스 필드 ('텍스트'필드)에 저장하려면 어떤 프로세스를 사용해야합니까? PHP의 html_encode 같은 것을 사용해야합니까?

고마워요.

편집 : 탭 및 여러 공백 등 올바른 형식으로 저장해야합니다.

답변

4

데이터 저장소에 데이터를 쓸 때 html로 인코딩해서는 안됩니다. 다른 방법으로 데이터를 사용할 수도 있습니다 (예 : 이메일, PDF 문서 등). Assaf 이미 말했듯이 입력을 이스케이프 처리하거나 매개 변수화 된 삽입 쿼리를 사용하여 SQL 주입을 피하는 것이 필수적입니다.

이어야합니다. 그러나 HTML 페이지에 표시 할 때 데이터를 html로 인코딩해야합니다. 위험한 HTML이나 Javascript 코드는 데이터에있는 HTML 태그가 브라우저에서 HTML 태그로 인식되지 않으므로 쓸모가 없습니다.

사용자가 HTML 태그가있는 데이터를 게시 할 수있게되면 프로세스가 좀 더 복잡해집니다. 그런 다음 출력 인코딩을 건너 뛰어 입력 필요성에 따라 임의로 복잡해질 수있는 입력 소실 성을 허용해야합니다 (예 : 허용 된 태그).

3

에는이 포함되어 있으므로이를 mysql에 저장하지 마십시오.

SQL 주입을 방지하려면 매개 변수가있는 삽입 명령을 사용해야합니다.

+0

좋은 아이디어 .. 대단히 감사합니다. –

3

다음은 작동합니다 : 당신의 열이 UTF8이

if (get_magic_quotes_gpc()) { 
    $content = stripslashes($content); 
} 
$content = mysql_real_escape_string($content); 

경우 특수 문자 문제가 안된다. 내용을 올바르게 포맷하면 표준 삽입 메소드를 사용하여 mysql에 피드를 제공 할 수있다.

5

사용 mysql_real_escape_string() :

$safetext = mysql_real_escape_string($_POST['text']); 
$query = "INSERT INTO my_table (`my_field`) VALUES ('$safetext')"; 
mysql_query($query); 

작동합니다.

1

서식과 함께 사용자 텍스트를 올바르게 저장하려면 nl2br($inputtext)을 사용하여 모든 줄 바꿈을 나누기로 변환해야합니다. 입력을 필터링 한 후 수행하십시오.

관련 문제