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 :
$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{
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
$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...
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."; } } ?>
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.
$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...
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.";
}
}
?>
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.
$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...
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."; } } ?>