저의 생각이 올은지 모두의 견해 부탁합니다.

저의 생각이 올은지 모두의 견해 부탁합니다.

QA

저의 생각이 올은지 모두의 견해 부탁합니다.

답변 1

본문

그누보드를 사용하는과정에 이런 에러구문을 알게 되였습니다.
아마 실 홈페이지를 운영할때에는 구문오류 같은게 출력되지 않게 환경설정 해놓았을것입니다.
그누보드소스에는 루트폴더/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;
}

그랬더니 잘 작동하더라구요...

이 질문에 댓글 쓰기 :

답변 1

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 5
© SIRSOFT
현재 페이지 제일 처음으로