2010-08-25 18 views
6

Quando un utente tenta di accedere al nostro sito Web tramite un collegamento (ad esempio visitando www.website.com/privatepage) viene reindirizzato a una pagina di accesso. Una volta effettuato l'accesso, desideriamo reindirizzarli verso l'URL desiderato: come si fa?Reindirizzamento URL previsto + reindirizzamento predefinito dopo l'accesso?

Inoltre, abbiamo un caso di utilizzo in cui un utente accede dalla home page o va direttamente alla pagina di accesso senza URL previsto - in questo caso vorremmo reindirizzare a una pagina predefinita.

Qualcuno può aiutarmi a capirlo?

+0

Avresti potuto essere più specifico dicendo che te che stai usando. Ma la cosa fondamentale è inviare l'url della pagina quando stai reindirizzando l'utente per accedere. In questo modo puoi avere l'ultimo URL e dopo aver effettuato correttamente il login reindirizzare ad esso. Leggi qualcosa su request.referer per maggiori dettagli. – AMIT

+0

Sì, come ha detto Amit, non possiamo aiutare troppo senza conoscere i metodi che stai usando. La mia risposta è solo un aiuto generale. – palswim

risposta

4

Come vengono reindirizzati alla pagina di accesso? Indipendentemente dal metodo con cui lo fai, puoi aggiungere una variabile GET alla fine dell'URL della pagina di accesso e quindi fare riferimento a tale variabile nella pagina di accesso.

Quindi, l'utente desidera accedere a www.example.com/privatepage, ma è necessario prima effettuare l'accesso a www.example.com/login. Reindirizzali a www.example.com/login?targetpage=/privatepage, quindi nel codice per la tua pagina di accesso, puoi accedere alla variabile targetpage.

3

Io di solito memorizzo la pagina in una sessione PHP prima di reindirizzare alla pagina di accesso. Dopo aver effettuato l'accesso, verifica se il valore della sessione è impostato, se viene reindirizzato a quella pagina.

5

Potrebbe essere una buona idea avere una whitelist di URL accettati quando si reindirizza in questo modo, altrimenti un utente malintenzionato potrebbe inviare a qualcuno un link come esempio.com/login?attacker.com/fake_examplecom e l'utente verrà reindirizzato al sito dell'attaccante mentre pensa di aver appena effettuato l'accesso al tuo sito. L'URL originale indicava il tuo sito, quindi sembra affidabile. Ci sono molte cose brutte che si possono fare con questo, come puoi immaginare.

6

nella tua pagina di login:

se si va a www.example.com/private_page

utilizzando CodeIgniter (a pagina privata)

// if user is not logged in... 
$_SESSION['redirect'] = $this->uri->segment(1); 
redirect('login'); 

sulla pagina di login

// successfully logged in.. 
if (isset($_SESSION['redirect'])) { 
    redirect($_SESSION['redirect']); 
} else { 
    // redirect to default page 
} 
Problemi correlati