Probleme de redirection

Par Agop, il y a 11 ans


Bonjour tout le monde!

Je créer actuellement un site avec un espace membre de A à Z, tout fonctionne très bien hormis que lorsque mon membre souhaite se connecter il n'est pas redirigé vers la page index.php?page=membre et reste sur index.php?page=login en revanche quand je tape mon URL manuellement index.php?page=membre je constate qu'elle est bien créée.

index.php

<?php include('functions/connect.php'); $page=htmlentities($_GET['page']); include('functions/'.$page.'.func.php'); $pages=scandir('pages'); if(!empty($page)&& in_array($_GET['page'].".php",$pages)) { $content='pages/'.$_GET['page'].".php"; }else{ header("Location:index.php?page=login"); } ?>

login.php

<?php if(isset($_POST['submit'])) { if(empty($_POST['identifiant'])) { $errors[]="Veuillez saisir votre identifiant"; } if(empty($_POST['password'])) { $errors[]="Veuillez saisir votre password"; } if(!empty($errors)) { foreach($errors as $error) { echo"<div class='error'>".$error."</div>"; } }else{ if(verifier_combinaison_identifiant_password($_POST['identifiant'],$_POST['password'])==0) { echo"<div class='error'>Identifiant ou password incorrect</div>"; }else{ $_SESSION['identifiant']=$_POST['identifiant']; header("Location:index.php?page=membre"); } } } ?>

membre.php

<div class='header'> <?php $infos=infos_membre_connecte(); foreach($infos as $info) { echo"Bienvenue ".$info['identifiant']; } if(!isset($_SESSION['identifiant'])) { header("Location:index.php?page=login"); } if(isset($_SESSION['identifiant'])) { header("Location:index.php?page=membre"); } ?> <p><a href='index.php?page=logout'>Se déconnecter</a></p> </div>

login.func.php

<?php function verifier_combinaison_identifiant_password($identifiant,$password) { $identifiant=mysql_real_escape_string(htmlentities($_POST['identifiant'])); $password=mysql_real_escape_string(htmlentities($_POST['password'])); $password=sha1($password); $query=mysql_query("SELECT identifiant,password FROM utilisateurs WHERE identifiant='$identifiant' AND password='$password' "); $rows=mysql_num_rows($query); return $rows; } ?>

16 réponses

Agop, il y a 11 ans

Bonjour Carouge10,
j'ai mis les espaces, je n'ai pas de message d'erreur et je suis toujours redirectionné vers index.php?page=login

Carouge10, il y a 11 ans

Bonjour,

Mettez un espace après Location:

header("Location: index.php?page=membre");

Avez-vous un message d'erreur ?

Carouge10, il y a 11 ans

La page login est rechergé ou rien ne se passe ?
Puis-je avoir le formulaire de connexion ?

Agop, il y a 11 ans

Oui la page login est rechargé.
Voici le formulaire qui suit le code php dans login.php

<form method="POST" action=""> <label for="identifiant"></label> <input placeholder="Identifiant" type="identifiant" name="identifiant"><br/><br/> <label for="password"></label> <input placeholder="Password" type="password" name="password"><br/><br/> <input type="submit" value="Se connecter" name="submit"><br/><br/> </form> <a href='index.php?page=register'>Pas encore membre</a>
Carouge10, il y a 11 ans

il est où le session_start ?

Agop, il y a 11 ans

Le session_start est dans la page connect.php "functions/connect.php"

<?php session_start(); //connexion à la base de données mysql_connect('localhost', 'root', 'root') or die ("error"); mysql_select_db('Webandcogmweb') or die ("Bdd introuvable"); mysql_query('SET NAMES utf8'); ?>
Carouge10, il y a 11 ans

Je sèche un peu.
Je vous propose de faire 2 choses.
1/ Commencer par ajouter à chaque "Location: index.php?page=login" un "&test=1" où vous changerez cette valeur afin de savoir d'où viens la redirection.
2/ Si vous ne trouvez pas, faites un "die("ici_une_infos"); et tester le cheminement de votre script pour comprendre par où passe le script.

