저의 생각이 올은지 모두의 견해 부탁합니다. 채택완료
그누보드를 사용하는과정에 이런 에러구문을 알게 되였습니다. 아마 실 홈페이지를 운영할때에는 구문오류 같은게 출력되지 않게 환경설정 해놓았을것입니다. 그누보드소스에는 루트폴더/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 모바일버전" target="_blank" rel="noopener noreferrer">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; }
그랬더니 잘 작동하더라구요...
답변 1개
답변을 작성하려면 로그인이 필요합니다.
로그인