쿼리문에 따옴표 처리 방법
본문
<?php
include_once('./_common.php');
$a = $_POST['test_txt'];
?>
<form method="post">
<input type="text" name="test_txt" value="AND vs_to_id IS null AND vs_id <> '<?=$member['mb_id']?>' AND vs_win <>'테스트' ">
<button type="submit">test</button>
</form>
<?php
echo $sql = "SELECT * FROM test_table WHERE test_txt = {$a}";
?>
위 결과를 보면 \' 이렇게 \가 붙어서 나오면서 쿼리에서 에러가 납니다.
SELECT * FROM test_table WHERE test_txt = AND vs_to_id IS null AND vs_id <> \'123456\' AND vs_win <>\'테스트\'
\를 없애려면 어떻게 해야하나요
!-->
답변 2
https://www.php.net/stripslashes
https://www.php.net/manual/en/function.mysql-real-escape-string.php
sql_real_escape_string() // lib/common.lib.php
함수를 사용하세요.
저런식으로 코드짜시면 인젝션등에 취약합니다..
쿼리자체를 인풋의 value로 넣는 경우는 개발10년간 처음보는 코딩이네요..
대충 이런식으로 밖에 사용자들이 볼수없도록 구현하세요.
<?php
include_once('./_common.php');
$a = $_POST['test_txt'];
if ($a) {
$sql = " AND vs_to_id IS null AND vs_id <> '{$member['mb_id']}' AND vs_win <>'테스트' ";
}
?>
<form method="post">
<input type="text" name="test_txt" value="">
<button type="submit">test</button>
</form>
답변을 작성하시기 전에 로그인 해주세요.