Votre avis sur mon systéme de session
Hormi
-
Hormi -
Hormi -
Bonjour,
Je vais maitre un petit système de session sur mon site et j'aimerais avoir votre avis sur le le code concernent l'efficacité et aussi la sécurité.
index.php
<html>
<body>
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("compt3");
if (isset($_COOKIE['supercookie2']))
{
$login= mysql_real_escape_string(htmlspecialchars($_COOKIE['supercookie2']));
$reponse = mysql_query("SELECT * FROM t_compt_2 WHERE login='$login'");
$donnees = mysql_fetch_array($reponse);
if ($donnees['statut'] == '1'){
echo '<a>Bonjour </a>';
echo $donnees['pesdo'];
echo '</br><a href ="deco.php">Déconnection</a>';}
else{
echo '<a>Bonjour, vous n\'ete pas connecter ! </a><br/><br/>';
echo '</br><a href ="login.php">Connection</a>';}
}
else{
echo '<a>Bonjour, vous n\'ete pas connecter ! </a><br/><br/>';
echo '</br><a href ="login.php">Connection</a>';
}
?>
</body>
</html>
login.php
<html>
<head>
</head>
<body>
<FORM method="POST" action="actionlog.php">
<P>Login<br>
<input type="text" name="login" value="" size="100" id="login"/>
<br>
</p>
<P>Mot de passe<br>
<input type="password" name="mdp" value="" size="100" MAXLENGTH="8" id="mdp"/>
</p>
<INPUT type="submit" value="Envoyer"/>
</FORM>
</TH>
</body>
</html>
actionlog.php
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("compt3");
$login= mysql_real_escape_string(htmlspecialchars($_POST['login']));
$reponse = mysql_query("SELECT * FROM t_compt_2 WHERE login='$login'");
$donnees = mysql_fetch_array($reponse);
if ($donnees['login'] == $login)
{
echo 'Login OK !<br/><br/> ';
$mdp= mysql_real_escape_string(htmlspecialchars($_POST['mdp']));
if ($donnees['mdp'] == $mdp)
{
echo 'Mot de passe OK !';
mysql_query("UPDATE t_compt_2 set statut='1' WHERE login='$login'");
setCookie("supercookie1",$donnees['pesdo']);
setCookie("supercookie2",$donnees['login']);
header("Refresh: 1; URL=./index.php");
}
else{
echo 'Mot de passe erroné !';
}
}
else
{
echo 'Login ou mot de passe erroné !';
}
?>
deco.php
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("compt3");
$login= mysql_real_escape_string(htmlspecialchars($_COOKIE['supercookie2']));
mysql_query("UPDATE t_compt_2 set statut='0' WHERE login='$login'");
echo '<a>Vous avez été déconnecté !</a>';
header("Refresh: 1; URL=./index.php");
?>
Je vais maitre un petit système de session sur mon site et j'aimerais avoir votre avis sur le le code concernent l'efficacité et aussi la sécurité.
index.php
<html>
<body>
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("compt3");
if (isset($_COOKIE['supercookie2']))
{
$login= mysql_real_escape_string(htmlspecialchars($_COOKIE['supercookie2']));
$reponse = mysql_query("SELECT * FROM t_compt_2 WHERE login='$login'");
$donnees = mysql_fetch_array($reponse);
if ($donnees['statut'] == '1'){
echo '<a>Bonjour </a>';
echo $donnees['pesdo'];
echo '</br><a href ="deco.php">Déconnection</a>';}
else{
echo '<a>Bonjour, vous n\'ete pas connecter ! </a><br/><br/>';
echo '</br><a href ="login.php">Connection</a>';}
}
else{
echo '<a>Bonjour, vous n\'ete pas connecter ! </a><br/><br/>';
echo '</br><a href ="login.php">Connection</a>';
}
?>
</body>
</html>
login.php
<html>
<head>
</head>
<body>
<FORM method="POST" action="actionlog.php">
<P>Login<br>
<input type="text" name="login" value="" size="100" id="login"/>
<br>
</p>
<P>Mot de passe<br>
<input type="password" name="mdp" value="" size="100" MAXLENGTH="8" id="mdp"/>
</p>
<INPUT type="submit" value="Envoyer"/>
</FORM>
</TH>
</body>
</html>
actionlog.php
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("compt3");
$login= mysql_real_escape_string(htmlspecialchars($_POST['login']));
$reponse = mysql_query("SELECT * FROM t_compt_2 WHERE login='$login'");
$donnees = mysql_fetch_array($reponse);
if ($donnees['login'] == $login)
{
echo 'Login OK !<br/><br/> ';
$mdp= mysql_real_escape_string(htmlspecialchars($_POST['mdp']));
if ($donnees['mdp'] == $mdp)
{
echo 'Mot de passe OK !';
mysql_query("UPDATE t_compt_2 set statut='1' WHERE login='$login'");
setCookie("supercookie1",$donnees['pesdo']);
setCookie("supercookie2",$donnees['login']);
header("Refresh: 1; URL=./index.php");
}
else{
echo 'Mot de passe erroné !';
}
}
else
{
echo 'Login ou mot de passe erroné !';
}
?>
deco.php
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("compt3");
$login= mysql_real_escape_string(htmlspecialchars($_COOKIE['supercookie2']));
mysql_query("UPDATE t_compt_2 set statut='0' WHERE login='$login'");
echo '<a>Vous avez été déconnecté !</a>';
header("Refresh: 1; URL=./index.php");
?>
A voir également:
- Votre avis sur mon systéme de session
- Restauration systeme windows 10 - Guide
- Vous avez besoin d'une autorisation de la part de système pour modifier ce dossier - Guide
- Vous devez activer la protection du système sur ce lecteur - Forum Windows
- La zone de données passée à un appel système est insuffisante - Windows 11
- Www.yahoomail.com ouverture de session - Forum Yahoo mail
10 réponses
Ta connexion par cookie est foireuse, en l'état, n'importe qui peut se connecter sur n'importe quel compte.
Pour ta connexion par form, tu ne dois pas indiquer si le login est ok si le mot de passe est faux.
Un mot de passe, ça se hashe, on ne le stocke jamais en clair dans une bdd.
Pourquoi tu utilises htmlspecialchars avant de passer tes variabls dans tes requetes ?
htmlspecialchars ne sert qu'à l'affichage.
C'est quoi la différence entre login et pesdo ?
Pas bien saisi.
Il sert à quoi le second cookie ?
Pour ta connexion par form, tu ne dois pas indiquer si le login est ok si le mot de passe est faux.
Un mot de passe, ça se hashe, on ne le stocke jamais en clair dans une bdd.
Pourquoi tu utilises htmlspecialchars avant de passer tes variabls dans tes requetes ?
htmlspecialchars ne sert qu'à l'affichage.
C'est quoi la différence entre login et pesdo ?
Pas bien saisi.
Il sert à quoi le second cookie ?
bonjour
il y a 2 cookie 1 pour le login et un autre pou le mots de passe
Pour moi un login est un identifien comme un numero de serrie
pseudo = hormi
login = 1524moerfger121
mdp = 13651fve321321
il y a 2 cookie 1 pour le login et un autre pou le mots de passe
Pour moi un login est un identifien comme un numero de serrie
pseudo = hormi
login = 1524moerfger121
mdp = 13651fve321321
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
se système marche chez moi, je voudrais juste un cout de main pour faire mieux et que l'on m'explique les erreurs
Pour la connexion, voici comment tu pourrais faire:
<?php
$login = trim(addslashes($_POST['login']));
$password = md5(trim(addslashes($_POST['password'])));
$sql = 'SELECT id,password FROM membres WHERE login = "'.$login.'"';
$req = mysql_query($sql);
$nb = @mysql_num_rows($req);
if($nb > 0) {
$membre = mysql_fetch_assoc($req);
if($password === $membre['password']) {
echo 'ok';
// ...
} else {
echo 'Mauvais password';
}
} else {
echo 'Login inexistant.';
}
?>
Voilà avec des commentaires :
<?php
// On retirer les espaces au debut et en fin de chaine et on applique déjà addslashes
$login = trim(addslashes($_POST['login']));
$password = md5(trim(addslashes($_POST['password'])));
// SQL : Selectionner l'id (pour le stocker en session après) et
// le mot de passe (hashé en md5, pour le comparer par arpès)
$sql = 'SELECT id,password FROM membres WHERE login = "'.$login.'"';
$req = mysql_query($sql);
// On compte le nombre d'entrée dont le login est $login (cf. la requête).
// Le "@" permet de ne pas afficher d'erreur si il n'y a pas d'erreur.
$nb = @mysql_num_rows($req);
if($nb > 0) {
$membre = mysql_fetch_assoc($req);
if($password === $membre['password']) {
echo 'ok';
// ...
} else {
echo 'Mauvais password';
}
} else {
echo 'Login inexistant.';
}
?>