Créer une application PHP


 

Pour créer une application en PHP avec une base de données MySQL et une interface d'administration, nous allons suivre ces étapes :

  1. Configurer l'environnement de développement : Installer un serveur web (Apache), PHP, et MySQL (par exemple avec XAMPP ou WAMP).

  2. Créer la base de données MySQL : Définir les tables et leurs relations.

  3. Développer l'application : Écrire le code PHP pour interagir avec la base de données, gérer les sessions, et créer les pages pour l'interface utilisateur et l'administration.

Voici un exemple d'application simple avec gestion des utilisateurs :

1. Configuration de la base de données MySQL

Créez une base de données nommée my_app avec une table users :

sql

CREATE DATABASE my_app; USE my_app; CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, email VARCHAR(100) NOT NULL UNIQUE, role ENUM('admin', 'user') NOT NULL DEFAULT 'user' );


2. Configuration de l'application PHP

Structure des fichiers

bash

/my_app /admin dashboard.php /includes config.php functions.php /public index.php login.php register.php logout.php .htaccess


3. Code PHP

includes/config.php

php

<?php // Configuration de la base de données $host = 'localhost'; $db = 'my_app'; $user = 'root'; $pass = ''; $charset = 'utf8mb4'; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; try { $pdo = new PDO($dsn, $user, $pass, $options); } catch (\PDOException $e) { throw new \PDOException($e->getMessage(), (int)$e->getCode()); } ?>

includes/functions.php

php

<?php session_start(); function registerUser($pdo, $username, $password, $email) { $sql = "INSERT INTO users (username, password, email) VALUES (:username, :password, :email)"; $stmt = $pdo->prepare($sql); $passwordHash = password_hash($password, PASSWORD_DEFAULT); $stmt->execute(['username' => $username, 'password' => $passwordHash, 'email' => $email]); } function loginUser($pdo, $username, $password) { $sql = "SELECT * FROM users WHERE username = :username"; $stmt = $pdo->prepare($sql); $stmt->execute(['username' => $username]); $user = $stmt->fetch(); if ($user && password_verify($password, $user['password'])) { $_SESSION['user_id'] = $user['id']; $_SESSION['username'] = $user['username']; $_SESSION['role'] = $user['role']; return true; } return false; } function isAdmin() { return isset($_SESSION['role']) && $_SESSION['role'] === 'admin'; } function isLoggedIn() { return isset($_SESSION['user_id']); } function logoutUser() { session_unset(); session_destroy(); } ?>

public/register.php

php

<?php require '../includes/config.php'; require '../includes/functions.php'; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $username = $_POST['username']; $password = $_POST['password']; $email = $_POST['email']; registerUser($pdo, $username, $password, $email); header('Location: login.php'); exit; } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Register</title> </head> <body> <form action="register.php" method="post"> <input type="text" name="username" placeholder="Username" required> <input type="password" name="password" placeholder="Password" required> <input type="email" name="email" placeholder="Email" required> <button type="submit">Register</button> </form> </body> </html>

public/login.php

php

<?php require '../includes/config.php'; require '../includes/functions.php'; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $username = $_POST['username']; $password = $_POST['password']; if (loginUser($pdo, $username, $password)) { header('Location: ../admin/dashboard.php'); exit; } else { echo "Invalid credentials"; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Login</title> </head> <body> <form action="login.php" method="post"> <input type="text" name="username" placeholder="Username" required> <input type="password" name="password" placeholder="Password" required> <button type="submit">Login</button> </form> </body> </html>

admin/dashboard.php

php

<?php require '../includes/config.php'; require '../includes/functions.php'; if (!isLoggedIn()) { header('Location: ../public/login.php'); exit; } if (!isAdmin()) { echo "Access denied."; exit; } echo "Welcome to the admin dashboard, " . htmlspecialchars($_SESSION['username']); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Admin Dashboard</title> </head> <body> <h1>Admin Dashboard</h1> <a href="../public/logout.php">Logout</a> </body> </html>

public/logout.php

php

<?php require '../includes/functions.php'; logoutUser(); header('Location: login.php'); exit; ?>

4. .htaccess Configuration (optional)

Pour renforcer la sécurité en interdisant l'accès direct aux fichiers PHP dans le dossier includes, vous pouvez ajouter un fichier .htaccess :

python

# .htaccess file <Files *.php> Deny from all </Files>

Cela constitue la base d'une application PHP avec une base de données MySQL et une interface d'administration. Vous pouvez étendre cette structure pour inclure des fonctionnalités supplémentaires telles que la gestion des utilisateurs, des articles, des permissions, etc.

Suggestions pour l'amélioration :

a. Ajouter des tests unitaires pour les fonctions PHP. 

b. Implémenter la gestion des erreurs pour améliorer la robustesse de l'application.

Enregistrer un commentaire

Plus récente Plus ancienne

Comments

Facebook