This commit is contained in:
Xeno-linux
2025-10-10 11:07:31 +02:00
parent bd0f9430c1
commit 68016d5d02
8 changed files with 17 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
<?php
class ControleurAuthentification {
public function coucou(){
return "coucou";
}
public function afficherFormCo(){
include __DIR__."/../vues/vueFormCo.php";
}
public function traiterFormCo($login, $mdp){
echo "le traitement du formulaire a été fait. Login: $login, Mdp: $mdp";
echo "la requête poste fonctionne".$_POST['login'].$_POST['pass'];
$_SESSION['login'] = $login;
$_SESSION['level'] = 'utilisateur';
}
}

View File

@@ -0,0 +1,79 @@
<?php
session_start();
// Exécutable si :
// admin ou (dev et "je suis le bon utilisateur")
if (!isset($_SESSION['droit'])){
die("Connexion obligatoire.");
}
if ( !( ($_SESSION['droit']=='admin') ||
($_SESSION['droit']=='dev' && $_SESSION['login']==$idM) ) ){
die("Accès interdit");
}
// Exemple insertion :
// .../insererContrib.php?idMembre=M001&idProjet=P001&duree=56
// Récupère membre_id, projet_id, durée en $_GET
// include include_once : si fichier pas trouvé, pas d'erreur
// require require_once : si fichier pas trouvé, erreur et arrêt
// => once : php vérifie que l'inclusion n'est faite qu'une fois
require_once "../utils_inc/inc_pdo.php";
$idM = $_GET["idMembre"];
$idP = $_GET["idProjet"];
$dudu = $_GET["duree"];
$texteRequete = "insert into contribution (membre_id, projet_id, duree) ";
$texteRequete.= " values(:mId, :pId, :du) ";
$req = $pdo->prepare($texteRequete);
$req->bindParam(":mId",$idM);
$req->bindParam(":pId",$idP);
$req->bindParam(":du" ,$dudu);
$req->execute();
// header : prépare une redirection
// qui devient effective à la fin de l'exécution
header("location:../pages/listeContribsMembre.php?id=".$idM);
// exit(); // pour que la redirection soit immédiate
// appeler un script php pour l'exécuter en lui transmettant des paramètres dans l'url
// Créer un formulaire, utiliser action, method, name, utiliser des champs cachés (hidden)
// Utiliser pdo pour :
// - se connecter à une base
// - faire une requête simple (non paramétrée)
// - faire une requête paramétrée (bind)
// Extraire les données retournées par une requête et les "traiter"(foreach)
// => comprendre la communication client-serveur (qui fait quoi ?)

9
controleur/logout.php Normal file
View File

@@ -0,0 +1,9 @@
<?php
session_start();
// Choix de déconnexion : on supprime les champs de session liés à la connexion
unset($_SESSION['droit']);
unset($_SESSION['login']);
// retour au form de connexion
header("location:../index.php");

View File

@@ -0,0 +1,43 @@
<?php
session_start();
require_once "../utils_inc/inc_pdo.php"; // $pdo existe ici désormais
// http://localhost/contribs/traiterAuthentification.php?login=M001&pass=123
// Recevoir les données du form de login, et vérifier login/pass dans la base
// En version finale : envoi en $_POST obligatoire. Pour le dev $_GET peut être plus pratique.
$login = $_POST["login"];
$pass = $_POST["pass"];
// Vérification dans la base si le mot de passe et le login se trouvent dans la base
// VERSION mot de passe chiffré
$textR = "select droit, password ";
$textR.= "from membre ";
$textR.= "where id=:login ";
$req = $pdo->prepare($textR);
$req->bindParam(":login", $login);
$req->execute();
// 2 possibilités : 1 ligne retournée ou 0 ligne retournée
$tabRes = $req->fetchAll(PDO::FETCH_ASSOC);
if (count($tabRes)!=1) {
// pas trouvé => retour au formulaire de co
// die("Erreur de co");
header("Location:../index.php?message=tekitoa");
exit();
}
// Si on arrive là : login existe (count==1)
if (!password_verify($pass, $tabRes[0]["password"])){
// die("Erreur de co");
header("Location:../index.php?message=tekitoa");
exit();
}
$_SESSION["login"] = $login;
$_SESSION["droit"] = $tabRes[0]["droit"];
// redirection vers accueil, éventuellement spécifique à l'utilisateur
header("Location:../pages/accueil.php");
// pas besoin d'exit pour déclencher la redirection, puisque fin de script