Ho risolto questo problema io stesso avendo un modulo di accesso nell'intestazione che presenta sempre un controller di accesso, ma la cattura è che il modulo di login dell'intestazione (che appare in ogni pagina) ha sempre un input nascosto chiamato reindirizzamento che il controller di login reale acquisisce ...
Ecco la configurazione di base (assicurarsi che l'url helper sia caricato):
L'intestazione Login Form
<form action="/login" method="post">
<input type="hidden" name="redirect" value="<?php echo current_url(); ?>" />
<input type="text" name="username" value="" />
<input type="password" name="password" value="" />
<input type="submit" name="login" value="Login" id="submit">
</form>
L'accesso controller Modulo
<form id="login" action="" method="post">
<input type="text" name="username" id="username" value="" />
<input type="password" name="password" id="password" value=""/>
<?php if(isset($_POST['redirect'])) : ?>
<input type="hidden" name="redirect" value="<?php echo $_POST['redirect']; ?>" />
<?php endif; ?>
<input type="submit" name="login" id="submit" value="Login" />
</form>
la parte migliore è di mantenere l'impostazione del reindirizzamento in caso di fallimento e l'ingresso redirect solo si impostare se si' rientrare da qualche altra parte.
Il controller
function index()
{
if(! $this->form_validation->run())
{
// do your error handling thing
}
else
{
// log the user in, then redirect accordingly
$this->_redirect();
}
}
function _redirect()
{
// Is there a redirect to handle?
if(! isset($_POST['redirect']))
{
redirect("site/members_area", "location");
return;
}
// Basic check to make sure we aren't redirecting to the login page
// current_url would be your login controller
if($_POST['redirect'] === current_url())
{
redirect("site/members_area", "location");
return;
}
redirect($_POST['redirect'], "location");
}
Quello che sta succedendo qui è questo:
- accessi utente in una pagina diversa.
- Il modulo di accesso viene inviato a un singolo controller di accesso con un elemento di input nascosto che indica da dove si sta effettuando l'accesso.
- Il controller di accesso elabora l'accesso, quindi reindirizza in base all'input.
- In caso di accesso non riuscito, il reindirizzamento continua a essere impostato di nuovo, quindi non importa cosa, l'utente tornerà alla pagina originale.
Questo è solo un esempio di base. Puoi ovviamente modificarlo se necessario.
"con un modulo di accesso nell'intestazione" .. Mi dispiace ma sono perso lì. Cosa vuoi dire ? –