par
Ikbal » 29 déc. 2021, 11:55
Bonjour, Bonsoir
Je réalise un site et j'en suis à la page d'édition des profils. Mon soucis est que j'ai réalisé mon code en partant d'un que j'avais utilisé y a biiiien longtemps et qui fonctionnait mais qui était limité dans les actions (ne vérifier pas si le nouveau pseudo est déjà existant, de même pour le mail) et un autre gros soucis était que l'ancien code effectuait les mises à jour dans la base de données dès qu'au moins le pseudo ou le mail était changé mais ne prenait pas en compte la condition que j'avais mise pour tester si le nouveau mdp avec le mdp de confirmation sont identiques.
Voilà le code que j'utilise actuellement, il n'y a pas d'erreur lors de l'exécution mais ma bdd reste inchangée.
<?php
session_start();
include("pdo.php");
if(isset($_SESSION['id'])) {
$requser = $bdd->prepare("SELECT * FROM membres WHERE id = ?");
$requser->execute(array($_SESSION['id']));
$user = $requser->fetch();
if(isset($_POST['newpseudo']) AND !empty($_POST['newpseudo']) AND $_POST['newpseudo'] != $user['pseudo'])
{
$newpseudo = htmlspecialchars($_POST['newpseudo']);
if(isset($_POST['newmail']) AND !empty($_POST['newmail']) AND $_POST['newmail'] != $user['mail'])
{
$newmail = htmlspecialchars($_POST['newmail']);
if(isset($_POST['newmdp1']) AND !empty($_POST['newmdp1']) AND isset($_POST['newmdp2']) AND !empty($_POST['newmdp2']))
{
$mdp1 = sha1($_POST['newmdp1']);
$mdp2 = sha1($_POST['newmdp2']);
$reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
$reqmail->execute(array($mail));
$mailexist = $reqmail->rowCount();
$reqpseudo = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ?");
$reqpseudo->execute(array($pseudo));
$pseudoexist = $reqpseudo->rowCount();
if($pseudoexist == 0){
if($mailexist == 0){
if($mdp1 == $mdp2)
{
$insertpseudo = $bdd->prepare("UPDATE membres SET pseudo = ? WHERE id = ?");
$insertpseudo->execute(array($newpseudo, $_SESSION['id']));
$insertmail = $bdd->prepare("UPDATE membres SET mail = ? WHERE id = ?");
$insertmail->execute(array($newmail, $_SESSION['id']));
$insertmdp = $bdd->prepare("UPDATE membres SET motdepasse = ? WHERE id = ?");
$insertmdp->execute(array($mdp1, $_SESSION['id']));
header('Location: profil.php?id='.$_SESSION['id']);
}else
{
$msg = "Vos deux mdp ne correspondent pas !";
}
}else
{
$msg = "Ce mail est déjà utilisé !";
}
}else
{
$msg = "Ce pseudo est déjà utilisé !";
}
}
}
}
}
?>
Bonjour, Bonsoir
Je réalise un site et j'en suis à la page d'édition des profils. Mon soucis est que j'ai réalisé mon code en partant d'un que j'avais utilisé y a biiiien longtemps et qui fonctionnait mais qui était limité dans les actions (ne vérifier pas si le nouveau pseudo est déjà existant, de même pour le mail) et un autre gros soucis était que l'ancien code effectuait les mises à jour dans la base de données dès qu'au moins le pseudo ou le mail était changé mais ne prenait pas en compte la condition que j'avais mise pour tester si le nouveau mdp avec le mdp de confirmation sont identiques.
Voilà le code que j'utilise actuellement, il n'y a pas d'erreur lors de l'exécution mais ma bdd reste inchangée.
[PHP]<?php
session_start();
include("pdo.php");
if(isset($_SESSION['id'])) {
$requser = $bdd->prepare("SELECT * FROM membres WHERE id = ?");
$requser->execute(array($_SESSION['id']));
$user = $requser->fetch();
if(isset($_POST['newpseudo']) AND !empty($_POST['newpseudo']) AND $_POST['newpseudo'] != $user['pseudo'])
{
$newpseudo = htmlspecialchars($_POST['newpseudo']);
if(isset($_POST['newmail']) AND !empty($_POST['newmail']) AND $_POST['newmail'] != $user['mail'])
{
$newmail = htmlspecialchars($_POST['newmail']);
if(isset($_POST['newmdp1']) AND !empty($_POST['newmdp1']) AND isset($_POST['newmdp2']) AND !empty($_POST['newmdp2']))
{
$mdp1 = sha1($_POST['newmdp1']);
$mdp2 = sha1($_POST['newmdp2']);
$reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
$reqmail->execute(array($mail));
$mailexist = $reqmail->rowCount();
$reqpseudo = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ?");
$reqpseudo->execute(array($pseudo));
$pseudoexist = $reqpseudo->rowCount();
if($pseudoexist == 0){
if($mailexist == 0){
if($mdp1 == $mdp2)
{
$insertpseudo = $bdd->prepare("UPDATE membres SET pseudo = ? WHERE id = ?");
$insertpseudo->execute(array($newpseudo, $_SESSION['id']));
$insertmail = $bdd->prepare("UPDATE membres SET mail = ? WHERE id = ?");
$insertmail->execute(array($newmail, $_SESSION['id']));
$insertmdp = $bdd->prepare("UPDATE membres SET motdepasse = ? WHERE id = ?");
$insertmdp->execute(array($mdp1, $_SESSION['id']));
header('Location: profil.php?id='.$_SESSION['id']);
}else
{
$msg = "Vos deux mdp ne correspondent pas !";
}
}else
{
$msg = "Ce mail est déjà utilisé !";
}
}else
{
$msg = "Ce pseudo est déjà utilisé !";
}
}
}
}
}
?>
[/PHP]