묻고답하기
송동우님 부탁드립니다.
2012.02.28 09:52
<?php
define('__ZBXE__', true);
require('config/config.inc.php');
$oContext = &Context::getInstance();
$oContext->init();
$logged_info = Context::get('logged_info');
foreach($logged_info->group_list as $g)
if($g=='apple') //apple 그룹이 맞으면 ./mid=kom 아닌 다른그룹은 ./?mid=Online 요기로
{
header ( "location:./?mid=kom" );
}
else
{
header ( "location:./?mid=Online" );
}
?>
댓글 1
-
송동우
2012.02.28 11:33
foreach 구문에서 오류나는 이유
1. 문법이 잘못됐습니다.
foreach(루프)
{
실행내용
}
이렇게 되어야 합니다. 즉, {} 이것으로 감싸주는 것을 하지 않았습니다.
2. foreach 는 조건이 맞지 않을 때 실행이 되면 오류를 발생합니다.
즉, $logged_info에 값이 있으면 정상작동되지만 값이 없으면 오류를 발생합니다.
그래서 로그인을 한 상태에서 페이지 접속을 하면 오류가 안나지만
로그인을 하지 않은 상태에서 접근하면 오류가 납니다.
해결 방법은
if($logged_info)
{
foreach(루프)
{
실행문
}
}
이렇게 하면 오류가 나지 않습니다.
3. $logged_info->group_list as $g
이렇게 하면 회원그룹의 key값과 value값을 따로 구분하지 않습니다.
그래서 지난번 답변에
$logged_info->group_list as $group => $g
이렇게 답을 한 것입니다.
그래서 바로 밑에 조건절에서 $g 변수로 그룹명과 비교를 가능하겠죠
물론
$logged_info->group_list as $g
이렇게 해도 조건문에서 배열형식으로 비교하면 됩니다.
서울가는 방법은 한가지만 있는 것이 아니니까요
utf-8 저장을 해도 한글이 깨지는 이유
파일내에서도 메타태그를 사용해서 캐릭터셋을 설정해줘야 합니다.
Cannot modify header information - headers already sent by 오류 이유
header를 사용하기 전에 다른 문자가 입력되어서 생기는 오류입니다.
자바스크립트로 이동을 하거나, 상위에 오류원인이 되는 것을 제거하면 됩니다.
이해가 안되면 그냥 자바스크립트 location.href 를 사용해서 이동하세요
utf-8, 한글깨짐등을 한 번에 해결하는 좋은 방법은
한글을 사용하지 않는 것입니다.
foreach문 속의 비교문에서 비교를 value값이 아닌 key값으로 비교를 하면 됩니다.
그러면 숫자로 비교를 하니 한글을 사용할 필요가 없습니다.
메타태그 따로 사용하지 않아도 되고 utf-8로 저장하지 않아도 됩니다.
이건 선택의 문제이니 꼭 그래야만 한다는 뜻은 아닙니다.
$logged_info->group_list as $group => $g