Edition de profil faire un header avec pseudo

Ce topic a été résolu
mister1610

mister1610 Le 21 février 2019 à 13:53 (Édité le 22 février 2019 à 21:12)

Bonjour à tous,
Je vous explique mon problème en plus détaillé, je veut faire une edition de profil et quand la personne à fini de faire les modification de son profil je voudrais que l'url soit "profil.php?pseudo=son new pseudo".
Quelles que images pour peut être vous éclairer sur mon problème.
Avant de changer de pseudo:


Dans la base de donnée:


Quand j'ai changer le pseudo:

Dans la base de donnée:

Ce que je voudrais dans l'exemple au dessus c'est que au lieu d'avoir écrit :
Mister1610
Je voudrais qu'il y ai écrit :
BillyFlex
Voici le code :


<!-- Partie PHP -->
<?php
// Démarrage de la session
session_start();
// Connexion à la base de donnée
include ('../BDD/BDD.php');
if(isset($_SESSION['pseudo'])) {
   // Selection l'utilisateur dans la bdd
   $requser = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ?");
   $requser->execute(array($_SESSION['pseudo']));
   $user = $requser->fetch();
   if(isset($_POST['newpseudo']) AND !empty($_POST['newpseudo']) AND $_POST['newpseudo'] != $user['pseudo']) {
      $newpseudo = htmlspecialchars($_POST['newpseudo']);
      $insertpseudo = $bdd->prepare("UPDATE membres SET pseudo = ? WHERE id = ?");
      $insertpseudo->execute(array($newpseudo, $_SESSION['id']));
      header("Location: profil.php?pseudo=".$_SESSION['pseudo']);
   }
?>
<!-- Partie HTML -->
<!DOCTYPE html>
<html>
<head>
   <title>Profil de <?php echo $_SESSION['pseudo']; ?> - mister1610</title>
</head>
<body>
   <div id="edit" align="center">
      <h1>Edition du profil</h1>
      <form method="POST" action="">
         <table>
            <tr>
               <td>
                  <label>Pseudo</label>
               </td>
            </tr>
            <tr>
               <td>
                  <input type="text" name="newpseudo" placeholder="Pseudo" value="<?php echo $user['pseudo']; ?>">
               </td>
            </tr>
            <tr>
               <td><br>
                  <label>Adresse mail</label>
               </td>
            </tr>
            <tr>
               <td>
                  <input type="email" name="newmail" placeholder="Adresse mail" value="<?php echo $user['mail']; ?>">
               </td>
            </tr>
            <tr>
               <td><br>
                  <label>Nouveau mot de passe</label>
               </td>
            </tr>
            <tr>
               <td>
                  <input type="password" name="newmdp" placeholder="Mot de passe">
               </td>
            </tr>
            <tr>
               <td><br>
                  <label>Confirmer le mot de passe </label>
               </td>
            </tr>
            <tr>
               <td>
                  <input type="password" name="newmdp1" placeholder="Confirmer mot de passe">
               </td>
            </tr>
            <tr>
               <td>
                  <br>
                  <input type="submit" value="Enregistrer">
               </td>
            </tr>
         </table>
      </form>
   </div>
</body>
</html>
<?php
}
else {
   header("Location: connexion.php");
}
?>
Doppler

Doppler Le 22 février 2019 à 13:05 (Édité le 24 février 2019 à 00:26)

Salut @mister1610

Tu rediriges simplement avec la variable $_POST du champs du nouveau pseudo dans ton formulaire.

Cela devrais ressembler à ceci :

<?php 
//Variable champs input news_pseudo securisee
$newpseudo = htmlspecialchars($_POST['newpseudo']);

//Redirection vers le nouveau pseudo de maniere securisee
header('Location: profil.php?pseudo=' . $newpseudo);
?>
Meilleure réponse
mister1610

mister1610 Le 22 février 2019 à 21:00 (Édité le 22 février 2019 à 21:06)

