세션 활용하여 태그 변환하기 질문입니다.

세션 활용하여 태그 변환하기 질문입니다.

QA

세션 활용하여 태그 변환하기 질문입니다.

본문

세션으로 조건달아서 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>


소스 자체를 아얘 저거로 바꿔보란 말씀이시죠?

그런데 맨처음 $_GET으로 넘겨주는 변수가 아무것도 없어서 그런지 ENG도 KOR도 나오지 않습니다.
초기값을 eng로 주면 계속 kor만 나올테고 kor주면 eng로만 나올거 같고요..

초기 값이 없을경우에는 우선 초기 값을 주는게 맞습니다.

예를 들어 이렇게요.


<?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 로 요청하므로 문제 없습니다.

알려 주신 소스로 하니 잘 되는데 한가지 에러가 있습니다...
 if (array_key_exists('lang_type', $_GET)) {
$lang_type = $_GET['lang_type'];
} else {    $lang_type = 'kor';}

이부분에서 초기값을 kor로 지정해 주는것 때문인거 같은데요.
한글페이지에서 ENG를 눌러주면 영문으로 가는데요.
영문에서 영문으로 그냥 이동을 하면 저 초기값때문에 계속 한글로 강제로 이동이 됩니다.

초기값을 eng로 지정해주면 그 반대상황이 나오고요.

영문에서 한글로 한글에서 영문으로는 잘 되는데요.

영문페이지에서 영문페이지로 갈땐 강제로 한글로 이동되는 상황입니다.

그래서 제가 문제의 소스 맨위에 if문을 하나 더 줘서
if(isset($lang_type)){

}else if (array_key_exists('lang_type', $_GET)) {
$lang_type = $_GET['lang_type'];
} else {    $lang_type = 'kor';}

이미 $lang_type가 있을땐 아무것도 하지않고 지나가게 했는데
인식이 안되는지 그대로네요;;

답변을 작성하시기 전에 로그인 해주세요.
전체 128
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT