Get device change url 함수의 위치
본문
Pc버전 보기라는 버튼만 고치면 되는
문제가 생겼습니다. 근데 그 get decive change url 함수의 원본 파일 위치가 필요하네요
#상황:
모바일버전으로는 잘 되는데
이상하게
Pc버전 보기를.스마트폰에서 눌렀더니...
사이트주소/bbs/:///bbs/board.php?bo_table=notice&wr_id=1&device=pc
요렇게 이상한 주소로 리다이렉팅 됩니다.
보이시죠? Bbs뒤에 :///bbs가 쓸데없이 붙은 게 왔습니다.
즉 처음 bbs가 기본인데 그 뒤에 :///bbs/board.. 식의
상대경로가 bbs 뒤에 주소로 붙게 한 함수가 불러진 것 같군요
#해결 실마리:
저기서 :///bbs를 브라우저 창에서 직접 지우니
그때부터는 다시 pc버전으로 나오고 다른 링크 클릭하고
해도 정상적으로 잘 되니 저 버튼만 고치면 되더군요.
#궁금증:
즉 get device change url함수를 저 버튼을 직접 보니
콜 하던데 제 호스팅이 좀 경로가 문제가 있어서
에러가 나는 듯 합니다
그래서 저 함수 자체를 직접 수정하려하는데
저 주소 붙는 설정 파일이 뭘까요 ㅠㅠ
답변 3
/lib/common.lib.php
3384 줄 내외에 있네요
function get_device_change_url()
{
$q = array();
$device = (G5_IS_MOBILE ? 'pc' : 'mobile');
$q['device'] = $device;
return get_params_merge_url($q);
}
안녕하세요.
질문의 위치를 말씀하신건가요?
function get_device_change_url()
{
$q = array();
$device = (G5_IS_MOBILE ? 'pc' : 'mobile');
$q['device'] = $device;
return get_params_merge_url($q);
}
/lib/common.lib.php 입니다~
네~ 같은 파일에 있습니다~
function get_params_merge_url($params, $url=''){
$str_url = $url ? $url : G5_URL;
$p = @parse_url($str_url);
$href = (isset($p['scheme']) ? "{$p['scheme']}://" : '')
. (isset($p['user']) ? $p['user']
. (isset($p['pass']) ? ":{$p['pass']}" : '').'@' : '')
. (isset($p['host']) ? $p['host'] : '')
. ((isset($p['path']) && $url) ? $p['path'] : '')
. ((isset($p['port']) && $p['port']) ? ":{$p['port']}" : '');
$ori_params = '';
if( $url ){
$ori_params = !empty($p['query']) ? $p['query'] : '';
} else if( $tmp = explode('?', $_SERVER['REQUEST_URI']) ){
if( isset($tmp[0]) && $tmp[0] ) {
$href .= $tmp[0];
$ori_params = isset($tmp[1]) ? $tmp[1] : '';
}
if( $freg = strstr($ori_params, '#') ) {
$p['fragment'] = preg_replace('/^#/', '', $freg);
}
}
$q = array();
if( $ori_params ){
parse_str( $ori_params, $q );
}
if( is_array($params) && $params ){
$q = array_merge($q, $params);
}
$query = http_build_query($q, '', '&');
$qc = (strpos( $href, '?' ) !== false) ? '&' : '?';
$href .= $qc.$query.(isset($p['fragment']) ? "#{$p['fragment']}" : '');
return $href;
}