Redirection avec ($_SERVER['HTTP_REFERER'])

Eléphant du PHP | 233 Messages

24 janv. 2015, 19:08

Bonjour à tous,
j'ai un soucis avec $referer = ($_SERVER['HTTP_REFERER']); sur ma page de login. Je souhaiterais rediriger sur l'ancienne page consultée après s'être loger.
Si je mets header("Location: index.php"); après connexion c'est bon ça fonctionne, mais si je mets à la place header("Location: $referer"); je reste sur la page login !
J'ai mis $referer = ($_SERVER['HTTP_REFERER']); sur les page concernées par la redirection.

Merci de votre aide.
Je vous ajoute le code que j'utilise.
<?php session_start();
$referer = ($_SERVER['HTTP_REFERER']); 


require('conf.inc.php');
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
        if ( !empty($_POST['pseudo'] ) &&  !empty($_POST['mot_passe']) ) {
		
     
	
        $sql = mysqli_query($bdd, 'SELECT  id, mot_passe, email, acces, admin, avatar FROM membres WHERE pseudo="'.$_POST['pseudo'].'" AND mot_passe="'.md5($_POST['mot_passe']).'"');
		
        
		
       $data = mysqli_fetch_array($sql);
        mysqli_free_result($sql);
       if(!empty( $data) ){
          

                
			     $_SESSION['id'] = $data['id'];
                $_SESSION['admin'] = $data['admin'];
				 $_SESSION['avatar'] = $data['avatar'];
				 $_SESSION['mot_passe'] = $data['mot_passe'];
				 $_SESSION['email'] = $data['email'];
                $_SESSION['pseudo'] = $_POST['pseudo'];
                header("Location: $referer"); 
                
     }else{
         $erreur = "<br /><div class='alert alert-error'>Pseudo ou mot de passe incorrect</div>";
    }
       
 }
 else {
	$erreur = "<br /><div class='alert alert-error'>Au moins un des champs est vide.</div>";
	}
}

  ?>

Mammouth du PHP | 688 Messages

24 janv. 2015, 19:35

cela peut fonctionner si ton formulaire de login s'ouvre dans la page et non dans une nouvelle page servant juste pour le login.
si tu veux conserver cette page pour le login, il faut que ce soit cette page qui récupère le referer et le mette en session par exemple.

Eléphant du PHP | 233 Messages

24 janv. 2015, 20:01

Le formulaire est bien dans la même page, j'ai oublié de le préciser.
Je ne veux pas spécialement conserver $referer dans la session.

J'ai mis un echo $referer et j'ai bien la dernière page consulté, mais impossible d'aller sur cette page avec location:$referer :?:

Mammouth du PHP | 688 Messages

24 janv. 2015, 20:27

si tu mets juste cela dans un nouveau script, que se passe-t-il ?
<?php
$referer = "http://forum.phpfrance.com/php-debutant/redirection-avec-server-t272911.html";
header("Location: $referer");
?>

Eléphant du PHP | 233 Messages

24 janv. 2015, 20:37

J'arrive sur cette page du forum, celle ou j'ai posté ma demande.

php-debutant/redirection-avec-server-t272911.html

Je précise que la session est ouverte quand même, c'est uniquement la redirection qui ne marche pas... :?: