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

Fermé
AntoninDevpHp Messages postés 5 Date d'inscription mercredi 27 mai 2015 Statut Membre Dernière intervention 10 juin 2015 - 27 mai 2015 à 18:38
AntoninDevpHp Messages postés 5 Date d'inscription mercredi 27 mai 2015 Statut Membre Dernière intervention 10 juin 2015 - 29 mai 2015 à 13:41
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 mercredi 27 mai 2015 Statut Membre Dernière intervention 10 juin 2015
28 mai 2015 à 23:26
Personne n'aurait une solution à ce problème ?
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
29 mai 2015 à 12:14
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 mercredi 27 mai 2015 Statut Membre Dernière intervention 10 juin 2015
29 mai 2015 à 13:41
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