user
Avec CodeIgniter 3, comment rediriger vers la page précédente ?
alphonsio

Dans CodeIgniter 3, pour rediriger vers la page précédente, le plus concis est la syntaxe suivante :

redirect($_SERVER['HTTP_REFERER']);

Pour rediriger vers la page précédente avec CodeIgniter 3, vous pouvez utiliser plusieurs méthodes.

Méthode 1. Utiliser $_SERVER['HTTP_REFERER']

Dans CodeIgniter 3, pour rediriger vers la page précédente, vous pouvez utiliser la fonction native de PHP $_SERVER['HTTP_REFERER'] qui contient l'URL de la page précédente visitée par l'utilisateur.

Voici comment procéder :

public function some_function()
{
    // Rediriger vers la page précédente
    if (isset($_SERVER['HTTP_REFERER'])) {
        redirect($_SERVER['HTTP_REFERER']);
    } else {
        // Si l'URL précédente n'est pas disponible, rediriger vers une page par défaut
        redirect('default_controller');
    }
}

Explications :

  • $_SERVER['HTTP_REFERER'] : Contient l'URL de la page précédente. Cependant, cela dépend du fait que le navigateur de l'utilisateur envoie cette information (il n'est pas garanti que cela fonctionne toujours).
  • redirect() : Fonction native de CodeIgniter utilisée pour effectuer une redirection.

Méthode 2. Utiliser user_agent

Il est aussi possible d'utiliser la bibliothèque user_agent :

$this->load->library('user_agent');
if ($this->agent->is_referral())
{
    echo $this->agent->referrer();
}

Cette deuxième option a l'avantage de vérifier que l'URL de la page précédente est connue.


Méthode 3. Utiliser flashdata de la session pour stocker l'URL précédente

Une solution plus fiable consiste à enregistrer manuellement l'URL précédente dans une variable de session, au cas où HTTP_REFERER ne serait pas disponible.

  1. Stocker l'URL actuelle avant chaque redirection :
// Dans le contrôleur ou un hook avant de charger une vue
$this->session->set_flashdata('previous_url', current_url());
  1. Rediriger vers l'URL précédente :
public function some_function()
{
    // Obtenir l'URL précédente depuis les flashdata
    $previous_url = $this->session->flashdata('previous_url');
    
    if ($previous_url) {
        redirect($previous_url);
    } else {
        // Si aucune URL précédente n'est disponible
        redirect('default_controller');
    }
}

Avantages :

  • $_SERVER['HTTP_REFERER'] : Simple et rapide, mais peu fiable si désactivé par le navigateur.
  • user_agent: Vérifie que l'URL de la page précédente est connue.
  • flashdata : Plus fiable, car vous contrôlez la gestion de l'URL dans la session.

Ces méthodes permettent de rediriger les utilisateurs vers la page qu'ils consultaient avant d'effectuer une action.