Carouge10, il y a 11 ans

Pour votre fonction verifier_combinais.....
quel est l'utilité de passer des paramètres si vous ne les utiliser pas ?

Agop, il y a 11 ans

Quand j'ajoute un die("ici_une_infos"); à mon login.php

<?php if(isset($_POST['submit'])) { if(empty($_POST['identifiant'])) { $errors[]="Veuillez saisir votre identifiant"; } if(empty($_POST['password'])) { $errors[]="Veuillez saisir votre password"; } if(!empty($errors)) { foreach($errors as $error) { echo"<div class='error'>".$error."</div>"; } }else{ if(verifier_combinaison_identifiant_password($_POST['identifiant'],$_POST['password'])==0) { echo"<div class='error'>Identifiant ou password incorrect</div>"; }else{ $_SESSION['identifiant']=$_POST['identifiant']; header("Location:index.php?page=membre");die("ici_une_infos"); } } } ?>

Une fois le bon identifiant et password tapez je suis redirigé vers une page avec ici_une_infos

Carouge10, il y a 11 ans

Donc vous passez bien par la page membre.
Continuer sur la page membre.php avec la méthode du die();

Pour info: revoyer votre fonction verifier_comb... car elle n'est pas correcte. (cf mon post précédent)

Pourquoi faire une redirection vers la page membre si le $_SESSION['identifiant'] n'existe pas ?

Agop, il y a 11 ans

Je pense que ma fonction vérifier_comb... est bonne puisqu'elle fonctionne et m'informe bien que le couple ID MDP est incorrect
J'ai aussi une page membre.func.php

<?php function infos_membre_connecte() { $infos=array(); $identifiant=$_SESSION['identifiant']; $query=mysql_query("SELECT*FROM utilisateurs WHERE identifiant='$identifiant'"); while($row=mysql_fetch_assoc($query)) { $infos[]=$row; } return $infos; } ?>

Je n'arrive toujours pas a me rediriger vers membre.php une fois le bon ID et MDR saisi,
Est-ce que cela peut être dû à problème de boucle de redirection?

Carouge10, il y a 11 ans

Je n'ai pas dit qu'elle ne fonctionnait pas, j'ai dit qu'elle n'est pas correcte. Qu'elle est l'utilité de passé de variables en paramètre si vous ne les utiliser pas ?

Essayer ceci pour votre page membre :

<div class='header'> <?php $infos = infos_membre_connecte(); foreach($infos as $info) { echo"Bienvenue ".$info['identifiant']; } if(!isset($_SESSION['identifiant'])) { die("Pas de session identifiant"); } else { die("Session identifiant détecté"); } ?> <p><a href='index.php?page=logout'>Se déconnecter</a></p> </div>
Agop, il y a 11 ans

Merci de votre aide,
j'ai inséré votre code et cela me donne le même résultat est-il possible de redirigé ma requête en javascript?

Agop, il y a 11 ans

Voici la Solution que j'ai trouvé pour le rediriger vers la page membre lorsque l'identifiant et le password sont correct.

<?php if(isset($_POST['submit'])) { if(empty($_POST['identifiant'])) { $errors[]="Veuillez saisir votre identifiant"; } if(empty($_POST['password'])) { $errors[]="Veuillez saisir votre password"; } if(!empty($errors)) { foreach($errors as $error) { echo"<div class='error'>".$error."</div>"; } }else{ if(verifier_combinaison_identifiant_password($_POST['identifiant'],$_POST['password'])==0) { echo"<div class='error'>Identifiant ou password incorrect</div>"; }else{ $_SESSION['identifiant']=$_POST['identifiant']; die("<meta http-equiv=\"refresh\" content=\"0; index.php?page=membre\">"); } } } ?>

Et cela fonctionne! Est-ce une solution correct?

Carouge10, il y a 11 ans

remplacer le die par un header et cela sera correcte.

Agop, il y a 11 ans

Très bien merci !!