저의 생각이 올은지 모두의 견해 부탁합니다.
본문
그누보드를 사용하는과정에 이런 에러구문을 알게 되였습니다.
아마 실 홈페이지를 운영할때에는 구문오류 같은게 출력되지 않게 환경설정 해놓았을것입니다.
그누보드소스에는 루트폴더/lib/common.lib.php 가 있습니다.
여기서 정의 한 get_params_merge_url() 함수가 자주 호출됩니다.
대표적으로 get_params_merge_url()함수는 모든 홈페이지들의 아랫단에 있는 [PC버전] 또는 [모바일버전] 메뉴 링크를 사용자가 어떤 URL을 호출하든 전체 URL의 맨뒤에 항상 device=mobile 또는 device=pc 쿼리를 덧붙여주는 기능을 수행합니다.
그런데 그 함수정의부분을 보면
if($_SERVER['QUERY_STRING']) {
foreach($_GET as $key=>$val) {
$key = strip_tags($key);
$val = strip_tags($val);
if($key && $val)
$q[$key] = $val;
}
}
와 같은 로직이 있습니다.
저는 이런 쿼리를 실행해보았습니다.
http://.../g5/?view[]=v
이렇게 했더니 홈페이지 맨 밑단에 [PC버전] 또는 [모바일버전] 메뉴대신에 에러구문이 출력됩니다.
( ! ) Warning: strip_tags() expects parameter 1 to be string, array given in D:\workspace\www\eshop\lib\common.lib.php on line 3440 Call Stack #TimeMemoryFunctionLocation 10.2014404056{main}( )...\index.php:0 20.25371650696require_once( 'D:\workspace\www\eshop\theme\basic\index.php' )...\index.php:8 30.45651873832include_once( 'D:\workspace\www\eshop\theme\basic\tail.php' )...\index.php:67 40.46321880040get_device_change_url( )...\tail.php:30 50.46321880312get_params_merge_url( )...\common.lib.php:3470 60.46321881032
strip_tags
( )...\common.lib.php:3440 http://localhost/eshop/?device=mobile">모바일버전
그래서 이것을 저는 이렇게 수정하였습니다.
function get_params_merge_url($params){
$href = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$add = http_build_query($params, '', '&');
if($_SERVER['QUERY_STRING']) {
$href .= '&'.$add;
} else {
$href .= '?'.$add;
}
return $href;
}
그랬더니 잘 작동하더라구요...