Je te remercie de ta réponse, c'était vraiment tous simple je chercher trop compliqué mais quand je fait la redirection sa marche niquel mais j'ai plus les liens pour déconnecter ou éditer le profil aurais-tu une solution à me proposée ?
<!-- Partie PHP -->
<?php
// Démarrage de la session
session_start();
// Connexion à la base de donnée
include ('../BDD/BDD.php');
// On regarde si le pseudo est bien identique
if(isset($_GET['pseudo']) == $_SESSION['pseudo']) {
   // Sécurisation de la variable PSEUDO
   $getpseudo = htmlspecialchars($_GET['pseudo']);
   $requser = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ?");
   $requser->execute(array($_GET['pseudo']));
   $userinfo = $requser->fetch();
?>
<!-- Partie HTML -->
<!DOCTYPE html>
<html>
<head>
   <title>Profil de <?php echo $userinfo['pseudo']; ?> - mister1610</title>
</head>
<body>
   <?php
   if(isset($_SESSION['pseudo']) AND $userinfo['pseudo'] == $_SESSION['pseudo']) {
   ?>
      <a href="editionprofil.php">Editer mon profil</a>   
      <a href="deconnexion.php">Se déconnecter</a>
   <?php
   }
   ?>
</body>
</html>
<?php
}
?>
Voici le code pour le profil
mister1610

mister1610 Le 22 février 2019 à 21:12

J'ai trouvé la solution c'est bon merci @VemoTech 
if(isset($_SESSION['pseudo']) AND $userinfo['pseudo'] == $_SESSION['pseudo']) {
au lieu de mettre
$_SESSION['pseudo']
j'ai mis
$_GET['pseudo']
et ça fonctionne
Doppler

Doppler Le 22 février 2019 à 23:59

@mister1610 , prend l'habitude de sécuriser l'ensemble de tes variables envoyée au serveur (surtout le $_GET) avec du htmlspecialchars 😉

Content de t'avoir aidé 😉
Balatharas

Balatharas Le 25 février 2019 à 18:11

Pour ne pas prendre en compte les changements de pseudo, tu devrais utiliser l'id du compte de ton utilisateur, car tu peux être sur que cette variable ne sera pas modifiée par l'utilisateur. Donc tu changes
<body>
   <?php
   if(isset($_SESSION['pseudo']) AND $userinfo['pseudo'] == $_SESSION['pseudo']) {
   ?>
      <a href="editionprofil.php">Editer mon profil</a>
par
<body>
   <?php
   if(isset($_SESSION['id']) AND $userinfo['id'] == $_SESSION['id']) {
   ?>
      <a href="editionprofil.php">Editer mon profil</a>
Doppler

Doppler Le 25 février 2019 à 20:01

Pour ne pas prendre en compte les changements de pseudo, tu devrais utiliser l'id du compte de ton utilisateur, car tu peux être sur que cette variable ne sera pas modifiée par l'utilisateur.
@Balatharas, Tu as raison, dans ce cas, pour être sûr que l'user ne change pas manuellement.
Tu peut établir une vérification SQL de type fetch() où tu ne retiens qu'en fonction de l'id de $_SESSION['id'] !

Exemple :
   //Procedure recuperation element de l'utilisateur
   $req = $bdd_connect->prepare('SELECT * FROM tables_all_users WHERE id = ?');
   $req->execute(array($_SESSION['id']));
   $get_usersinfos = $req->fetch();

   //condition etablie
    if(isset($get_usersinfos['id']) AND $userinfos['id'] == $get_usersinfos['id']) { ?>
       <a href="editionprofil.php">Editer mon profil</a>
   <?php } ?>


Balatharas

Balatharas Le 26 février 2019 à 15:05

Ce que tu as fais reviens au même car si l'id est correct dans la variable SESSION['id'], pas besoin de faire un fetch pour le comparer avec userinfo. Si c'est pour obtenir toutes les infos de l'user, $userinfo est là, et si la variable SESSION['id'] est incorrecte, la condition plus haut empêchera toute interaction avec les commandes de l'user.
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte