채택완료

쿼리문에 따옴표 처리 방법

2022-08-29 (월) 10:42:03 3,064
Copy
<?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개 / 댓글 1개

채택된 답변
+20 포인트
2022-08-29 (월) 11:03:27

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년간 처음보는 코딩이네요..

대충 이런식으로 밖에 사용자들이 볼수없도록 구현하세요.

Copy
<?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>

답변에 대한 댓글 1개

2022-08-29 (월) 14:32:53
그누위즈님께서 처음보는 코딩을 제가 한거군요 ^^;
여기저기 동냥으로 만들다보니 이런 어처구니 없는 코딩이 나왔나봅니다.
답변 감사합니다.

답변을 작성하려면 로그인이 필요합니다.