Bonjour, voilà en faite j'ai fais un système de modification d'information de l'utilisateur, je voudrais savoir si j'utilise la bonne méthode, car celle que j'ai faites fonctionnes, mais je sais pas si c'est la bonne justement.
Je m'explique, j'ai un champs "sexe" que l'utilisateur peut modifier, pour cela il va remplir un formulaire, et donc j'ai le code suivant :
<select name="sexe">
<?php
$req2 = $bdd->prepare("SELECT sexenum FROM
membre, login WHERE membre.id_login = :idsession AND membre.id_login = login.id");
$req2->execute(array('idsession' => $_SESSION['id']));
while($data2 = $req2->fetch())
{
?>
<?php
$req3 = $bdd->prepare("SELECT sexenum, sexelib FROM information_sexe
");
$req3->execute();
while($data3 = $req3->fetch())
{
?>
<?php
if($data2['sexenum'] ==$data3['sexenum'])
{
?>
<option value="<?php echo $data3["sexenum"];?>" selected><?php echo $data3["sexelib"];?></option>
<?php
}
else
{
?>
<option value="<?php echo $data3["sexenum"];?>"><?php echo $data3["sexelib"];?></option>
<?php
}
?>
<?php
}
?>
<?php
}
?>
</select>
J'ai deux tables, une tables ou j'ajoute les sexes et une autre table pour les autres informations genre (prenom, nom).


Ensuite j'ai une petite fonction pour l'affichage des informations du membre :
function affichage_informations_profil()
{
global $bdd;
$query = $bdd->prepare('SELECT membre.prenom, membre.ville, membre.age, login.pseudo, membre.nom, membre.sexenum,
membre.affiche, membre.id_login, membre.connecte, membre.description
FROM membre, login WHERE id_login=:id AND membre.id_login = login.id');
$query->execute(array('id' => $_GET['id']));
return $query->fetchAll();
}
Donc la je récupére le champs qui est dans la table membre correspond à l'utilisateur, et ensuite pour l'afficher je fais comme ça :
<?php
if($profil_information['sexenum'] == 1)
{
?>
Masculin
<?php
}
else if($profil_information['sexenum'] == 2)
{
?>
Féminin
<?php
}
else
{
?>
Non renseigné
<?php
}
?>
Voilà, bon après j'ai la partie traitement, ou je fais une vérification sur le sexe pour bien vérifié que si l'utilisateur fait un inspecté l'ellement sur une value, il m'injecte pas d'autres données.
<?php
if(isset($_SESSION['id']))
{
if(isset($_POST['btninfo']))
{
$prenom = ucfirst(htmlspecialchars($_POST['prenom']));
$nom = ucfirst(htmlspecialchars($_POST['nom']));
$sexe = htmlspecialchars($_POST['sexe']);
$age = htmlspecialchars($_POST['age']);
$ville = htmlspecialchars($_POST['ville']);
if($prenom == true && $nom == true && $age == true )
{
if(!is_numeric($ville))
{
if($age >= 13 AND $age <=100 AND $sexe >=0 AND $sexe <= 2)
{
if(is_numeric($age))
{
if(strlen($prenom) < 10 && strlen($prenom) > 2 && strlen($nom) < 10 && strlen($nom) > 2 && strlen($ville) < 25)
{
if(preg_match('~[A-Z][a-z]*(-[A-Z][a-z]?)?~', $prenom))
{
if(preg_match('~[A-Z][a-z]*(-[A-Z][a-z]?)?~', $nom))
{
$stmt = $bdd->prepare('UPDATE membre SET prenom = :prenom, nom = :nom, sexenum=:sexe, age = :age, ville =:ville WHERE id_login=:idsession ');
$stmt->execute(array(
':idsession' => $_SESSION['id'],
':prenom' => $prenom,
':nom' => $nom,
':sexe' => $sexe,
':age' => $age,
':ville' => $ville,
));
echo "ok";
}
else echo "erreur";
}
else echo "erreur";
}
else echo "erreur";
}
else echo "erreur";
}
else echo "erreur";
}
else echo "erreur";
}
else echo "erreur";
}
else
{
header('Location: ../index.php');
}
}
else
{
echo "erreur";
}
?>
Donc, voilà j'aimerai savoir si la méthode que j'utilise est correcte, si il y a pas de risque de faille etc. Merci