사용자가 메모를 추가하는 텍스트 영역이 있습니다. 다음 페이지에서 입력 한 내용을 표시하기 위해 $_POST[Comments]
을 사용합니다. 돌아가서 입력 된 내용을보고 편집 할 수있는 편집 버튼이 있지만 $_POST[Comments]
을 표시하면 아포스트로피까지 표시됩니다.PHP를 사용하여 텍스트 영역의 아포 스트로피를 MySQL에 전달하는 방법
예 : 원래 입력
: Let's try this.
편집 : 이제 내가 SQL 주입
을 방지하기 위해 다음과 같은 기능을 사용하여 SQL 추가 기능을 수행 할 서버로 통과 할 때Let
function keepSafe($value) {
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
if (!is_numeric($value)) {
$value = "'" . mysqli_real_escape_string($value) . "'";
}
return $value;
}
다음은 SQL 삽입을 위해 입력 형식을 지정하는 데 사용하는 항목입니다.
$Comments = str_replace("\n","<br />",$_POST['CustComments']);
$Comments = keepSafe($_POST['Comments']);
제출 전에 편집 할 때 노트 섹션에서 모든 아포스트로피를 볼 수 있어야합니다. 그리고 제출할 때 SQL injection이 안전한 코드를 방지하는지 확인하고 싶습니다.
처음 사용'$ _POST [ 'CustComments']'다음'$ _POST [ '댓글']'마지막 예에서, 그 중요한 당신이 경우를 (그것은 당신에게해야합니다). 또한 (응답이 아닌) 당신은'\ n \ '대신 (Windows 관점에서)'\ r \ n'을 대체해야합니다. 또한 또한 (특정 답변이 아님), mysqli를 사용하기 때문에 직접 변수 삽입 대신에 prepared statement를 사용해야한다. – newfurniturey
[대 탈주 (또는 : 텍스트 내에서 텍스트로 작업하기 위해 알아야하는 것)] (http://kunststube.net/escapism/) – deceze
아주 오래된 소스에서 예제 코드를 얻은 것 같습니다. PHP에서 마술 따옴표는 오래 전에 삭제되었습니다. 이것을 올바르게 처리하는 방법은 준비된 진술이 필요한 것입니다. – GordonM