Maison >développement back-end >tutoriel php >Guide du débutant sur la gestion des formulaires PHP avec des sessions

Guide du débutant sur la gestion des formulaires PHP avec des sessions

Patricia Arquette
Patricia Arquetteoriginal
2024-12-04 21:11:111032parcourir

Beginner

Si vous êtes nouveau sur PHP et que vous souhaitez apprendre à gérer les formulaires et à travailler avec les données de session, ce guide est fait pour vous. Nous allons créer un projet simple dans lequel un utilisateur peut soumettre un formulaire, enregistrer les données dans une session, les afficher et les supprimer ultérieurement. À la fin de ce didacticiel, vous comprendrez les bases de la gestion, de la validation, de la désinfection et des sessions des formulaires PHP.


Qu’est-ce que la gestion des formulaires en PHP ?

La gestion des formulaires fait référence au processus de capture des données soumises via un formulaire HTML et de leur traitement dans un langage côté serveur comme PHP. Cela comprend :

  1. Récupération des données du formulaire : Utilisation de méthodes telles que GET ou POST.
  2. Valider les données : S'assurer que la saisie répond à des critères spécifiques.
  3. Désinfection des données : Nettoyage de l'entrée pour éviter les problèmes de sécurité tels que les attaques XSS.
  4. Stockage ou traitement des données : Sauvegardez-les dans des sessions, des bases de données ou affichez-les à l'utilisateur.

Que sont les sessions en PHP ?

Les sessions sont un moyen de stocker des informations (variables) sur plusieurs pages pour un seul utilisateur. Contrairement aux cookies, les données de session sont stockées sur le serveur, ce qui le rend plus sécurisé. Pour commencer à utiliser des sessions en PHP, nous utilisons la fonction session_start().


Le projet : formulaire PHP avec gestion de session

Notre projet comporte les fonctionnalités suivantes :

  • Un utilisateur remplit un formulaire avec des informations personnelles.
  • Les données soumises sont validées et nettoyées.
  • Les données valides sont stockées dans une session.
  • Les utilisateurs peuvent afficher ou supprimer les données de session.

Structure du fichier

Voici la structure de notre projet :

project-folder/
│
├── index.php           # Form page
├── submit.php          # Form handling and session storage
├── view_session.php    # Viewing session data
├── delete_session.php  # Deleting session data

Étape 1 : Création du formulaire (index.php)

Le fichier index.php contient un simple formulaire HTML dans lequel les utilisateurs peuvent saisir leurs coordonnées. Voici le code :

<?php session_start(); ?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PHP Form with Session Handling</title>
</head>
<body>
    <h1>Submit Your Information</h1>
    <!-- Form Section for User Input -->
    <form method="get" action="submit.php">
        <label for="name">Name:</label><br>
        <input type="text">




<hr>

<h3>
  
  
  Step 2: Handling Form Submission (submit.php)
</h3>

<p>This file processes the submitted form data, validates it, and stores it in a session. Here's the code:<br>
</p>

<pre class="brush:php;toolbar:false"><?php
session_start();

// Initialize error messages and data variables
$error_name = "";
$error_age = "";
$error_email = "";
$error_website = "";
$name = $age = $email = $website = $gender = $comments = $hobbies = "";

// Sanitize and validate the form data
if ($_SERVER["REQUEST_METHOD"] == "GET") {
    // Sanitize inputs
    $name = htmlspecialchars(trim($_GET['name']));
    $age = htmlspecialchars(trim($_GET['age']));
    $email = htmlspecialchars(trim($_GET['email']));
    $website = htmlspecialchars(trim($_GET['website']));
    $gender = isset($_GET['gender']) ? $_GET['gender'] : 'No gender selected.';
    $hobbies = isset($_GET['hobbies']) ? $_GET['hobbies'] : ['No hobby selected.'];
    $comments = htmlspecialchars(trim($_GET['comments']));

    // Validation checks
    if (empty($name)) {
        $error_name = "Name is required.";
    }

    if (empty($age) || !filter_var($age, FILTER_VALIDATE_INT) || $age <= 0) {
        $error_age = "Valid age is required.";
    }

    if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $error_email = "Valid email is required.";
    }

    if (empty($website) || !filter_var($website, FILTER_VALIDATE_URL)) {
        $error_website = "Valid website URL is required.";
    }

    // If no errors, store data in session
    if (empty($error_name) && empty($error_age) && empty($error_email) && empty($error_website)) {
        // Store data in session
        $_SESSION['name'] = $name;
        $_SESSION['age'] = $age;
        $_SESSION['email'] = $email;
        $_SESSION['website'] = $website;
        $_SESSION['gender'] = $gender;
        $_SESSION['hobbies'] = implode(", ", $hobbies);
        $_SESSION['comments'] = $comments;
    }
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Form Submission Result</title>
</head>
<body>
    <h1>Form Submission Result</h1>

    <!-- Show Errors if any -->
    <?php
    if ($error_name) {
        echo "<p>




<hr>

<h3>
  
  
  Step 3: Viewing Session Data (view_session.php)
</h3>

<p>This file displays session data stored on the server.<br>
</p>

<pre class="brush:php;toolbar:false"><?php session_start(); ?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>View Session Data</title>
</head>
<body>
    <h1>View Stored Session Data</h1>

    <?php
    if (isset($_SESSION['name'])) {
        echo "<p><strong>Name:</strong> " . $_SESSION['name'] . "</p>";
        echo "<p><strong>Age:</strong> " . $_SESSION['age'] . "</p>";
        echo "<p><strong>Email:</strong> " . $_SESSION['email'] . "</p>";
        echo "<p><strong>Website:</strong> <a href='" . $_SESSION['website'] . "' target='_blank'>" . $_SESSION['website'] . "</a></p>";
        echo "<p><strong>Gender:</strong> " . $_SESSION['gender'] . "</p>";
        echo "<p><strong>Hobbies:</strong> " . $_SESSION['hobbies'] . "</p>";
        echo "<p><strong>Comments:</strong> " . $_SESSION['comments'] . "</p>";
    } else {
        echo "<p>No session data found!</p>";
    }
    ?>

    <br><br>
    <a href="index.php">Go Back</a>
</body>
</html>

Étape 4 : Suppression des données de session (delete_session.php)

Ce fichier détruit les données de session.

<?php
session_start();
session_unset(); // Remove all session variables
session_destroy(); // Destroy the session
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Session Deleted</title>
</head>
<body>
    <h1>Session Data Deleted</h1>
    <p>All session data has been deleted successfully.</p>
    <br><br>
    <a href="index.php">Go Back</a>
</body>
</html>

Concepts clés couverts

  1. Gestion des formulaires :

    • Récupération de données à l'aide de la méthode GET.
    • Validation des entrées avec des conditions et des filtres.
    • Désinfection des entrées avec htmlspecialchars().
  2. Séances :

    • Démarrer une session avec session_start().
    • Stockage des données dans

le tableau $_SESSION.

  • Affichage des données de session.
  • Suppression des données de session à l'aide de session_unset() et session_destroy().

Conclusion

Ce projet démontre les bases de la gestion des formulaires PHP et de la gestion des sessions. Grâce à ces concepts, vous pouvez créer des applications plus complexes qui gèrent les entrées des utilisateurs de manière sécurisée et efficace. Expérimentez avec le code et essayez de l'étendre en ajoutant des fonctionnalités telles que l'intégration de bases de données ou une validation plus avancée.

Bon codage ! ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn