Problèmes de redirection header("Location: ###.php");

Résolu/Fermé
Geopra Messages postés 187 Date d'inscription mercredi 16 septembre 2015 Statut Membre Dernière intervention 7 juin 2017 - 29 oct. 2016 à 14:34
Geopra Messages postés 187 Date d'inscription mercredi 16 septembre 2015 Statut Membre Dernière intervention 7 juin 2017 - 31 oct. 2016 à 16:07
Bonjour,

Je cherche depuis des heures sans trouver mon erreur, alors si quelqu'un sait, merci d'avance :)

1 - J'ai une page connexion.php, qui est censée me rediriger vers la page d'accueil des utilisateurs connectés : indexauth.php.

2 - Le soucis est que lorsque je me connecte, je suis redirigé vars la page d'accueil des utilisateurs non authentifiés : index.php.

Voici le code de la page de connexion :

https://textup.fr/179791BZ

Voici le code de la page indexauth.php :

https://textup.fr/179792PB

Voici le code de la page index.php :

https://textup.fr/179793ar

je ne sais pas où se situe l'erreur, dans mon raisonnement ou dans mon code, mais dans quelle page... ?

Merci de votre aide ! :)

2 réponses

Konseil Messages postés 643 Date d'inscription samedi 29 août 2015 Statut Membre Dernière intervention 13 novembre 2018 429
29 oct. 2016 à 14:51
Dans ta page de connexion, tu fais
header("Location: ..\indexauth.php");

Ca redirige vers indexauth.php tout simplement sans faire transiter ta variable $GET['id']



Et dans indexauth.php ta condition va forcement retourner false
if(isset($_GET['id']) AND $_GET['id'] > 0 AND isset($_SESSION['id']) AND $_SESSION['id'] > 0)

puisque la variable $_GET['id'] n'est pas transmise précédemment.
0
Geopra Messages postés 187 Date d'inscription mercredi 16 septembre 2015 Statut Membre Dernière intervention 7 juin 2017 3
29 oct. 2016 à 14:55
alors que dois-je remplacer ?

PS : je debute en php, alors c'est un peu compliqué xD
0
Konseil Messages postés 643 Date d'inscription samedi 29 août 2015 Statut Membre Dernière intervention 13 novembre 2018 429
29 oct. 2016 à 15:05
Tu as 2 solutions soit tu remplaces
header("Location: ..\indexauth.php");

par
header("Location: ..\indexauth.php?id=".$getid);


ou tu remplaces
if(isset($_GET['id']) AND $_GET['id'] > 0 AND isset($_SESSION['id']) AND $_SESSION['id'] > 0) 

par
if(isset($_SESSION['id']) AND $_SESSION['id'] > 0) 


Je pense qu'il vaut mieux faire la 2eme solution puisqu'au moment de la connexion, la variable $_GET['id'] te sert à rien.

Elle te servira plus tard pour la page profil.php
0
Geopra Messages postés 187 Date d'inscription mercredi 16 septembre 2015 Statut Membre Dernière intervention 7 juin 2017 3
29 oct. 2016 à 15:15
la deuxième solution, lorsque je suis sur la page d'accueil et que je vais vers la page de connexion me redirige automatiquement vers la page d'accueil, la première solution ne change rien
0
Konseil Messages postés 643 Date d'inscription samedi 29 août 2015 Statut Membre Dernière intervention 13 novembre 2018 429
29 oct. 2016 à 15:35
Essaye de suivre le cheminement de tes variables et avance ligne par ligne, tu peux faire des
echo $NomDeTaVariable;exit();

pour voir si ta variable est bien récupérée et que sa valeur est bonne et un exit(); pour arrêter l'excecution du script.

Mets aussi des echo juste après tes conditions par exemple:
echo "la condition est bonne";exit();


Et tu avances comme ça tout le long de ton script pour voir ce qui cloche.
0
Geopra Messages postés 187 Date d'inscription mercredi 16 septembre 2015 Statut Membre Dernière intervention 7 juin 2017 3
Modifié par Geopra le 29/10/2016 à 16:01
j'ai trouvé un truc bizarre, c'est que lorsque je me connecte, je suis redirigé vers index.php (au lieu de indexauth.php) et a cette page, lorsque je clique sur "se connecter" pour accéder à la page de connexion, ça actualise simplement la page sans m'envoyer à la page de connexion.

En revanche, lorsque je saisis dans la barre d'adresse deconnexion.php, je suis déconnecté, et redirigé vers index.php (normal), et là, quand je clique sur "se connecter" pour allez a la page de connexion, ça fonctionne, j'arrive au formulaire, là, je saisis mes identifiants, et je suis redirigé vers index.php au lieu de indexauth.php, et ainsi de suite.

Donc j'imagine que l'erreur doit se trouver dans la page connexion.php ou la page indexauth.php
0
Geopra Messages postés 187 Date d'inscription mercredi 16 septembre 2015 Statut Membre Dernière intervention 7 juin 2017 3
Modifié par Geopra le 30/10/2016 à 17:40
Bon, j'ai tout repris depuis le début, avec HTML simplifié et le PHP simplifié aussi, mon problème maintenant, c'est de savoir si un utilisateur est bien authentifié ou pas

Ci-dessous les codes :

Inscription : https://textup.fr/179908T4

Connexion : https://textup.fr/179910SB

Index.php : https://textup.fr/179911vT

Profil : https://textup.fr/179912d0

Editionprofil : https://textup.fr/179913X1

Donc en gros l'objectif, c'est que si l'user est connecté, il est sur une page d'accueil "index.php?id=####", si l'utilisateur n'est pas connecté, alors il est redirigé vers "index.php".

Même chose pour toutes les autres pages visitées, l'url doit se terminer par l'ID de l'user si il est connecté, sinon, redirection automatique vers index.php ou connexion.php en fonction de l'url entré.

Exemple : Si je ne suis pas connecté et que j'entre dans la barre d'adresse "editionprofil.php?id=25" je dois être redirigé vers "connexion.php".
Si je veux accéder à "index.php?id=25", je suis redirigé vers index.php où un lien pour se connecter sera disponible.

J'ai fais plusieurs tests, la connexion fonctionne, mais la redirection elle non, et je n'ai aucune idée du code que je dois mettre pour y arriver.

PS : Le soucis détecté pour l'intant, est que que je sois connecté ou non, sur la page index.php, lorsque je cliques sur "connexion", je suis redirigé sur la même page index.php... et je ne vois pas d'où provient cette erreur.

Merci d'avance
0
Konseil Messages postés 643 Date d'inscription samedi 29 août 2015 Statut Membre Dernière intervention 13 novembre 2018 429
30 oct. 2016 à 21:46
Ce qui différencie un utilisateur connecté et un simple visiteur, c'est la variable session.
donc en haut des pages dont tu souhaites limiter l'accès aux personnes connectés, tu mets:
if(!isset($_SESSION['id'])){header("location:index.php");}


Par contre je vois pas pourquoi tu veux faire transiter le variable id dans l'url puisqu'elle transite déjà de page en page avec la variable session id.
0
Geopra Messages postés 187 Date d'inscription mercredi 16 septembre 2015 Statut Membre Dernière intervention 7 juin 2017 3
31 oct. 2016 à 16:07
Super ! Ca fonctionne ! Merci beaucoup pour votre aide ! :)
0