par
Cyrano » 13 sept. 2007, 20:54
Sois discipliné dans ta manière de coder et tu auras moins de mal à débugguer.
Petit ménage : le second script définissant si la variable $member doit être à true ou false :
<?php
session_start();
$member = (empty($_SESSION["iduser"]) || empty($_SESSION["pseudo"])) ? false : true;
?>
Tu noteras qu'on évite les short_open_tag(). D'après ton phpinfo, ce n'est pas indispensable, mais c'est une sécurité de plus.
Et on VIRE le "@" devant le session_start() : s'il y a une erreur, il faut la voir et le savoir pour la corriger, pas la masquer avec un cache-misère.
Le premier script maintenant : on aligne le code proprement et on oublie pas de relancer aussi la session. Et on vire les balises <code> qui n'on pas grand chose à faire là :
<?php
session_start();
$pseudo = htmlentities($_POST["pseudo"]);
$mdp = htmlentities($_POST["mdp"]);
$affichagetitre = "Connection de l'utilisateur";
$requete="SELECT * FROM user WHERE login = '".$pseudo."'"; // requête
$result = mysql_query($requete, $connection) or die($requete . " - " . mysql_error());
//si la requête s'est bien passée
if(mysql_num_rows($result) > 0)
{
while($data = mysql_fetch_array($result))
{
if ($data['mdp'] == $mdp)
{
$_SESSION['pseudo'] = $data['login'];
$_SESSION['iduser'] = $data['id'];
if ($data['admin'] == "true")
{
$_SESSION['admin'] = true;
}
$today = date("j/n/Y - H:i:s");
$requete = "UPDATE `user` SET `derniereconnect` = '".$today."' WHERE id = '".$_SESSION['iduser']."'";
$result = mysql_query($requete, $connection) or die($requete . " - " . mysql_error());
$affichage = "<br> <br> Vous voila maintenent connecter sur ".$_SESSION['pseudo'].".";
$connecteformhide = false;
$member = true;
}
else
{
$affichage = "Mot de passe non valide";
}
}
}
else
{
$affichage = "Nom d'utilisateur non valide";
}
?>
<meta http-equiv="refresh" content="5;URL=accueil.astucepourtous.html" />
Petit détail : on met
$var = true et non
$var = "true" : c'est un booléen, pas une chaine de caractère. Le seul auquel j'ai laissé les guillemets, c'est celui en provenance de la base de données.
Teste déjà ça.
Sois discipliné dans ta manière de coder et tu auras moins de mal à débugguer.
Petit ménage : le second script définissant si la variable $member doit être à true ou false :
[php]<?php
session_start();
$member = (empty($_SESSION["iduser"]) || empty($_SESSION["pseudo"])) ? false : true;
?>[/php]
Tu noteras qu'on évite les short_open_tag(). D'après ton phpinfo, ce n'est pas indispensable, mais c'est une sécurité de plus.
Et on VIRE le "@" devant le session_start() : s'il y a une erreur, il faut la voir et le savoir pour la corriger, pas la masquer avec un cache-misère.
Le premier script maintenant : on aligne le code proprement et on oublie pas de relancer aussi la session. Et on vire les balises <code> qui n'on pas grand chose à faire là :
[php]<?php
session_start();
$pseudo = htmlentities($_POST["pseudo"]);
$mdp = htmlentities($_POST["mdp"]);
$affichagetitre = "Connection de l'utilisateur";
$requete="SELECT * FROM user WHERE login = '".$pseudo."'"; // requête
$result = mysql_query($requete, $connection) or die($requete . " - " . mysql_error());
//si la requête s'est bien passée
if(mysql_num_rows($result) > 0)
{
while($data = mysql_fetch_array($result))
{
if ($data['mdp'] == $mdp)
{
$_SESSION['pseudo'] = $data['login'];
$_SESSION['iduser'] = $data['id'];
if ($data['admin'] == "true")
{
$_SESSION['admin'] = true;
}
$today = date("j/n/Y - H:i:s");
$requete = "UPDATE `user` SET `derniereconnect` = '".$today."' WHERE id = '".$_SESSION['iduser']."'";
$result = mysql_query($requete, $connection) or die($requete . " - " . mysql_error());
$affichage = "<br> <br> Vous voila maintenent connecter sur ".$_SESSION['pseudo'].".";
$connecteformhide = false;
$member = true;
}
else
{
$affichage = "Mot de passe non valide";
}
}
}
else
{
$affichage = "Nom d'utilisateur non valide";
}
?>
<meta http-equiv="refresh" content="5;URL=accueil.astucepourtous.html" />[/php]
Petit détail : on met [i]$var = true[/i] et non [i]$var = "true"[/i] : c'est un booléen, pas une chaine de caractère. Le seul auquel j'ai laissé les guillemets, c'est celui en provenance de la base de données.
Teste déjà ça.