Avis sur mon espace membre
rids
-
avion-f16 Messages postés 19268 Date d'inscription Statut Contributeur Dernière intervention -
avion-f16 Messages postés 19268 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
c'est le premier espace membre que je crée et je voudrai avoir votre avis sur sa fonctionnalité et sa sécurité.
Merci de votre aide
connect.php
<?php
session_start();
include ('connect.php'); // identifiant bdd
if( (!empty($_POST['pseudo'])) AND (!empty($_POST['mdp'])) )
{
//on recupere les post du formulaire
$pseudo=strip_tags($_POST['pseudo']);
$mdpa=strip_tags($_POST['mdp']);
$rep = mysql_query("SELECT mdp FROM membre WHERE pseudo='$pseudo'")or die('Erreur Connexion ');
$data = mysql_fetch_assoc($rep);
if($data['mdp'] != $mdpa)
{
header ('Location: connection2.php');
exit();
}
else
{
$rep2=mysql_query("SELECT * FROM membre");
while ($data2=mysql_fetch_array($rep2))
{
$idm=$data2['id'];
}
$_SESSION['idm'] = $idm;
$_SESSION['pseudo'] = $pseudo;
$cle=rand(1000000, 9999999));
setcookie('cfpseudo',$pseudo,time()+7200);
setcookie('cfcle',$cle,time()+7200);
mysql_query("UPDATE membre SET cle='$cle' WHERE pseudo='$pseudo'");
header ('Location: pageprive.php');
}
}
else
{
header ('Location: connection2.php');
exit();
}
?>
page protgé.php
<?php
session_start();
include ('connect.php'); //identifiant
if((!isset($_SESSION['pseudo'])) AND (!isset($_COOKIE['cfpseudo'])) AND (!isset($_COOKIE['cfcle'])))
{
echo 'Vous n\'êtes pas autorisé à acceder à cette zone';
header ('Location: index.php');
exit();
}
$reponse=mysql_query("SELECT * FROM membre");
while ($data=mysql_fetch_array($reponse))
{
$bcle=$data['cle'];
$bpseudo=$data['pseudo'];
$bidm=$data['id'];
if ((isset($_SESSION['pseudo'])) AND ((isset($_COOKIE['cfpseudo'])) AND (isset($_COOKIE['cfcle']))))
{
if ((isset($_SESSION['pseudo'])) AND ($_SESSION['idm']==$bidm))
{
$sespeudo=$_SESSION['pseudo'];
$sesidm=$_SESSION['idm'];
$verifses=1;
}
else
{
$verifses=0;
}
if ((isset($_COOKIE['cfpseudo'])) AND (isset($_COOKIE['cfcle'])))
{
$cokpseudo=$_COOKIE["cfpseudo"] ;
$cokcle=$_COOKIE["cfcle"] ;
$verifcok=1;
}
else
{
$verifcok=0;
}
if (($bpseudo==$cokpseudo) AND ($bpseudo==$sespeudo) AND ($bcle==$cokcle) AND ($verifses=1) AND ($verifcok=1) AND ($bidm==$sesidm))
{
///// site
}
}
else
{
header ('Location: index.php');
exit();
}
}
?>
c'est le premier espace membre que je crée et je voudrai avoir votre avis sur sa fonctionnalité et sa sécurité.
Merci de votre aide
connect.php
<?php
session_start();
include ('connect.php'); // identifiant bdd
if( (!empty($_POST['pseudo'])) AND (!empty($_POST['mdp'])) )
{
//on recupere les post du formulaire
$pseudo=strip_tags($_POST['pseudo']);
$mdpa=strip_tags($_POST['mdp']);
$rep = mysql_query("SELECT mdp FROM membre WHERE pseudo='$pseudo'")or die('Erreur Connexion ');
$data = mysql_fetch_assoc($rep);
if($data['mdp'] != $mdpa)
{
header ('Location: connection2.php');
exit();
}
else
{
$rep2=mysql_query("SELECT * FROM membre");
while ($data2=mysql_fetch_array($rep2))
{
$idm=$data2['id'];
}
$_SESSION['idm'] = $idm;
$_SESSION['pseudo'] = $pseudo;
$cle=rand(1000000, 9999999));
setcookie('cfpseudo',$pseudo,time()+7200);
setcookie('cfcle',$cle,time()+7200);
mysql_query("UPDATE membre SET cle='$cle' WHERE pseudo='$pseudo'");
header ('Location: pageprive.php');
}
}
else
{
header ('Location: connection2.php');
exit();
}
?>
page protgé.php
<?php
session_start();
include ('connect.php'); //identifiant
if((!isset($_SESSION['pseudo'])) AND (!isset($_COOKIE['cfpseudo'])) AND (!isset($_COOKIE['cfcle'])))
{
echo 'Vous n\'êtes pas autorisé à acceder à cette zone';
header ('Location: index.php');
exit();
}
$reponse=mysql_query("SELECT * FROM membre");
while ($data=mysql_fetch_array($reponse))
{
$bcle=$data['cle'];
$bpseudo=$data['pseudo'];
$bidm=$data['id'];
if ((isset($_SESSION['pseudo'])) AND ((isset($_COOKIE['cfpseudo'])) AND (isset($_COOKIE['cfcle']))))
{
if ((isset($_SESSION['pseudo'])) AND ($_SESSION['idm']==$bidm))
{
$sespeudo=$_SESSION['pseudo'];
$sesidm=$_SESSION['idm'];
$verifses=1;
}
else
{
$verifses=0;
}
if ((isset($_COOKIE['cfpseudo'])) AND (isset($_COOKIE['cfcle'])))
{
$cokpseudo=$_COOKIE["cfpseudo"] ;
$cokcle=$_COOKIE["cfcle"] ;
$verifcok=1;
}
else
{
$verifcok=0;
}
if (($bpseudo==$cokpseudo) AND ($bpseudo==$sespeudo) AND ($bcle==$cokcle) AND ($verifses=1) AND ($verifcok=1) AND ($bidm==$sesidm))
{
///// site
}
}
else
{
header ('Location: index.php');
exit();
}
}
?>
A voir également:
- Avis sur mon espace membre
- Espace insécable word - Guide
- Espace de stockage gmail plein - Guide
- Membre indisponible vinted - Guide
- Espace de stockage - Guide
- Code ascii espace - Guide
2 réponses
Tu ne sécurises pas tes variables POST contre les injections SQL.
J'utilise plutôt la fonction strip_tags (ou similaire : htmlspecialchars, htmlentities) lors de l'affichage des données, pas à l'enregistrement.
L'utilisation de PDO ne serait pas de refus.
Voilà +/- comment je procède :
J'utilise plutôt la fonction strip_tags (ou similaire : htmlspecialchars, htmlentities) lors de l'affichage des données, pas à l'enregistrement.
$rep2 = mysql_query("SELECT * FROM membre");
while ($data2=mysql_fetch_array($rep2)) {
$idm=$data2['id'];
}
$_SESSION['idm'] = $idm;
$_SESSION['pseudo'] = $pseudo;Dans ce script, tu récupères l'ID du dernier membre. Perso, je récupère l'id en même temps que le mot de passe, ainsi, une requête SQL suffit.
L'utilisation de PDO ne serait pas de refus.
Voilà +/- comment je procède :
<?php
session_start();
if(isset($_SESSION['id'])) {
echo 'Vous êtes déjà connecté';
} else {
if(!empty($_POST['login']) && !empty($_POST['password'])) {
$pdo = new PDO('mysql:host=localhost;dbname=ta_base','root','');
$sql = 'SELECT id, password FROM membres WHERE login = '.$pdo->quote($_POST['login']);
$req = $pdo->query($sql);
$membre = $req->fetch(PDO::FETCH_OBJ);
if($req->rowCount() > 0) {
if($membre->password == md5($_POST['password'])) {
$_SESSION['id'] = $membre->id;
header('Location: profil.php');
} else {
echo 'Le mot de passe est invalide.';
}
} else {
echo 'Le membre « '.$_POST['login'].' » n\'existe pas.';
}
} else {
afficherFormulaire();
}
}
?>
je vais regarder qu'est une PDO car je connais pas
C'est lui qui remplacera les fonctions « mysql_ » dans les futures versions de PHP.
https://www.commentcamarche.net/faq/27489-pdo-une-autre-facon-d-acceder-a-vos-bases-de-donnees