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;
}
?>
Bonjour,
Mettez un espace après Location:
header("Location: index.php?page=membre");
Avez-vous un message d'erreur ?
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
La page login est rechergé ou rien ne se passe ?
Puis-je avoir le formulaire de connexion ?
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>
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');
?>
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.
Pour votre fonction verifier_combinais.....
quel est l'utilité de passer des paramètres si vous ne les utiliser pas ?
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
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 ?
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?
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>
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?
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?