[PHP]: Cette page Web présente une boucle de redirection. ERR
AntoninDevpHp
Messages postés
5
Statut
Membre
-
AntoninDevpHp Messages postés 5 Statut Membre -
AntoninDevpHp Messages postés 5 Statut Membre -
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 :
Mon login.php :
Mon index.php :
et enfin mon dashboard.php :
Merci à tous ceux qui pourront m'apporter un peu d'aide,
Antonin
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:
- [PHP]: Cette page Web présente une boucle de redirection. ERR
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour à la ligne php ✓ - Forum PHP
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
2 réponses
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 :
-> en vérifiant que l'URI pour accéder à la page login.php est bien '/admin/login.php'
Bonne journée
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