[PHP]: Cette page Web présente une boucle de redirection. ERR

AntoninDevpHp Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
AntoninDevpHp Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Je suis actuellement en train de créer un template de Back-office, que je pourrais par la suite réutiliser pour mes projets clients etc.
J'ai premièrement créé mon formulaire de connexion, puis un index.php qui reçoit les informations de session, puis un dashboard.php, accessible uniquement si l'utilisateur est connecté.

Cependant, Google me donne ce message d'erreur :

"Cette page Web présente une boucle de redirection.
ERR_TOO_MANY_REDIRECTS".

Mon code se présente de la sorte :

config.php :

<?php

session_start();


define('SQL_HOST',       'localhost');
define('SQL_USERNAME',   'root');
define('SQL_PASSWORD',   'root');
define('SQL_DBNAME',	 'backofficee_commerce'); 

try {
	$dbb = new PDO('mysql:dbname='.SQL_DBNAME.';host='.SQL_HOST, SQL_USERNAME, SQL_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}
catch(Exception $e) {
	exit('Erreur : ' . $e->getMessage());
}


if(!isset($_SESSION['id']) AND $_SERVER['REQUEST_URI'] != "../admin/login.php"){
	header('Location: login.php');
}

?>


Mon login.php :

<?php  

include('../include/config.php');

if (isset($_POST['username']) AND isset($_POST['password'])) {
	$username = $_POST['username'];
	$mdp = $_POST['password'];

	$select = $dbb->prepare("SELECT * FROM users WHERE username = :username");
	$select->execute(array(
		':username' => $username
	));

	$select_q = $select->fetch();

	$true_mdp = $select_q['password'];

	if ($mdp == $true_mdp) {
		$_SESSION['id']= $select_q['id'];
		$_SESSION['username']=$select_q['username'];

		if (isset($_SESSION['id'])) {
			header('Location: index.php');
		}
		
	} else {
		echo "Identifiants incorrects.";
	}
} else {
	echo 'Veuillez remplir les champs vides.';
}

?>


Mon index.php :

<?php  

include('../include/config.php');

if (isset($_SESSION['id'])) {
	header('Location: dashboard.php');
} else {
	header('Location: login.php');
}

?>


et enfin mon dashboard.php :

<?php  

include('../include/config.php');



?>


Merci à tous ceux qui pourront m'apporter un peu d'aide,

Antonin

A voir également:

2 réponses

AntoninDevpHp Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Personne n'aurait une solution à ce problème ?
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Le problème semble venir de la condition sur la variable $_SERVER['REQUEST_URI'] dans le fichier config.php.

La valeur de REQUEST_URI correspond au chemin pour accéder au fichier login.php via le serveur web (depuis l'extérieur via une requête http), soit /admin/login.php
A ne pas confondre avec le chemin pour accéder à ce fichier via le système de fichier (depuis l'intérieur via un include php par exemple),
soit ../admin/login.php en relatif depuis le fichier config.php.

En arrivant sur la page login.php qui inclue le fichier config.php et puisque la condition n'est pas vrai, on a alors une redirection vers la page login.php, donc on a une redirection en boucle vers login.php.

La correction est donc de modifier la condition du fichier config.php comme ceci :
if(!isset($_SESSION['id']) AND $_SERVER['REQUEST_URI'] != "/admin/login.php"){
	header('Location: login.php');
}

-> en vérifiant que l'URI pour accéder à la page login.php est bien '/admin/login.php'

Bonne journée
0
AntoninDevpHp Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour à toi,

il est vrai que le code concernant $_SERVER['REQUEST_URI'] ... est le seul bout de code que j'ai copié collé sans le comprendre vraiment,

En faisant la modification, ça marche,

Je te remercie pour ton aide !
0