Securite du membre

xsega -  
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   -
bonjour
j ai creer une page d inscription mais seulement j aimerais faire a ce que plusieurs personnes n ont pas le meme nom dans la base de donnes voici mon code inscription.php
<?php

$bdd = new pdo('mysql:host=localhost;dbname=espace_membre', 'root', '');
if(isset($_POST['forminscription']))
{

$nom = htmlspecialchars($_POST['nom']);
$mail = htmlspecialchars($_POST['mail']);
$mail2 = htmlspecialchars($_POST['mail2']);
$mdp = sha1($_POST['mdp']);
$mdp2 = sha1($_POST['mdp2']);
if(!empty($_POST['nom']) AND !empty($_POST['mail']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']))
{
$nomlength = strlen($nom);
if($nomlength <= 250)
{
if($mail == $mail2)
{
if(filter_var($mail, FILTER_VALIDATE_EMAIL))
{
$reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
$reqmail->execute(array($mail));
$mailexist = $reqmail->rowCount();
if($mailexist == 0)
{
if($mdp == $mdp2)
{
$insertmbr = $bdd->prepare("INSERT INTO membres(Nom, mail, motdepasse) VALUES(?, ?, ?)");
$insertmbr->execute (array($nom, $mail, $mdp));
$erreur = "votre compte a bien été crée ! <a href=\"index.php\">Me connecter</a>";

}
else
{
$erreur = " Vos mots de passes ne sont pas identiques !";
}
}
else
{
$erreur = "Ce Nom est utilisée par une autre personne !";
}
}
else
{
$erreur = "Votre Adresse e-mail n'est pas valide!";
}
}
else
{
$erreur = "Vos adresses e-mails ne correspondent pas!";
}
}
else
{
$erreur = "Votre Nom ne doit pas dépasser 250 caracteres!";
}
}
else
{
$erreur = "Veuillez remplir tous les champs!";
}
}
?>
<html>
<head>
<title>Wotrom.com</title>
<meta charset="utf-8">
</head>
<body background="photo.png">
<div align="center">
<h2>Inscription</h2>
<br>
<form method="POST"action="">
<table>
<tr>
<td align="right">
<label for="NOM">NOM:</label>
</td>
<td align="right">
<input type="text" placeholder="Entrez votre Nom" id="nom" name="nom" face="Harlow Solid Italic" value="<?php if(isset($NOM)) { echo $NOM; } ?>" />
</td>
</tr>
<tr>
<td align="right">
<label for="Prénom">Prénom:</label>
</td>
<td align="right">
<input type="text" placeholder="Entrez votre Prénom" id="prénom" name="prénom" face="Harlow Solid Italic" value="<?php if(isset($Prénom)) { echo $Prénom; } ?>" />
</td>
</tr>
<tr>
<td align="right">
<label for="Mail">Mail:</label>
</td>
<td align="right">
<input type="email" placeholder="Entrez votre adresse e-mail" id="mail" name="mail" face="Harlow Solid Italic" value="<?php if(isset($Mail)) { echo $Mail; } ?>" />
</td>
</tr>
<tr>
<td align="right">
<label for="Mail">Confirmation du mail:</label>
</td>
<td align="right">
<input type="email" placeholder="Confirmez l'adresse e-mail" id="mail2" name="mail2" face="Harlow Solid Italic" value="<?php if(isset($Mail2)) { echo $Mail2; } ?>" />
</td>
</tr>
<tr>
<td align="right">
<label for="mdp">Mot de passe:</label>
</td>
<td align="right">
<input type="password" placeholder="Entrez le mot de passe" id="mdp" name="mdp" face="Harlow Solid Italic" />
</td>
</tr>
<tr>
<td align="right">
<label for="mdp2">Confirmez votre Mot de passe:</label>
</td>
<td align="right">
<input type="password" placeholder="Confirmez le mot de passe" id="mdp2" name="mdp2" face="Harlow Solid Italic" />
</td>
</tr>
<tr>
<td></td>
<td align="center">
</br>
<input type="submit" name="forminscription" value="Inscription">
<input type="reset" value="Annuler">
</td>
</tr>
</table>
</form>
<?php
if(isset($erreur))
{
echo '<font color="orange" face="sitka Small">' .$erreur.'</font>';
}
?>
</div>
</body>
</html>
svp aidez moi à résoudre mon probleme

2 réponses

Utilisateur anonyme
 
Peux-tu décrire ton problème car j'ai rien pu comprendre ?
0
bg62 Messages postés 23732 Date d'inscription   Statut Modérateur Dernière intervention   2 409
 
idem !!!
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Salut,

Il suffit d'effectuer une recherche SQL pour compter le nombre d'entrées avec le nom fourni via le formulaire.

En fait tu fais déjà la même vérification pour l'adresse email, il suffit de reproduire la procédure pour le nom.

Pense à prêter attention au fait que le moteur de bases de données peut être sensible à la casse.
Lors de ta requête SQL, je te conseille donc de mettre $nom en minuscules et à effectuer la recherche sur les champs SQL "nom" aussi en minuscules.

Par exemple :
<?php
// ...
$reqnom = $bdd->prepare("SELECT * FROM membres WHERE LOWER(nom) = ?"); 
$reqnom->execute(array(strtolower($nom))); 
$nomexist = $reqnom->rowCount(); 

if($nomexist == 0) {
    // Suite du code (jusqu'au INSERT)
} else {
    $erreur = "Ce nom est déjà utilisé"; 
}
0