IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Créer un bouton pour formulaire de contact


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2023
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2023
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Créer un bouton pour formulaire de contact
    Bonjour je souhaite créer un bouton de type lien qui permet à l'utilisateur qui vient de se connecter de revenir à la page d'accueil login_form.php, une fois que celui-ci à décidé de supprimer son compte. Pour l'instant la redirection vers la page login_form.php fonctionne bien mais l'ID associée dans la base de donnée PhpMyAdmin n'est pas effacée. Que faut-il donc que je fasse sachant que je débute en PHP.

    voici la page php de l'utilsateur qui vient de se connecter user page_page.php:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <meta http-equiv="X-UA-Compatible" content="IE=edge">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>User Page</title>
     
       <!-- Custom CSS file link  -->
       <link rel="stylesheet" href="css/style.css">
    </head>
    <body>
     
    <div class="container">
       <div class="content">
          <h3>Hi, <span>User</span></h3>
          <h1>Welcome <span></span></h1>
          <p>This is a user page</p>
          <a href="delete.php"class="btn">Delete Account</a>
          <a href="login_form.php" class="btn">Logout</a>
        </div>
    </div>
     
    </body>
    </html> 
     
    et voici le code de la page delete.php:
     
    <?php
    // Inclure le fichier de configuration et démarrer la session
    if (file_exists('config.php')) {
      include 'config.php';
    } else {
      die('Error: config.php file not found');
    }
     
    // Vérifier si la connexion est valide
    if (!$conn) {
      die('Error: Could not connect to database');
    }
     
    // Vérifier si l'utilisateur est connecté
    session_start();
    if (!isset($_SESSION['id'])) {
      // Rediriger vers la page de connexion si l'utilisateur n'est pas connecté
      header('Location: login_form.php');
      exit();
    }
     
    // Vérifier si l'ID de l'utilisateur à supprimer a été passé en paramètre GET
    if (isset($_GET['id'])) {
      
      // Obtenir l'ID de l'utilisateur à supprimer et le nettoyer
      $user_id = filter_var($_GET['id'], FILTER_SANITIZE_NUMBER_INT);
     
      // Préparer la requête SQL pour supprimer le compte de l'utilisateur de la base de données
      $query = "DELETE FROM user_form WHERE id = '?'";
      $stmt = mysqli_prepare($conn, $query);
     
      // Vérifier si la préparation de la requête a réussi
      if (!$stmt) {
        die('Error: Could not prepare statement');
      }
     
      mysqli_stmt_bind_param($stmt, "i", $user_id);
     
      // Exécuter la requête préparée
      if (mysqli_stmt_execute($stmt)) {
       
        // Rediriger vers la page de connexion
        header('Location: login_form.php');
        exit();
      } else {
        // Afficher un message d'erreur si la requête n'a pas été exécutée avec succès
        die('Error deleting user: ' . mysqli_error($conn));
      }
     
      // Fermer la requête
      mysqli_stmt_close($stmt);
    }
     
    // Fermer la connexion à la base de données
    mysqli_close($conn);
    ?>
    <html>
    <head>
    	<title>My Website</title>
      <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/water.css@2/out/water.css">
    </head>
    <body>
      <!-- Ajouter un message de confirmation de suppression -->
      <p>Are you sure you want to delete your account?</p>
      <form method="post" action="delete.php">
        <button type="submit" name="delete" class="btn">Delete Account</button>
      </form>
      <!-- Ajouter un bouton pour annuler la suppression et rediriger vers la page de profil de l'utilisateur -->
    <a href="profile.php" class="btn">Cancel</a>
     
    </body>
    </html>

    Merci par avance à tous ceux qui m'aideront.

  2. #2
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Bienvenu sur DVP !

    D'abord, pour montrer du code, utilise le bouton # ; c'est fait pour et ça facilite un copier-coller pour les utilisateur (et il y a aussi une mise en couleur selon le langage).
    Je n'ai pas regardé de près le code, mais comme j'ai vu que tu accèdes à une base de données, je te recommande PDOPluPlus. En français https://www.developpez.net/forums/bl...dutiliser-pdo/ ; à jour mais en anglais : https://github.com/rawsrc/PDOPlusPlus

  3. #3
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 896
    Points : 6 655
    Points
    6 655
    Par défaut
    Désolé, rien à voir avec ta demande, mais ça $query = "DELETE FROM user_form WHERE id = '?'"; c'est pas bon: lorsque tu utilises une requête préparée avec un placeholder, pas la peine de rajouter des quotes autour -> $query = "DELETE FROM user_form WHERE id = ?";. (un des intérêts des requêtes préparées est justement de t'éviter toute complication avec les quotes et les échappements en transmettant la requête et la valeur du paramètre de manière séparée).

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Et j'ajouterais une remarque à celle de Cosmo : je préfère les marqueurs nommés (c'est plus clair et surtout quand il y a plusieurs marqueurs dans la requête) : $query = "DELETE FROM user_form WHERE id = :user_id";

  5. #5
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 896
    Points : 6 655
    Points
    6 655
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    je préfère les marqueurs nommés (c'est plus clair et surtout quand il y a plusieurs marqueurs dans la requête)
    MySQLi ne supporte pas les marqueurs nommés. C'est juste PDO.

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    MySQLi ne supporte pas les marqueurs nommés. C'est juste PDO.
    Je savais pas (jamais utilisé MySQLi)

  7. #7
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 896
    Points : 6 655
    Points
    6 655
    Par défaut
    Attention aussi avec $user_id = filter_var($_GET['id'], FILTER_SANITIZE_NUMBER_INT); car à ce stade tu ne peux pas affirmer que $user_id ne contient que des chiffres (la chaîne peut être vide ou contenir des signes + et -).
    Si tu souhaites contrôler que $user_id ne contient que des chiffres en amont de la requête, tu peux faire un test de ce genre: if (ctype_digit($user_id)) ...

Discussions similaires

  1. Problème avec code php
    Par thomash11 dans le forum Langage
    Réponses: 7
    Dernier message: 04/07/2012, 22h11
  2. problème de code php avec kannel
    Par ouakammathieu dans le forum Langage
    Réponses: 3
    Dernier message: 22/01/2009, 22h00
  3. Problème le code PHP s'affiche dans le navigateur
    Par Christophe LUCET dans le forum Langage
    Réponses: 4
    Dernier message: 20/12/2006, 14h12
  4. [MySQL] Un problème dans le code PHP
    Par jack_1981 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 31/07/2006, 11h06
  5. [POO] Problème de code PHP avec Internet Explorer
    Par bzoler dans le forum Langage
    Réponses: 5
    Dernier message: 12/02/2006, 11h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo