NetBeansProjects

This commit is contained in:
Clement Bouillot
2021-05-28 10:56:04 +02:00
commit 068f9156f9
121 changed files with 10836 additions and 0 deletions

View File

@ -0,0 +1,40 @@
<!--
* affichageVisite.php
-->
<?php
include_once("entete.php");
include_once("modele/accesBDD.php");
?>
<h2>Liste des comptes rendu</h2>
<table>
<thead>
<tr>
<th>Client </th><th>Date </th><th>Heure </th><th>Remarque </th><th>Compte rendu </th>
</tr>
</thead>
<tbody>
<?php
if (isset(($_GET["msg"]))) {
$msg = $_GET["msg"];
echo "<p>$msg</p>";
unset($_GET["msg"]);
}
//Recherche des visites de l'utilisateur afin de les afficher
$dbh = connexion();
$visites = rechercherLesComptesRendusDuCommercial($dbh, $id);
while ($unCompteRendu = $visites->fetch()) { // Lecture 1ère ligne jeu d'enregistrements
$idCompteRendu = $unCompteRendu['idCompteRendu'];
$lib = $unCompteRendu['praNom'] . " " . $unCompteRendu['praPrenom'];
$dateV = $unCompteRendu["date"];
$heureV = $unCompteRendu["heure"];
$rem = $unCompteRendu["remarque"];
$cptRendu = $unCompteRendu['compteRendu'];
echo "<tr><td>$lib </td><td>$dateV </td><td>$heureV </td><td>$rem </td><td>$cptRendu </td><td><a href='ajoutCompteRendu.php?idVisite=$idVisite'>Ajout comptes rendus</a> </td></tr>";
}
?>
</tbody>
</table>
</body>
</html>

View File

@ -0,0 +1,47 @@
<!--
* affichageVisite.php
-->
<?php
include_once("entete.php");
include_once("modele/accesBDD.php");
?>
<h2>Liste des visites</h2>
<table>
<thead>
<tr>
<th>Client </th><th>Ville </th><th>Date </th><th>Heure </th><th>Remarque </th>
</tr>
</thead>
<tbody>
<?php
if (isset(($_GET["msg"]))) {
$msg = $_GET["msg"];
echo "<p>$msg</p>";
unset($_GET["msg"]);
}
//Recherche des visites de l'utilisateur afin de les afficher
$dbh = connexion();
$visites = rechercherLesVisitesDuCommercial($dbh, $id);
while ($uneVisite = $visites->fetch()) { // Lecture 1ère ligne jeu d'enregistrements
$idVisite = $uneVisite['idVisite'];
$lib = $uneVisite['praNom'] . " " . $uneVisite['praPrenom'];
$ville = $uneVisite['praVille'];
$dateV = $uneVisite["date"];
$heureV = $uneVisite["heure"];
$rem = $uneVisite["remarque"];
echo "<tr><td>$lib </td><td>$ville </td><td>$dateV </td>"
. "<td>$heureV </td><td>$rem </td><td><a href='affichageCompteRendu.php?idVisite=$idVisite'>Comptes rendus</a> </td> </tr>";
}
?>
</tbody>
</table>
</br> </br> </br>
<!--<p>
<a href="nouvelleVisite.php">Ajouter une visite</a>
</p>-->
</body>
</html>

View File

@ -0,0 +1,41 @@
<?php
include_once("entete.php");
include_once("modele/accesBDD.php");
?>
<h2>Nouveau compte rendu</h2>
<form method="POST">
<label for="listeClient">Sélectionner le client à visiter </label>
<select name=ldrClient id="listeClient" required>
<optgroup label="Les clients">
<?php
$dbh = connexion();
$lesClients = rechercherLesClients($dbh);
while ($unClient = $lesClients->fetch()) { // Lecture 1ère ligne jeu d'enregistrements
$id = $unClient['id'];
$lib = $unClient['nom'] . " |" . $unClient['prenom'] . "| "
. $unClient['adresse'] . " |" . $unClient['codePostal'] . " |" . $unClient['ville'];
echo "<option value='$id'>$lib</option>";
$unClient = $lesClients->fetch(); // Lecture suivante
}
?>
</optgroup>
</select>
<br /><br />
<label for="ztDate">Date du compte rendu</label>
<input type="date" name="ztDate" id="ztDate" required />
<label for="ztHeure">Heure du compte rendu</label>
<input type="time" name="ztHeure" id="ztHeure" required />
<br /><br />
<label for="txtRemarque">Remarque </label>
<textarea name="txtRemarque" id="txtRemarque"></textarea>
<br /><br />
<input type="submit" value="Valider" />
</form>
<?php
if (isset($_GET['msg'])) {
$message = $_GET['msg'];
echo "<p>$message</p>";
}
?>
</body>
</html>

View File

@ -0,0 +1,8 @@
<?php
/*
* deconnexion.php
*/
session_start();
session_unset();
header("location:index.php");
exit();

View File

@ -0,0 +1,37 @@
<!DOCTYPE html>
<!--
* entete.php
* entete à inclure au début de chaque page
-->
<?php
session_start();
if(!isset($_SESSION['id'])) {
$message = "Authentifiez-vous avant de poursuivre";
header("location:index.php?msg=$message");
exit();
}
$id = $_SESSION['id'];
$nom = $_SESSION['nom'];
$prenom = $_SESSION['prenom'];
$role = $_SESSION['role'];
if($role==0){
$libRole='Visiteur';
}
else{
$libRole= 'Responsable';
}
?>
<html>
<head>
<meta charset="UTF-8">
<title> Gestion des visites - V4</title>
</head>
<body>
<p>
<?php echo $libRole;?> identifié : <?php echo $prenom." ".$nom." "; ?>
<a href="deconnexion.php">Déconnexion</a>
</p>
<h1>Organisation des visites clients</h1>

View File

@ -0,0 +1,30 @@
<!DOCTYPE html>
<!--
index.php
Saisie login et mot de passe
Envoi vers verifLogin.php pour contrôle
-->
<html>
<head>
<meta charset="UTF-8">
<title>Authentification V3.1</title>
</head>
<body>
<h2>Authentification</h2>
<form method="POST" action ="verifLogin.php">
<label for="ztLogin">Login </label>
<input type="text" name="ztLogin" id="ztLogin" required=""/>
<label for="ztMdp">Mot de passe </label>
<input type="password" name="ztMdp" id="ztMdp" required=""/>
<br /> <br />
<input type="submit" value="Valider" />
</form>
<?php
// Affichage message d'erreur s'il existe
if (isset($_GET["msg"])) {
$msg = $_GET["msg"];
echo "<p>$msg</p>";
}
?>
</body>
</html>

View File

