Skip to content

sheedrdh/chat-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💬 Chat en Temps Réel — PHP / MySQL

Un système de chat en temps réel permettant aux utilisateurs de s'inscrire, se connecter et échanger des messages instantanément.

PHP MySQL Bootstrap WebSocket


📸 Aperçu

Page de connexion Interface de chat
Formulaires d'inscription et de connexion avec design glassmorphism dark-mode Zone de messages en temps réel avec polling AJAX ou WebSocket

✨ Fonctionnalités

  • Inscription & Connexion sécurisées (hash de mot de passe, sessions, CSRF)
  • Chat global en temps réel
  • Deux modes de communication :
    • 🔄 AJAX Polling — récupération automatique toutes les 2 secondes
    • WebSocket — via Ratchet, communication instantanée
  • Anti-spam — limite d'un message toutes les 2 secondes
  • Design premium — dark-mode, glassmorphism, animations fluides
  • Responsive — adapté mobile, tablette et desktop

🗂️ Structure du projet

chat-php/
├── index.php                  # Page principale (login / chat)
├── composer.json              # Dépendances PHP (Ratchet)
├── run_websocket.bat          # Script Windows pour lancer le serveur WS
├── .gitignore
│
├── assets/
│   ├── css/
│   │   └── custom.css         # Design premium dark-mode
│   └── js/
│       ├── chat.js            # Logique AJAX (polling, envoi, toasts)
│       └── chat_ws.js         # Client WebSocket
│
├── db/
│   └── schema.sql             # Schéma de la base de données
│
└── php/
    ├── config.php             # Configuration DB, session, CSRF, helpers
    ├── register.php           # Inscription (POST, validation, PDO)
    ├── login.php              # Connexion (POST, vérification, session)
    ├── logout.php             # Déconnexion (destruction de session)
    ├── send_message.php       # Envoi de message (POST, anti-spam)
    ├── fetch_messages.php     # Récupération des messages (GET, JSON)
    └── chat_server.php        # Serveur WebSocket Ratchet

🚀 Installation

Prérequis

  • XAMPP (Apache + MySQL + PHP 8+)
  • Composer (gestionnaire de dépendances PHP)

Étapes

1. Cloner le projet

git clone https://github.com/sheedrdh/chat-php.git
cd chat-php

2. Installer les dépendances

composer install

3. Créer la base de données

Démarrez Apache et MySQL dans XAMPP, puis importez le schéma :

mysql -u root < db/schema.sql

Ou ouvrez phpMyAdmin (http://localhost/phpmyadmin) et importez le fichier db/schema.sql.

4. Configurer la connexion DB (si besoin)

Modifiez php/config.php si votre configuration MySQL diffère :

define('DB_HOST', '127.0.0.1');
define('DB_NAME', 'realtime_chat');
define('DB_USER', 'root');
define('DB_PASS', '');

5. Lancer l'application

Accédez à : http://localhost/chat-php/

6. (Optionnel) Lancer le serveur WebSocket

# Windows
run_websocket.bat

# Linux / Mac
php php/chat_server.php

Le serveur WebSocket écoute sur le port 8080.


🛡️ Sécurité

Mesure Détail
Mots de passe Hashés avec password_hash() (bcrypt)
Injection SQL PDO + requêtes préparées
XSS htmlspecialchars() sur tous les affichages
CSRF Token unique par session, vérifié à chaque POST
Sessions httponly, samesite=Lax, strict_mode
Anti-spam 1 message / 2 secondes maximum
Limite Messages limités à 500 caractères

🗄️ Base de données

Table users

Colonne Type Description
id INT UNSIGNED, PK Identifiant unique
username VARCHAR(50), UNIQUE Pseudo
email VARCHAR(255), UNIQUE Adresse e-mail
password VARCHAR(255) Hash du mot de passe
created_at TIMESTAMP Date de création

Table messages

Colonne Type Description
id BIGINT UNSIGNED, PK Identifiant unique
user_id INT UNSIGNED, FK Auteur du message
room_id INT UNSIGNED, FK Salon (NULL = global)
content TEXT Contenu du message
created_at TIMESTAMP Date d'envoi

Table rooms (optionnelle)

Colonne Type Description
id INT UNSIGNED, PK Identifiant unique
name VARCHAR(100), UNIQUE Nom du salon
created_by INT UNSIGNED, FK Créateur
created_at TIMESTAMP Date de création

⚙️ Technologies

  • Backend : PHP 8+ (pur)
  • Base de données : MySQL / MariaDB
  • Frontend : HTML5, CSS3, JavaScript ES6
  • UI : Bootstrap 5.3, Font Awesome 6
  • WebSocket : Ratchet (cboden/ratchet)
  • Design : Glassmorphism, dark-mode, animations CSS

📝 Licence

Ce projet est sous licence MIT. Vous êtes libre de l'utiliser, le modifier et le distribuer.


Développé avec ❤️ en PHP/MySQL

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors