Dans le cadre d'un forum scientifique j'ai décidé de me mettre au PHP mais sous PDO, du coup j'aurai voulu avoir vos avis sur ma façon de coder, la syntaxe des requête ou encore les possibles critiques d'un point de vue sécurité sur mes pages.
Je me permets donc de vous laisser ma première page, une page toute simple, la page d'inscription, elle est fonctionnelle je voudrais juste savoir si on peut l'améliorer en PDO php :
<?php session_start();
include_once("includes/connect.php");
include_once("includes/cookieconnect.php");
?>
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<title></title>
<meta name="" content="">
<link rel="stylesheet" type="text/css" href="">
<link rel="icon" type="image/png" href="" />
</head>
<body>
<div>
<?php
if(isset($_POST['register']))
{
$pseudo = $_POST['pseudo'];
$mail = $_POST['mail'];
$mdp = sha1($_POST['mdp']);
if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mdp']))
{
$pseudolength = strlen($pseudo);
if($pseudolength <= 25)
{
if(filter_var($mail, FILTER_VALIDATE_EMAIL))
{
$reqmail = $bdd->prepare('SELECT * FROM utilisateurs WHERE mail = :mail');
$reqmail->execute(array(
'mail' => $mail
));
$mailexist = $reqmail->rowCount();
if($mailexist == 0)
{
$reqpseudo = $bdd->prepare('SELECT * FROM utilisateurs WHERE pseudo = :pseudo');
$reqpseudo->execute(array(
'pseudo' => $pseudo
));
$pseudoexist = $reqpseudo->rowCount();
if($pseudoexist == 0)
{
$insertmbr = $bdd->prepare('INSERT INTO utilisateurs (pseudo, mail, mdp, avatar, date_inscription) VALUES(:pseudo, :mail, :mdp, :avatar, now())');
$insertmbr->execute(array(
'pseudo' => $pseudo,
'mdp' => $mdp,
'mail' => $mail,
'avatar' => "default.jpg"
));
$lastInsertId = $bdd->lastInsertId();
header("location:index.php?id_user='.$lastInsertId.");
}
else
{
$erreur = "pseudo déjà utilisée !";
}
}
else
{
$erreur = "Adresse mail déjà utilisée !";
}
}
else
{
$erreur = "Votre adresse mail n'est pas valide !";
}
}
else
{
$erreur = "Votre pseudo ne doit pas dépasser 25 caractères !";
}
}
else
{
$erreur = "Tous les champs doivent être complétés !";
}
}
?>
<form action="register.php" method="POST">
<input type='text' name='pseudo' placeholder='Pseudo'/>
<input type='mail' name='mail' placeholder='Adresse mail'/>
<input type='mdp' name='mdp' placeholder='Mot de passe'/>
<input type='submit' name='register' value="S'enregister" />
</form>
<?php
if(isset($erreur))
{
echo "<p class='content_error'>".$erreur."</p>";
}
?>
</div>
</body>
</html>
On m'a typiquement parlé des binds comme ce genre de syntaxe de requête vous en pensez quoi ?$insertmbr = $bdd->prepare('INSERT INTO utilisateurs (pseudo, mail, mdp, avatar, date_inscription) VALUES(:pseudo, :mail, :mdp, :avatar, now())');
$insertmbr->bindParam(':pseudo',$pseudo,PDO::PARAM_STR);
$insertmbr->bindParam(':mail',$mail,PDO::PARAM_STR);
$insertmbr->bindParam(':mdp',$mdp,PDO::PARAM_STR,40);
$insertmbr->bindParam(':avatar','default.jpg',PDO::PARAM_STR,11);
$insertmbr->execute();
Merci à vous,AlexCode