@ -0,0 +1,177 @@
<?php
/* * ***************************************************************************
* accesBDD.php
* Regroupement de toutes les fonctions d'accès à la base de données
* ************************************************************************** */
define("DEBUG_SQL", "debug-sql"); // nom du fichier de log
define("TYPE_LOG", 0); // utilisation du fichier de log standard
//define("TYPE_LOG", 3); // utilisation du fichier de log défini dans DEBUG_SQL
//unlink(DEBUG_SQL); // suppression fichier log
/**
* Connexion persistante au serveur
* @return \PDO Connexion
*/
function connexion() {
// Définition des variables de connexion
$user = "admin";
$pass = "minda";
$dsn = 'mysql:host=localhost;dbname=bdgsb'; //Data Source Name
// Connexion
try {
$dbh = new PDO($dsn, $user, $pass, array(
PDO::ATTR_PERSISTENT => true, // Connexion persistante
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
} catch (PDOException $e) {
erreurSQL($e->getMessage(), "Pb connexion", $dbh);
}
return $dbh;
}
/**
* Ajout de l'utilisateur dont les données sont passée en paramètre
* @param type $dbh chaine de connexion
* @param type $nom nom du nouvel utilisateur
* @param type $prenom prenom du nouvel utilisateur
* @param type $mail courriel du nouvel utilisateur
* @param type $login login, qui devra être unique
* @param type $mdp mot de passe
*/
function ajouterUtilisateur($dbh, $nom, $prenom, $mail, $login, $mdp) {
$ajout = false;
if (!existLogin($dbh, $login)) {
//echo("<br>mdpChiffre : " . $mdpChiffre);
$mdpChiffre = password_hash($mdp, PASSWORD_DEFAULT); //************ Chiffrement
$sql = "INSERT INTO utilisateur VALUES (NULL, '$nom', '$prenom', '$mail', '$login', '$mdpChiffre');";
$resultat = $dbh->exec($sql);
if ($resultat === false) {
erreurSQL("Pb lors de l ajout d un utilisateur.", $sql, $dbh);
}
$ajout = true;
}
return $ajout;
}
/**
* Recherche si le login existe déjà
* @param type $dbh Connexion
* @param type $login pseudo à vérifier
* @return type booléen, true si le login existe
*/
function existLogin($dbh, $login) {
$sql = "SELECT COUNT(*) FROM utilisateur WHERE login = '$login';";
$resultat = $dbh->query($sql); // Execution de la requete
if ($resultat === false) {
erreurSQL("Pb lors de la recherche du login.", $sql, $dbh);
}
$count = $resultat->fetchColumn(); // Retourne la valeur de la 1ère col de la ligne suivante (param 0 par défaut)
return ($count > 0);
}
/** afficherErreurSQL :
* Ajout message d'erreur dans le fichier log, fin de l'application
* @param $message : message a afficher
* @param $req : requete executee
* @param $dbh : connexion PDO
*/
function erreurSQL($message, $req, $dbh) {
error_log("\n***Erreur SQL*** " . date('Y-m-d H-i-s') . "\tAdresse IP : " . getIp(), TYPE_LOG, DEBUG_SQL);
error_log("\n\tMessage: " . $message, TYPE_LOG, DEBUG_SQL);
error_log("\n\tRequete: " . $req, TYPE_LOG, DEBUG_SQL);
if ($dbh) {
//$erreur = print_r($dbh->errorInfo(), true);
$erreur = $dbh->errorInfo()[2];
error_log("\n\tErreur: " . $erreur, TYPE_LOG, DEBUG_SQL);
}
//echo("Taille log : " . stat(DEBUG_SQL)[7]);
//echo(" - Date dernière modif : " . date("d m Y H:i:s.", filemtime(DEBUG_SQL)));
if (isset($_SESSION)) {
session_unset();
session_destroy();
}
die("<p id='erreur1'>Désolé, site actuellement indisponible </p>");
}
/**
* Controle de l'utilisateur, mot de passe non chiffré
* @param type $dbh
* @param type $pseudo
* @param type $mdp
* @return type utilisateur trouvé ou false sinon;
*/
function rechercherUtilisateur($dbh, $login, $mdp) {
$sql = "SELECT * FROM utilisateur WHERE login = '$login' AND mdp = '$mdp';";
$resultat = $dbh->query($sql); // Execution de la requete
if ($resultat === false) {
erreurSQL("Pb lors de la recherche de l utilisateur.", $sql, $dbh);
}
return $resultat->fetch();
}
/**
* Recherche de tous les clients
* @param type $dbh
* @return type jeu d'enregistrements
*/
function rechercherLesClients($dbh) {
$sql = "SELECT * FROM client ORDER BY codePostal;";
$resultat = $dbh->query($sql); // Execution de la requete
if ($resultat === false) {
erreurSQL("Pb lors de la recherche des clients.", $sql, $dbh);
}
return $resultat;
}
/**
* Controle de l'utilisateur, mot de passe chiffré
* @param type $dbh
* @param type $login
* @param type $mdp
* @return type false si le contrôle a échoué, l'utilisateur sinon
*/
function controlerUtilisateur($dbh, $login, $mdp) {
$sql = "SELECT * FROM utilisateur WHERE login = '$login';";
$resultat = $dbh->query($sql); // Execution de la requete
if ($resultat === false) {
erreurSQL("Pb lors de la recherche de l utilisateur.", $sql, $dbh);
}
$user = $resultat->fetch();
$hash = $user ? $user["mdp"] : " ";
return password_verify($mdp, $hash) ? $user : false;
}
/**
* Récupération adresse IP du client
* @return type
*/
function getIp() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
function rechercherLesVisitesDuCommercial($dbh, $id) {
$sql = "SELECT idVisite, praNom, praPrenom, praVille, date, heure, remarque FROM visite INNER JOIN praticien ON visite.praNum= praticien.praNum ORDER BY date, heure";
$resultat = $dbh->query($sql); // Execution de la requete
if ($resultat === false) {
erreurSQL("Pb lors de la recherche des visites.", $sql, $dbh);
}
return $resultat;
}
function rechercherLesComptesRendusDuCommercial($dbh, $idVisite){
$sql = "SELECT idCompteRendu, praNom, praPrenom, visite.date, visite.heure, remarque, compteRendu FROM comptesRendus INNER JOIN visite ON visite.idVisite= comptesRendus.idVisite NATURAL JOIN praticien WHERE visite.idVisite = $idVisite";
$resultat = $dbh->query($sql); // Execution de la requete
if ($resultat === false) {
erreurSQL("Pb lors de la recherche des comptes rendus.", $sql, $dbh);
}
return $resultat;
}

View File

@ -0,0 +1,9 @@
<?php
include_once("entete.php");
include_once("modele/accesBDD.php");
?>
<h2>Module responsable</h2>
<h5>module en cours de construction</h5>
</body>
</html>

View File

@ -0,0 +1,4 @@
copy.src.on.open=false
index.file=index.php
run.as=LOCAL
url=http://localhost/PHPProjects/Authentification25

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group>
<file>file:/home/clement.bouillot/NetBeansProjects/Authentification24/affichageVisite.php</file>
<file>file:/home/clement.bouillot/NetBeansProjects/Authentification24/moduleResponsable.php</file>
<file>file:/home/clement.bouillot/NetBeansProjects/Authentification24/validInscription.php</file>
<file>file:/home/clement.bouillot/NetBeansProjects/Authentification24/entete.php</file>
<file>file:/home/clement.bouillot/NetBeansProjects/Authentification24/nouvelleVisite.php</file>
<file>file:/home/clement.bouillot/NetBeansProjects/Authentification24/index.php</file>
<file>file:/home/clement.bouillot/NetBeansProjects/Authentification24/verifLogin.php</file>
<file>file:/home/clement.bouillot/NetBeansProjects/Authentification24/affichageCompteRendu.php</file>
<file>file:/home/clement.bouillot/NetBeansProjects/Authentification24/ajoutCompteRendu.php</file>
<file>file:/home/clement.bouillot/NetBeansProjects/Authentification24/deconnexion.php</file>
</group>
</open-files>
</project-private>

View File

@ -0,0 +1,7 @@
include.path=${php.global.include.path}
php.version=PHP_73
source.encoding=UTF-8
src.dir=.
tags.asp=false
tags.short=false
web.root=.

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.php.project</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/php-project/1">
<name>Authentification2</name>
</data>
</configuration>
</project>

View File

@ -0,0 +1,44 @@
<!--
* nouvelleVisite.php
-->
<?php
include_once("entete.php");
include_once("modele/accesBDD.php");
?>
<h2>Nouvelle visite</h2>
<form method="POST">
<label for="listeClient">Sélectionner le client à visiter </label>
<select name=ldrClient id="listeClient" required>
<optgroup label="Les clients">
<?php
$dbh = connexion();
$lesClients = rechercherLesClients($dbh);
while ($unClient = $lesClients->fetch()) { // Lecture 1ère ligne jeu d'enregistrements
$id = $unClient['id'];
$lib = $unClient['nom'] . " " . $unClient['prenom'] . ", "
. $unClient['adresse'] . " " . $unClient['codePostal'] . " " . $unClient['ville'];
echo "<option value='$id'>$lib</option>";
$unClient = $lesClients->fetch(); // Lecture suivante
}
?>
</optgroup>
</select>
<br /><br />
<label for="ztDate">Date de la visite </label>
<input type="date" name="ztDate" id="ztDate" required />
<label for="ztHeure">Heure de la visite </label>
<input type="time" name="ztHeure" id="ztHeure" required />
<br /><br />
<label for="txtRemarque">Remarque </label>
<textarea name="txtRemarque" id="txtRemarque"></textarea>
<br /><br />
<input type="submit" value="Valider" />
</form>
<?php
if (isset($_GET['msg'])) {
$message = $_GET['msg'];
echo "<p>$message</p>";
}
?>
</body>
</html>

View File

@ -0,0 +1,61 @@
<?php
/*
* validInscription.php
* Validation des données saisies dans le formulaire inscription.php
*/
// Suppression des caractères spéciaux
$data = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
//var_dump($data);
// Si le nombre de variables reçues est différents du nombre attendu, retour au formulaire
const NB_VAR = 5; // Nombre de variables attendues
if (count($data)!=NB_VAR) {
header("location:inscription.php");
exit();
}
// Contrôles des zones obligatoires
$lib=["Nom", "Prénom", "Adresse de courriel","Login", "Mot de passe"];
$valeurs = array_values($data);
for($i=0; $i<NB_VAR; $i++) {
if (strlen(trim($valeurs[$i]))<=0) {
$message = $lib[$i]." non valide";
header("location:inscription.php?msg=$message");
exit();
}
}
// Contrôle de l'adresse mail
//$mail=filter_input(INPUT_POST, 'ztMail', FILTER_VALIDATE_EMAIL);
$mail=filter_var($data["ztMail"], FILTER_VALIDATE_EMAIL);
if ($mail===false or $mail === null) {
$message = "Adresse de courriel non valide";
//echo $message;
header("location:inscription.php?msg=$message");
exit();
}
// Contrôles ok, affichage des données
echo "<h3>Les données de l'inscription sont validées</h3>";
for($i=0; $i<NB_VAR; $i++) {
echo "$lib[$i] : $valeurs[$i]<br>";
}
// Test
/*$script = "<script>alert(\"Coucou!\")</script>";
$texte = "Bonjour Èric ".$script ;
echo $script; // Sans filtre
$mess = filter_var($texte, FILTER_SANITIZE_SPECIAL_CHARS);
echo ("<br>texte : $mess"); */
// Ajout de l'utilisateur dans la base de données
require_once('modele/accesBDD.php');
$dbh = connexion();
if (ajouterUtilisateur($dbh, $data['ztNom'], $data['ztPrenom'], $data['ztMail'], $data['ztLogin'], $data['ztMdp'])) {
$message = "<p>Votre compte a été créé, vous pouvez désormais vous authentifier</p>";
header("location:index.php?msg=$message");
} else {
$message = "<p>Désolé, ce login n'est pas possible</p>";
header("location:inscription.php?msg=$message");
}

View File

@ -0,0 +1,68 @@
<?php
session_start();
/*
* verifLogin.php
* Contrôle du login et du mot de passe saisi
*/
// Si ztLogin ou si ztMdp n'existe pas, retour à la page index
//if (!isset($_POST["ztLogin"]) or !isset($_POST["ztMdp"])) {
// header('location: index.php'); // retour page index
// exit();
//}
// Récupération du login et du mot de passe saisi
//$login = $_POST["ztLogin"];
//$mdp = $_POST["ztMdp"];
//echo "<p>Login saisi : $login, mot de passe saisi : $mdp</p>";
// Contrôle login et mot de passe
//if ($login == "tintin" and $mdp == "milou"){
// echo "<h3>Bienvenue $login</h3";
//} else {
// header('location: index.php?msg=Erreur login ou mot de passe'); // retour page index avec message d'erreur
// exit();
//}
// Suppression des caractères spéciaux
$data = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
//var_dump($data);
// Si le nombre de variables reçues est différents du nombre attendu, retour au formulaire
const NB_VAR = 2; // Nombre de variables attendues
if (count($data) != NB_VAR) {
header("location:index.php");
exit();
}
// Contrôles des zones obligatoires
$lib = ["Login", "Mot de passe"];
$valeurs = array_values($data);
for ($i = 0; $i < NB_VAR; $i++) {
if (strlen(trim($valeurs[$i])) <= 0) {
$message = $lib[$i] . " non valide";
header("location:inscription.php?msg=$message");
exit();
}
}
require_once('modele/accesBDD.php');
$dbh = connexion();
$user = controlerUtilisateur($dbh, $data["ztLogin"], $data["ztMdp"]);
if ($user) {
$_SESSION['id'] = $user['id'];
$_SESSION['nom'] = $user['nom'];
$_SESSION['prenom'] = $user['prenom'];
$_SESSION['role']= $user['role'];
if ($user['role']==0){
header("location:affichageVisite.php");
}
else{
header("location:moduleResponsable.php");
}
//echo "<p>Authentification réussie, bienvenue " . $user['prenom'] . " " . $user['nom'] . "</p>";
} else {
$message = "Login ou mot de passe erroné";
header("location:index.php?msg=$message");
exit();
}