OVH Cloud OVH Cloud

Authentification + redirection

1 réponse
Avatar
itgraphics
salut a tous,
j'ai un pt'it probleme de session. j'ai repris le script d'espace membres de
webmaster.net et je veux le remettre a ma sauce. ds ma bdd j'ai 3 champs
pseudo, mdp, redirection. l'objectif est que pour chaque pseudo reference
dans ma bdd, j'arrive a un dossier precis avec le chemin precise dans la
base.
merci d'avance pour votre aide
tom
Voici mon code :

<?php
if(isset($pseudo) & !empty($pseudo) & isset($mdp) & !empty($mdp))
{

$pseudo=($_POST[pseudo]);
$mdp=($_POST[mdp]);
$redirection=$row['redirection'];
connecter();
$query="SELECT * FROM membres";
$result=@mysql_query($query);
$num=@mysql_num_rows($result);
$row=@mysql_fetch_row($result);
if($num==0){
echo "<br><br><center><font color='#990000'>Erreur ce pseudo (et/ou mot de
passe) est incorrect!</font></center><br>";
}
else{




$_SESSION['pseudo']=$pseudo;
$_SESSION['mdp']=$mdp;
$_SESSION['redirection']=$redirection;

echo "Connexion Ètablie...";
echo "<script
language='javascript'>document.location='['redirection']'</script>";
}
}
?>
<form action="espace_membre.php?page=1" method="post">
<table align="center" class="texte">
<tr><td>Pseudo : </td><tD><input type="text" name="pseudo"></tD></tr>
<tr><td>Mot de passe : </td><tD><input type="password" name="mdp"></tD></tr>
<tr><td><div align="center"><a href="espace_membre.php?page=6"><font
size="1">
Mot dePasse oubliÈ ?</font></a></div></tD></tr>
<tr><tD colspan="2" align="center"><input type="submit"
value="Envoyer"></tD></tr>
</table>
</form>

1 réponse

Avatar
Jedi121
itgraphics a exposé le 25/03/2005 :
salut a tous,
Bonjour,


j'ai un pt'it probleme de session. j'ai repris le script d'espace membres de
webmaster.net et je veux le remettre a ma sauce. ds ma bdd j'ai 3 champs
Bizarre parce que le code présenté n'est pas génial... voir plus bas...


pseudo, mdp, redirection. l'objectif est que pour chaque pseudo reference
dans ma bdd, j'arrive a un dossier precis avec le chemin precise dans la
base.
OK pour le principe.


Voici mon code :
<?php
if(isset($pseudo) & !empty($pseudo) & isset($mdp) & !empty($mdp))
{

$pseudo=($_POST[pseudo]);
$mdp=($_POST[mdp]);
Ca commence bizarrement, tu vérifies l'existence non vide de variables

que tu réassignes ensuite...
Ton test devrait-être à mon avis
if (isset($_POST[pseudo] & !empty($_POST[pseudo]) & isset($_POST[mdp])
& !empty($_POST[mdp]) {

$redirection=$row['redirection'];
Le tableau $row n'est pas initialisé ici...


connecter();
$query="SELECT * FROM membres";
Pourquoi prendre toute la table? La recherche du pseudo/mdp demandé

suffit $sql = "SELECT * FROM membres WHERE pseudo='$pseudo' AND
mdp='$mdp'";

$result=@mysql_query($query);
$num=@mysql_num_rows($result);
$row=@mysql_fetch_row($result);
Tiens on définit enfin $row[]...


if($num==0){
echo "<br><br><center><font color='#990000'>Erreur ce pseudo (et/ou mot de
passe) est incorrect!</font></center><br>";
}
else{




Il manque ici un session_start(); sinon pas de session...

$_SESSION['pseudo']=$pseudo;
$_SESSION['mdp']=$mdp;
$_SESSION['redirection']=$redirection;

echo "Connexion Ètablie...";
echo "<script
language='javascript'>document.location='['redirection']'</script>";
}
}
?>
<form action="espace_membre.php?page=1" method="post">
<table align="center" class="texte">
<tr><td>Pseudo : </td><tD><input type="text" name="pseudo"></tD></tr>
<tr><td>Mot de passe : </td><tD><input type="password" name="mdp"></tD></tr>
<tr><td><div align="center"><a href="espace_membre.php?page=6"><font
size="1">
Mot dePasse oubliÈ ?</font></a></div></tD></tr>
<tr><tD colspan="2" align="center"><input type="submit"
value="Envoyer"></tD></tr>
</table>
</form>


Voici donc d'après ton code un exemple plus approchant de ce que tu
veux faire il me semble (pas testé) :
<?php
if (isset($_POST[pseudo] & !empty($_POST[pseudo]) & isset($_POST[mdp])
& !empty($_POST[mdp])
{ // les variables existent, sont non-vides et transmisent par POST
$sql = mysql_query("SELECT * FROM membres WHERE
pseudo='$_POST[pseudo]' AND mdp='$_POST[mdp]'");
// Recherche du couple pseudo/mdp en BdD
if (mysql_num_rows()==1)
{ //On a un gagnant...
$row = mysql_fetch_assoc($sql);
session_start();
$_SESSION[pseudo] = $_POST[pseudo];
$_SESSION[redirection] = $row[redirection];
// on evite de mettre le mdp en SESSION... D'ailleurs on se demande
pourquoi la redirection en SESSION. Le pseudo doit suffire.
echo "Connexion établie.";
echo "<script
language='javascript'>document.location='$row[redirection]'</script>";
} else {
echo "Oups, problème en BdD... Trop de lignes retournées.";
}
}
?>