Avis sur mon espace membre

rids -  
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();
}

}

?>
A voir également:

2 réponses

avion-f16 Messages postés 19268 Date d'inscription   Statut Contributeur Dernière intervention   4 511
 
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.
$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();
	}
}
?>
1
rids
 
Merci pour tes conseils
je vais regarder qu'est une PDO car je connais pas
0
avion-f16 Messages postés 19268 Date d'inscription   Statut Contributeur Dernière intervention   4 511
 
PDO est une classe qui permet d'accèder aux bases de données.
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
0
Profil bloqué
 
Le gros copié-collé !

A priori c'est bon, après je n'ai pas testé.
-1
rids
 
c'est pas un copié collé
je me suis inspiré de plusieurs tuto et j'ai fait des modification personnel c'est pour ça que je demande conseil.
0