세션 활용하여 태그 변환하기 질문입니다.
본문
세션으로 조건달아서 ENG와 KOR중에 한개씩만 태그를 변환하며 보여주려고 합니다.
처음에 kor로 세션값을 주고 kor일때 ENG 태그를 주어서 클릭하면
ENG태그를 KOR로 변환시켜 주고 세션값을 kor로 바꿔주려고 합니다.
그리고 다시 KOR태그를 누르면 세션값을 ENG로 바꿔주고요.
근데 아래 소스에서 뭐가 문제인지 잘 안됩니다 ;;
<?php
session_start();
$_SESSION['l_type'] = 'kor' ?>
<?php if(!empty($_SESSION['l_type'])){ ?>
<?php if($_SESSION['l_type']=='kor'){ ?>
<li><a href="?lang_type=eng">ENG</a></li>
<?php $_SESSION['l_type'] = 'eng'; ?>
<?php }elseif($_SESSION['l_type']=='eng'){ ?>
<li><a href="?lang_type=kor">KOR</a></li>
<?php $_SESSION['l_type'] = 'kor'; ?>
<?php } ?>
<?php } ?>
답변 3
조건을 하나 더 추가하시죠
$is_convert 라는 것을 추가 해서
영문에서 영문으로 갈 경우와 영문에서 한글로 갈 경우를 처리해주시면 됩니다.
ex) http://~~~~.php?lang_type=eng&is_convert=n 등으로 받아서
if (array_key_exists('is_convert', $_GET)) {
$is_convert = $_GET['is_convert'];
}
를 받으신 다음에 if문을 하나 더 돌리는거죠
if ($is_convert == 'n') {
$link = $lang_type;
$contrnt = strtoupper($lang_type);
}
식으로요..
세션의 데이터를 받아 처리 하신다고 하셨는데
정작 링크는 GET 으로 파라미터 넘기네요.
제가 보았을때는 해당 부분이 크게 세션에 들어가야 할 정보는 아닌거 같습니다.
아래와 같이 변경해보시죠..
중복되는 코드는 줄이는게 좋습니다 :)
<?php
if (array_key_exists('lang_type', $_GET)) {
$lang_type = $_GET['lang_type'];
}
switch ($lang_type) {
case 'eng':
$link = 'kor';
$content = 'KOR';
break;
case 'kor':
$link = 'eng';
$content = 'ENG';
break;
}
?>
<li><a href="?lang_type=<?php echo $link; ?>"><?php echo $content; ?></a></li>
초기 값이 없을경우에는 우선 초기 값을 주는게 맞습니다.
예를 들어 이렇게요.
<?php
if (array_key_exists('lang_type', $_GET)) {
$lang_type = $_GET['lang_type'];
} else { $lan_type = 'kor';}
switch ($lang_type) {
case 'eng':
$link = 'kor';
$content = 'KOR';
break;
case 'kor':
$link = 'eng';
$content = 'ENG';
break;
}
?>
<li><a href="?lang_type=<?php echo $link; ?>"><?php echo $content; ?></a></li>
기본적으로 주소?lang_type 를 넘겨주기 때문에 그 전 페이지에서 데이터를 넘겨주실때 주시는게 가장 좋은 방법입니다만..
그게 불가능 하면 위처럼 초기값을 선언해주면 됩니다.
이건 세션이여도 동일한 이슈이고 이 부분은 해당 페이지를 요청할때 파라미터를 넘겨주는게 맞습니다.
ex)
http://~~.php?lang_type=kor 또는 http://~~.php?lang_type=eng
링크로 탔을때에도 kor 일 경우 http://~~.php?lang_type=eng 로 요청하므로 문제 없습니다.
!-->