2012-06-19 2 views

답변

4

yAnTar은 올바른 아이디어가 있지만 (현재 URL에 마지막 URL 저장) 일반적으로 CI URL은 base64로 인코딩 된 문자열 (예 : =)의 모든 문자를 허용하지 않습니다.

<a href="<?php echo base_url() ?>korisnik/logout?last_url=<?php echo urlencode(current_url())">Logout</a> 
function logout() { 
    $this->session->sess_destroy(); 
    redirect($this->input->get('last_url')); 
} 

는 또 다른 옵션은 $this->input->server('HTTP_REFERER')로 리디렉션 될 수있다, 그러나 나는 과거에이 문제를 했어 (구글 크롬의 이전 버전 favicon.ico를 전송) 정상적으로하지 않는 것이 좋습니다 :이 시도 그것.

$this->session->set_flashdata('redirect_url', current_url()); 

그리고 로그 아웃 기능에

+0

) 고맙습니다. – Sasha

1

당신은 방법 로그 아웃 함수에

<a href="/korisnik/logout/<?php echo base64_encode(current_url());?>" 

다음의 첫 번째 옵션과 같은 URL을 추가 할 수 있습니다

public function logout($url){ 
    redirect(base64_decode($url)); 
} 
+0

이것은 작동하지 않습니다 : ( – Sasha

0

리디렉션 만 요청하면 문제가 해결 될 수 있습니다.

$url= base_url().'index.php/korisnik/logout'; 
redirect($url); 
내가 보는 것과

중 하나를 당신의 base_url() 몇 가지 문제가 있거나 URL에 index.php 확인하시기 바랍니다 누락되었습니다.

2

사용이 나는이 문제에 실행했을 때 지금은 다른 방법

if($this->session->flashdata('redirect_url')) 
{ 
    $url = $this->session->flashdata('redirect_url'); 
    redirect($url); 
} 
+0

로그 아웃 기능의 current_url()은 로그 아웃 url (무한 루프)이됩니다. 나는 "다른 방법"으로 "모든 컨트롤러"를 의미한다고 생각합니다. 그래서 2 개의 리다이렉트가 가능합니까? –

+0

그럼 당신은 바로 다음 $ this-> input-> get ('last_url')을 사용하십시오. –

+0

나는 모든 컨트롤러에서 매번 flashdata를 설정해야한다는 것을 의미한다고 생각합니다. 짐 같은데, 그렇지 않으면이 방법은 괜찮습니다. –

0

을 내가 내 컨트롤러의 구조에서 다음 코드를 사용했다 :

$this->session->set_userdata(array('last_url' => current_url())); 

favicon을 설정하고 잠시 후 favicon으로 리디렉션되고 있음을 알게되었습니다. .ico는 last_url을 사용하는 몇 가지 기능을 제공합니다.

나는 결국 문제를 알아 냈습니다. 방금 htaccess 파일에 favicon.ico를 추가 했으므로 이제는 완벽하게 작동합니다.

RewriteCond $1 !^(index\.php|img|css|js|slider|uploads|robots\.txt|favicon\.ico) 

나는이 다른 사람을 도움이되기를 바랍니다 :

다음은 htaccess로 라인입니다.

관련 문제