CI 묻고 답하기

제목 alert 팝업 창에 대한 질문입니다..
글쓴이 셉셉이 작성시각 2016/01/08 16:54:41
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 16877   RSS

안녕하세요 Jquery 를 이용하여

로그인이 안되었을시 로그인을 하라고 팝업을 띄운뒤

php 코드로 리다이렉션 하는 코드를 짜는 중인데

지금 제가 짠 코드 상태로 하면

팝업은 안뜨고 바로 로그인 창으로 넘어가네요 ..

 

. 이부분은 보통 웹 페이지들 처럼 

들어가고 싶은 메뉴를 눌렀을때

권한이 필요하면 로그인하라고

alert 팝업이 뜨면서 로그인 페이지로 넘어가는 것을

어떻게 구현 하면 좋을지 조언좀 부탁드리겠습니다 ...

 

밑에는 제가 지금 현재 view 단에 짜 놓은 코드 입니다 ...

 

 

 

<head>

<script > // jquery-confirm 이란 라이브러를 이용한 코드 입니다. 잘 호출은 됩니다. 대신 순서가 문제입니다.

 

$.alert({  

  title: '권한 오류',  

  content: '로그인 해 주세요 ', 

  confirmButtonClass: 'btn-info',   });

 

</script>

 

 

</head>

 

<body>// 이런식으로 밑에 페이지 코드 전에 로그인 리다이렉션 코드를 심어놨습니다.

 

<?php  if(!$this->session->userdata('is_login'))  

  {     

      $this->load->helper('url');    

    redirect('/auth/login'); 

     }

      ?>

 다음글 없는변수 (3)
 이전글 쿼리사용법에 관한 질문입니다. (1)

댓글

이현재 / 2016/01/08 18:42:59 / 추천 0
굳이 php로 리다이렉트 할 필요가 있을까요? 스크립트로 처리하는 것이 더 깔끔한 방법이지 않을까 싶습니다. 또한 해당 문제는 다음과 같은 이유가 원인입니다. php는 서버에서 처리될 뿐 클라이언트에서 처리하는 언어가 아닙니다. 이러한 단점 때문에 스크립트를 사용하는 것이고, 스크립트로 처리하는 것이 올바릅니다. 굳이 php로 처리하고 싶다면 페이지를 이동시킬 때 서버에서 판단을 하여 다른 주소로 보낼 수도 있겠죠.
이현재 / 2016/01/08 18:50:56 / 추천 0
아 잘못 읽었었네요. 이유야 같으니 큰 문제는 없지만, 서버에서 먼저 php처리가 끝낸 후 클라이언트에게 보내면 그 때 브라우저를 통하여 스크립트 처리를 합니다. 해당 요청이 팝업을 띄우려면 브라우저에 도착하여야 하는데, 서버에서 php 처리 중 리다이렉트가 발생하기 때문에 생기는 문제입니다.
셉셉이 / 2016/01/08 20:52:00 / 추천 0
아 그럼 혹시 ... 스크립트로 그냥 처리하게 되면 CI에서 사용하는 로그인 세션은 어떻게 호출하여야 하나요 ? ㅠㅠ 제가 아직 코딩 초보라 php정도밖에 모릅니다 ㅠㅠ
셉셉이 / 2016/01/08 20:55:39 / 추천 0
아 댓글을 달고 든 생각인데 저 if 문만 php코드로 선언해 주고 밑에는 그냥 스크립트 코드로 리다이렝션을 시키면 되는건가요 ? 지금 제가 밖이라 바로 실습은 못해보겠지만 혹시나 이 방법이 맞나 싶네요 ㅎㅎ
이현재 / 2016/01/08 21:35:50 / 추천 0
function __construct(){
    parent::__construct();
    $this->load->helper('url');
    if( !$this->session->userdata('is_login') ){
        $this->session->set_flashdata('message', '로그인 해야 이용 가능합니다.');
        redirect('/login');
    }
}

컨트롤러 상단에 이와 같이 선언한 후에 로그인 view 페이지에 다음과 같이 추가해서 씁니다.

<? if( !empty($this->session->flashdata('message')) ): ?>
        <script>
            alert('<?=$this->session->flashdata('message')?>');
        </script>
 <? endif; ?>

로그인 페이지로 이동하면서 팝업창을 띄운다면 이처럼 해도 될겁니다.

원하시는 순서는 팝업창 이후 로그인 페이지로 이동하는 것이지만, 제가 적은건 로그인 페이지로 이동 후 팝업창을 띄우는겁니다.

인증과 관련된 사항은 되도록 스트립트에 남기는 것을 싫어하기 때문에 ajax를 이용하지 않는다면 이 방법으로 처리하고 있습니다.

셉셉이 / 2016/01/08 21:55:26 / 추천 0
오 이렇게 직접 코드 까지 해주시다니 정말 감사합니다 ^^ 오늘 또 큰 개념 하나 배워가네요 ㅎㅎㅎ 감사합니다 !!!