준비된 문 내에서 HTML 컨텐트를 처리 할 방법을 찾고 있습니다.PDO가 HTML 컨텐트를 저장하기 위해 준비된 문
내 응용 프로그램은 기본 WYSIWYG 편집기를 제공하며 사용자가 콘텐츠를 저장하면 스크립트가 HTML 데이터를 sqlite 데이터베이스에 저장합니다.
하지만 준비된 문을 사용하면 내 HTML이 자연스럽게 이스케이프 처리됩니다.
try {
/* Create databases and open connections */
$dbh = new PDO('sqlite:db/coaching.sqlite');
/* Set Error Mode for Exception Handling */
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
/* Prepare SQL Statement */
$query = $dbh->prepare("UPDATE Content SET Value=:value WHERE Token=:token");
/* Bind Param to Statement */
$query->bindParam(':token', $_POST['id'], PDO::PARAM_STR);
$query->bindParam(':value', $_POST['value'], PDO::PARAM_STR);
/* Execute Query */
$query->execute();
/* Echo Data */
echo $_POST['value'];
/* Close connections to Database */
$dbh = NULL;
}
catch(PDOException $e) {
/* Print Error-Messages */
echo $e->getMessage();
}
HTTP 요청에서 HTML을 검색 할 때 bindParam()에 의해 이스케이프되는지 확인 하시겠습니까? – Leven
내가 아는 한 사용자 입력은 bindParam() 내에서 자동으로 인용됩니다. – gearsdigital
@gearsdigital 준비된 문은 변수를 이스케이프 처리하지 않습니다. 명령과 변수는 동시에 데이터베이스에 전송되지만 독립적으로 수행됩니다. 데이터가 데이터베이스에서 이스케이프 된 경우 다른 이유가 있습니다. 예 : 'magic_quotes'가 켜져 있습니다. 스크립트에'get_magic_quotes_gpc'을 반향하여 켜거나 끌 수 있습니까? – bostaf