2014-10-02 6 views
5

Mam stronę logowania, która nie będzie dostępna, jeśli użytkownik jest już zalogowany. Dlatego strona logowania próbuje przekierować zalogowanych użytkowników z powrotem na stronę, z której pochodzą.W jaki sposób strona może przekierować użytkowników z powrotem na poprzednią stronę, jeśli próbują uzyskać dostęp do strony za pomocą adresu URL?

Przekierowanie działa, gdy użytkownik kliknie link, aby przejść do strony. Problem polega na tym, że jeśli użytkownicy są na stronie About, próbują uzyskać dostęp do strony logowania za pomocą adresu URL, to nie zostanie ustawiona referrer agent, więc strona logowania nie przekierowuje użytkowników z powrotem na stronę About, zamiast tego przekierowuje z powrotem do base url (używam codeigniter i biblioteka autorów jonowych). login strona Kod przekierowanie jak poniżej:

if($this->ion_auth->logged_in()) 
{ 
    redirect($this->agent->referrer(), 'refresh'); 
} 

Czy to możliwe, aby uruchomić ten kod i przekierować poprawnie zamiast zawsze przekierowanie do podstawowego adresu URL? Gdy użytkownicy są zalogowani, nie wyświetlam linku do strony logowania. Tak więc zalogowani użytkownicy mogą przejść do strony logowania za pomocą pisowni, a jeśli tego chcę, to zostaną przekierowani z powrotem na stronę, z której pochodzą.

Odpowiedz

0

Nie wiem, czy jest jakiś lepszy sposób, ale zawsze to zrobić:

Gdy użytkownik jest na stronie O i kliknięć przy logowaniu, podejmują o adresie URL strony, a może zrobić na nim i base64_encode następnie wyślij go do strony logowania poprzez GET jako parametr. Na stronie logowania, jeśli poświadczenia są prawidłowe, bierzesz ten parametr z GET, base64_decode i przekierowujesz tam.

Jeśli robisz to tylko dla stron głównych, możesz pobrać tylko kontroler z adresu URL, ale jeśli chcesz zastosować go na każdej stronie (/controller/method/var1/var2), wówczas weź cały adres URL lub cały URL url minus podstawowy.

Daj mi znać, jeśli ta wskazówka pomogła.

8

Na stronie, że chcesz wrócić do was może zrobić:

$this->session->set_userdata('referred_from', current_url()); 

Wtedy przekierowanie z powrotem do tej strony

$referred_from = $this->session->userdata('referred_from'); 
redirect($referred_from, 'refresh'); 
4

Spróbuj:

$this->load->library('user_agent'); redirect($this->agent->referrer());

jeszcze

Do logowania i wylogowywania używaj numeru SESSION. jeśli sesja istnieje, blokuj stronę logowania, pozwól stronie logowania na używanie instrukcji if.

1

Robię w ten sposób.

Przekierowanie

($ _ SERVER ['HTTP_REFERER']);

Powiązane problemy