Ajout de connexion à la bdd + script SQL + page projets en cours de reflexion
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
// J'héberge un serveur de base de donnée sur un serveur
|
||||
// Pour éviter que les identifiants soient lisible sur Gitea je vais appeller un fichier qui n'est pas dans le projet
|
||||
|
||||
|
||||
// EXEMPLE de a quoi ressemble idConnection :
|
||||
// define('DB_HOST', 'adresse_ip');
|
||||
// define('DB_PORT', port);
|
||||
// define('DB_NAME', 'portfolio');
|
||||
// define('DB_USER', 'srv_portfolio');
|
||||
// define('DB_PASS', 'mdp');
|
||||
|
||||
// On importe le fichier avec les IDs
|
||||
require_once('../../idConnection.php');
|
||||
|
||||
// Connexion à la base grâce à l'API PDO
|
||||
|
||||
// Définitions des identifiants de connexion grâce au fichier idConnection
|
||||
$dsn = 'mysql:host='. DB_HOST . ';port=' . DB_PORT . ';dbname=' . DB_NAME;
|
||||
$user = DB_USER ;
|
||||
$pass = DB_PASS ;
|
||||
|
||||
try {
|
||||
// TENTATIVE de connexion
|
||||
$dbh = new PDO($dsn, $user, $pass);
|
||||
} catch (PDOException $e) {
|
||||
// SI erreur, RENVOIE erreur
|
||||
die("Erreur de connexion à la base de donnée portfolio :".$e->getMessage());
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
-- On créer la base de donnée si elle n'existe déjà aps
|
||||
CREATE DATABASE IF NOT EXISTS portfolio
|
||||
|
||||
-- On créer un utilisateur avec un mot de passe fort qui est à changer après execution dus script (voir bitwarden)
|
||||
CREATE USER 'srv_portfolio'@'localhost' IDENTIFIED BY 'mdp';
|
||||
|
||||
-- On met les droits au compte sur la base portfolio à l'utilisateur
|
||||
GRANT ALL ON portfolio.* TO 'srv_portfolio'@'localhost';
|
||||
|
||||
-- On actualise les permissions
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
-- Création de la table user :
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
username VARCHAR(50) NOT NULL,
|
||||
password VARCHAR(255) NOT NULL, -- Je laisse ici de la place pour prévoir un futur hashage et sallage
|
||||
role ENUM('admin', 'user') NOT NULL DEFAULT 'user',
|
||||
created_at DATETIME NULL DEFAULT NULL,
|
||||
last_login DATETIME NULL DEFAULT NULL,
|
||||
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE INDEX idx_username (username)
|
||||
);
|
||||
|
||||
-- Compte de test
|
||||
INSERT INTO users (username, password, role)
|
||||
VALUES ('admin', 'admin', 'admin');
|
||||
+4
-1
@@ -4,6 +4,9 @@
|
||||
// Rappel des différentes pages : Acceuil, Projets, Contact
|
||||
// Rappel des boutons : Connexion, (Si le temps) Panneau Administrateur (Seulement si l'utilisateur est admin)
|
||||
|
||||
|
||||
// Ajout ici d'un démarrage de session : header étant dans toutes les pages
|
||||
session_start();
|
||||
?>
|
||||
|
||||
|
||||
@@ -20,7 +23,7 @@
|
||||
<nav>
|
||||
|
||||
<a href="./../index.php">Accueil</a>
|
||||
<a href="./projets.php">Projets</a>
|
||||
<a href="./projects.php">Projets</a>
|
||||
<a href="./contact.php">Contact</a>
|
||||
<a href="./login.php">Connexion</a>
|
||||
<!-- Fonctionnalité future changement de thème dark / light et panneau admin -->
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
<?php
|
||||
|
||||
// Verification de l'utilisateur
|
||||
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
// Verification de l'utilisateur voir si ces ids sont bon ou pas
|
||||
|
||||
// On démarre une session au cas où le script soit exécuté directement par URL
|
||||
session_start();
|
||||
|
||||
// Ajout de connexion a la bdd
|
||||
require_once('./../database/databaseConnection.php');
|
||||
|
||||
// La requête doit être un POST sinon on l'a refuse
|
||||
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
||||
header('Location: ./../pages/login.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
// On récupère les champs envoyé par le post et on les nettoie
|
||||
$username = trim($_POST['id'] ?? '');
|
||||
$password = trim($_POST['passwd'] ?? '');
|
||||
|
||||
// Si les champs sont vides on renvoie vers Login.php : Prévoir dans le futur une erreur
|
||||
if (empty($username) || empty($password)) {
|
||||
header('Location: ./../pages/login.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
// On regarde si l'utilisateur est dans la base de donnée sinon ça ne sert a rien de traiter
|
||||
try {
|
||||
$stmt = $dbh->prepare('SELECT id, username, password, role FROM users WHERE username = :username LIMIT 1');
|
||||
$stmt->execute([':username' => $username]);
|
||||
$user = $stmt->fetch();
|
||||
|
||||
} catch (PDOException $e) {
|
||||
error_log('Erreur sql dans la requête : ' . $e->getMessage());
|
||||
header('Location: ./../pages/login.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
// On regarde si le mdp correspond à celui en bdd
|
||||
if (!$user || $user['password'] !== $password) {
|
||||
header('Location: ./../pages/login.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Si la connexion est ok, on entregistre l'utilisateur dans $_SESSION
|
||||
$_SESSION['user_id'] = $user['id'];
|
||||
$_SESSION['username'] = $user['username'];
|
||||
$_SESSION['role'] = $user['role'];
|
||||
|
||||
// Date de connexion mise à jour
|
||||
try {
|
||||
$stmt = $dbh->prepare('UPDATE users SET last_login = NOW() WHERE id = :id');
|
||||
$stmt->execute([':id' => $user['id']]);
|
||||
} catch (PDOException $e) {
|
||||
error_log('Le serveur WEB ne peut pas modifier la date de dernière connexion : ' . $e->getMessage());
|
||||
}
|
||||
|
||||
//Redirection vers home.php puisque que l'utilisateur est forcément connecté
|
||||
header('Location: ./../pages/home.php');
|
||||
@@ -5,7 +5,9 @@
|
||||
|
||||
// Note : Pour lancer un serveur local PHP Depuis VsCode : 'php -v' pour vérifier que php est bien installé et 'php -S localhost:8000' pour lancer le serveur
|
||||
|
||||
// Le header n'y étant pas je rajoute ici un démarrage de session
|
||||
session_start();
|
||||
|
||||
// Redirection de l'utilisateur vers une page Home lorsqu'il arrive sur index.php
|
||||
header('location: ./pages/home.php');
|
||||
|
||||
?>
|
||||
+1
-1
@@ -16,7 +16,7 @@ require_once('./../elements/header.php');
|
||||
<div class="login-card">
|
||||
|
||||
<!-- Formulaire de connexion -->
|
||||
<form method="GET" action="../fonctions/checkLogin.php">
|
||||
<form method="POST" action="../functions/checkLogin.php">
|
||||
|
||||
<p>Connexion</p>
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
// Page affichant les différents projets personnels / scolaires / professionnels
|
||||
// On pourrait également rajouter des tags comme "En cours" ou même "En reflexion"...
|
||||
|
||||
// On ajoute le header
|
||||
require_once('../elements/header.php');
|
||||
|
||||
// Dans le principe il me faudrait des cases avec des images carrousel du projet un titre et une description
|
||||
|
||||
// Si l'utilisateur est admin, il pourra créer de nouveaux projets
|
||||
Reference in New Issue
Block a user