728x90
PHP 함수를 구현한 코드에 버그가 있다고는 생각도 못했다.
그런데 입력값이 공백인 경우와 입력값이 0인 경우 동일한 결과를 처리하고 있다는 걸 알고 깜짝 놀랐다.
<?php
ini_set("display_startup_errors", 1);
ini_set("display_errors", 1);
error_reporting(E_ALL);
$aaa = "";
$bbb = 0;
if(empty($aaa) && empty($bbb)){
echo 'aaa, bbb 둘다 값없슴<br/>';
} else {
echo 'aaa : '.$aaa.', bbb : '.$bbb.'<br/>';
}
echo 'aaa : '.Filter($aaa).'<br/>';
echo 'bbb : '.Filter($bbb).'<br/>';
function Filter($data){
if(empty(trim($data))) {
if($data === 0) return 0;
return '';
}
// 이하 함수 내용은 생략
}
?>
|
if문에서 둘다 입력값이 없는 경우를 체크하기 위한 함수를 구현하고, 0이 입력된 값을 체크했는데 원하지 않는 결과가 나왔다.
그래서 Filter 함수에서 data가 정확하게 0 을 입력한 경우에는 0을 반환하도록 코드를 보완했다.
if($keyword) {
}
를 할때에도 값이 0이 들어오면 false 로 인식되어 실제 값을 인식하지 못하는 현상이 발생한다.
그러므로 if(strlen($keyword)<1) 로 길이를 체크하여 길이가 없는 경우를 입력 값이 없는 경우로 간주하도록 구현하여 오류 발생을 방지하는 것도 방법이다.
728x90
'Web 프로그램 > Web 디버깅' 카테고리의 다른 글
[php] javascript ajax 디버깅 요령 (0) | 2021.11.24 |
---|---|
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data (0) | 2020.03.05 |
mysql_query() expects parameter 2 to be resource, boolean given in (0) | 2019.10.30 |
Web 취약점 점검툴 (0) | 2019.04.07 |
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given (0) | 2018.07.24 |