bootstrap
This commit is contained in:
37
tp-bd-files/docker-compose.yml
Normal file
37
tp-bd-files/docker-compose.yml
Normal file
@ -0,0 +1,37 @@
|
||||
version: "3.3"
|
||||
|
||||
services:
|
||||
db:
|
||||
image: postgres
|
||||
container_name: postgres
|
||||
#networks:
|
||||
# - postgres
|
||||
environment:
|
||||
- POSTGRES_DB=clientsdb
|
||||
- POSTGRES_PASSWORD=foo
|
||||
- POSTGRES_USER=www
|
||||
ports:
|
||||
- 5432:5432
|
||||
volumes:
|
||||
- ${PWD}/sqlinit:/docker-entrypoint-initdb.d
|
||||
- mydb:/var/lib/postgresql/data
|
||||
|
||||
webapp:
|
||||
build: webapp/
|
||||
image: webapp-image
|
||||
container_name: webapp
|
||||
ports:
|
||||
- 80:80
|
||||
volumes:
|
||||
- ${PWD}/webapp:/var/www/html
|
||||
|
||||
phppgadmin:
|
||||
image: bitnami/phppgadmin
|
||||
container_name: phppgadmin
|
||||
ports:
|
||||
- 81:8080
|
||||
environment:
|
||||
- DATABASE_HOST=postgres
|
||||
|
||||
volumes:
|
||||
mydb:
|
11
tp-bd-files/sqlinit/sqlinit.sql
Normal file
11
tp-bd-files/sqlinit/sqlinit.sql
Normal file
@ -0,0 +1,11 @@
|
||||
-- CREATE USER www WITH PASSWORD 'foo';
|
||||
-- CREATE DATABASE clientsdb OWNER www;
|
||||
\c clientsdb
|
||||
CREATE TABLE clients (id SERIAL, name varchar(15), password varchar(15), role varchar(15), email varchar(25), comment varchar(5000), message varchar(5000));
|
||||
ALTER TABLE clients OWNER TO www;
|
||||
INSERT INTO clients( name, password, role) VALUES ('admin', 'admin', 'admin');
|
||||
INSERT INTO clients( name, password, role) VALUES ('helpdesk1', 'helpdesk1', 'helpdesk');
|
||||
INSERT INTO clients( name, password, role) VALUES ('helpdesk2', 'helpdesk2', 'helpdesk');
|
||||
INSERT INTO clients( name, password, role) VALUES ('client1', 'client1', 'client');
|
||||
INSERT INTO clients( name, password, role) VALUES ('client2', 'client2', 'client');
|
||||
INSERT INTO clients( name, password, role) VALUES ('client3', 'client3', 'client');
|
3
tp-bd-files/webapp/Dockerfile
Normal file
3
tp-bd-files/webapp/Dockerfile
Normal file
@ -0,0 +1,3 @@
|
||||
FROM php:apache
|
||||
|
||||
RUN apt-get update && apt-get install -y libpq-dev && docker-php-ext-install pgsql
|
13
tp-bd-files/webapp/README.txt
Normal file
13
tp-bd-files/webapp/README.txt
Normal file
@ -0,0 +1,13 @@
|
||||
Application web de gestion clientèle.
|
||||
|
||||
- admin/ contient le code pour ajouter/supprimer des clients
|
||||
- helpdesk/ contient le code pour modifier des clients, lire leur message et le modifier
|
||||
- clients/ contient le code permettant à chaque client de voir ses infos et d'envoyer un message au helpdesk
|
||||
|
||||
Dans chaque dossier :
|
||||
- index.php fournit la page de login
|
||||
- do_login.php traite le login, stocke login et pass dans la session PHP puis redirige vers la page d'affichage print_clients.php
|
||||
- print_clients.php affiche, selon le cas, la liste + ajout/suppression, la liste + modification ou le compte du client connecté
|
||||
- do_*.php traite les actions sur la BD (insertion, suppression, modification) demandées par print_clients.php puis redirige vers print_clients.php
|
||||
|
||||
La table utilisée est 'clients' de la base 'clientsdb' avec le compte www/foo.
|
19
tp-bd-files/webapp/admin/do_login.php
Normal file
19
tp-bd-files/webapp/admin/do_login.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
ob_start();
|
||||
session_start();
|
||||
$_SESSION['login']=$_POST['login'];
|
||||
$_SESSION['password']=$_POST['password'];
|
||||
|
||||
require_once("../db.inc.php");
|
||||
|
||||
|
||||
$login = $_POST['login'];
|
||||
$password = $_POST['password'];
|
||||
$query = "SELECT * FROM clients WHERE name='$login' AND password='$password' AND role='admin'";
|
||||
$result = pg_query($dbconn, $query) or die('Échec de la requête : ' . pg_last_error());
|
||||
|
||||
if (pg_num_rows($result) > 0)
|
||||
header('Location: print_clients.php');
|
||||
else
|
||||
print "Authentication failed, $query";
|
||||
?>
|
32
tp-bd-files/webapp/admin/do_support.php
Normal file
32
tp-bd-files/webapp/admin/do_support.php
Normal file
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
ob_start();
|
||||
session_start();
|
||||
echo "Login is ". $_SESSION['login'];
|
||||
echo " <a href=login.php?logout=1>Logout</a><br/><br/>";
|
||||
|
||||
require_once("../db.inc.php");
|
||||
|
||||
|
||||
// Gestion des ajouts/suppressions
|
||||
if (isset($_POST['name'])) { // Ajout d'un nouveau client
|
||||
$name=$_POST['name'];
|
||||
$email=$_POST['email'];
|
||||
$comment=$_POST['comment'];
|
||||
$password=$_POST['password'];
|
||||
$role=$_POST['role'];
|
||||
$query = "INSERT INTO clients (name, email, comment, password, role) VALUES ('$name','$email','$comment', '$password', '$role')";
|
||||
pg_query($dbconn, $query) or die('Échec de la requête : ' . pg_last_error());
|
||||
}
|
||||
|
||||
if (isset($_GET['delete'])) { // Suppression d'un client
|
||||
$id = $_GET['delete'];
|
||||
$query = "DELETE FROM clients WHERE id='$id'";
|
||||
pg_query($dbconn, $query) or die('Échec de la requête : ' . pg_last_error());
|
||||
}
|
||||
|
||||
|
||||
// Ferme la connexion
|
||||
pg_close($dbconn);
|
||||
|
||||
header('Location: print_clients.php');
|
||||
?>
|
17
tp-bd-files/webapp/admin/index.php
Normal file
17
tp-bd-files/webapp/admin/index.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?
|
||||
session_start();
|
||||
unset($_SESSION['login']);
|
||||
unset($_SESSION['password']);
|
||||
?>
|
||||
|
||||
<html><head><title>Login Admin</title></head>
|
||||
<body>
|
||||
<form action="do_login.php" method="post">
|
||||
Login: <input type="text" name="login"><br/>
|
||||
Password: <input type="password" name="password"><br/>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
45
tp-bd-files/webapp/admin/print_clients.php
Normal file
45
tp-bd-files/webapp/admin/print_clients.php
Normal file
@ -0,0 +1,45 @@
|
||||
<?php
|
||||
session_start();
|
||||
echo "Login is ". $_SESSION['login'];
|
||||
echo " <a href=index.php?logout=1>Logout</a><br/><br/>";
|
||||
|
||||
require_once("../db.inc.php");
|
||||
|
||||
// Affichage de la table des clients
|
||||
// Exécution de la requête SQL
|
||||
$query = 'SELECT * FROM clients';
|
||||
$result = pg_query($dbconn, $query) or die('Échec de la requête : ' . pg_last_error());
|
||||
|
||||
// Affichage des résultats en HTML
|
||||
echo "<table border=1><tr><td>Name</td><td>Email</td><td>Comment</td><td>Role</td><td>Supprimer</td>\n";
|
||||
while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
|
||||
$id=$line['id'];
|
||||
$name=$line['name'];
|
||||
$email=$line['email'];
|
||||
$comment=$line['comment'];
|
||||
$role=$line['role'];
|
||||
|
||||
echo "\t<tr><td>$name</td><td>$email</td><td>$comment</td><td>$role</td>\n";
|
||||
echo "\t<td><a href=do_support.php?delete=".$id.">Supprimer</a></td></tr>\n";
|
||||
}
|
||||
echo "</table>\n";
|
||||
|
||||
// Libère le résultat
|
||||
pg_free_result($result);
|
||||
|
||||
// Ferme la connexion
|
||||
pg_close($dbconn);
|
||||
?>
|
||||
|
||||
|
||||
|
||||
<br/><br/>
|
||||
Ajouter un client :<br/>
|
||||
<form action=do_support.php method=post>
|
||||
Name: <input type="text" name="name"><br/>
|
||||
Password: <input type="text" name="password"><br/>
|
||||
Role: <input type="text" name="role"><br/>
|
||||
Email: <input type="text" name="email"><br/>
|
||||
Comment: <input type="text" name="comment"><br/>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
19
tp-bd-files/webapp/clients/do_login.php
Normal file
19
tp-bd-files/webapp/clients/do_login.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
ob_start();
|
||||
session_start();
|
||||
$_SESSION['login']=$_POST['login'];
|
||||
$_SESSION['password']=$_POST['password'];
|
||||
|
||||
require_once("../db.inc.php");
|
||||
|
||||
|
||||
$login = $_POST['login'];
|
||||
$password = $_POST['password'];
|
||||
$query = "SELECT * FROM clients WHERE name='$login' AND password='$password' AND role='client'";
|
||||
$result = pg_query($dbconn, $query) or die('Échec de la requête : ' . pg_last_error());
|
||||
|
||||
if (pg_num_rows($result) > 0)
|
||||
header('Location: print_clients.php');
|
||||
else
|
||||
print "Authentication failed, $query";
|
||||
?>
|
19
tp-bd-files/webapp/clients/do_message.php
Normal file
19
tp-bd-files/webapp/clients/do_message.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
// ob_start();
|
||||
session_start();
|
||||
|
||||
require_once("../db.inc.php");
|
||||
|
||||
// Gestion des modifications
|
||||
if (isset($_POST['message'])) { // Ajout du message dans la BD
|
||||
$message=$_POST['message'];
|
||||
$login=$_SESSION['login'];
|
||||
$query = "UPDATE clients SET message='$message' WHERE name='$login'";
|
||||
pg_query($dbconn, $query) or die('Échec de la requête : ' . pg_last_error());
|
||||
}
|
||||
|
||||
// Ferme la connexion
|
||||
pg_close($dbconn);
|
||||
|
||||
header('Location: print_clients.php');
|
||||
?>
|
17
tp-bd-files/webapp/clients/index.php
Normal file
17
tp-bd-files/webapp/clients/index.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?
|
||||
session_start();
|
||||
unset($_SESSION['login']);
|
||||
unset($_SESSION['password']);
|
||||
?>
|
||||
|
||||
<html><head><title>Login Client</title></head>
|
||||
<body>
|
||||
<form action="do_login.php" method="post">
|
||||
Login: <input type="text" name="login"><br/>
|
||||
Password: <input type="password" name="password"><br/>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
37
tp-bd-files/webapp/clients/print_clients.php
Normal file
37
tp-bd-files/webapp/clients/print_clients.php
Normal file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
session_start();
|
||||
echo "Login is ". $_SESSION['login'];
|
||||
echo " <a href=index.php?logout=1>Logout</a><br/><br/>";
|
||||
|
||||
require_once("../db.inc.php");
|
||||
|
||||
// Affichage de la table des clients
|
||||
// Exécution de la requête SQL
|
||||
$login = $_SESSION['login'];
|
||||
$query = "SELECT * FROM clients WHERE name='$login'";
|
||||
$result = pg_query($dbconn,$query) or die('Échec de la requête : ' . pg_last_error());
|
||||
|
||||
// Affichage des résultats en HTML
|
||||
echo "<table border=1><tr><td>Name</td><td>Email</td><td>Message</td></tr>\n";
|
||||
while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
|
||||
$id=$line['id'];
|
||||
$name=$line['name'];
|
||||
$email=$line['email'];
|
||||
$message=$line['message'];
|
||||
|
||||
echo "\t<tr><td>$name</td><td>$email</td><td>$message</td></tr>\n";
|
||||
}
|
||||
echo "</table>\n";
|
||||
|
||||
// Libère le résultat
|
||||
pg_free_result($result);
|
||||
|
||||
// Ferme la connexion
|
||||
pg_close($dbconn);
|
||||
?>
|
||||
|
||||
Envoyer un message :
|
||||
<form action=do_message.php method=post>
|
||||
<input type=text name=message>
|
||||
<input type=submit>
|
||||
</form>
|
9
tp-bd-files/webapp/db.inc.php
Normal file
9
tp-bd-files/webapp/db.inc.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
$logindb = 'www';
|
||||
$passworddb = 'foo';
|
||||
$dbconn = pg_connect("host=postgres dbname=clientsdb user=$logindb password=$passworddb")
|
||||
or die('Connexion impossible : ' . pg_last_error());
|
||||
|
||||
|
||||
?>
|
24
tp-bd-files/webapp/helpdesk/do_helpdesk.php
Normal file
24
tp-bd-files/webapp/helpdesk/do_helpdesk.php
Normal file
@ -0,0 +1,24 @@
|
||||
<?php
|
||||
session_start();
|
||||
ob_start();
|
||||
echo "Login is ". $_SESSION['login'];
|
||||
echo " <a href=login.php?logout=1>Logout</a><br/><br/>";
|
||||
|
||||
require_once("../db.inc.php");
|
||||
|
||||
// Gestion des modifications
|
||||
if (isset($_POST['name'])) { // Modification d'un client existant
|
||||
$name=$_POST['name'];
|
||||
$email=$_POST['email'];
|
||||
$comment=$_POST['comment'];
|
||||
$id=$_POST['id'];
|
||||
$message=$_POST['message'];
|
||||
$query = "UPDATE clients SET name='$name',email='$email',comment='$comment',message='$message' WHERE id='$id'";
|
||||
pg_query($dbconn, $query) or die('Échec de la requête : ' . pg_last_error());
|
||||
}
|
||||
|
||||
// Ferme la connexion
|
||||
pg_close($dbconn);
|
||||
|
||||
header('Location: print_clients.php');
|
||||
?>
|
18
tp-bd-files/webapp/helpdesk/do_login.php
Normal file
18
tp-bd-files/webapp/helpdesk/do_login.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
session_start();
|
||||
$_SESSION['login']=$_POST['login'];
|
||||
$_SESSION['password']=$_POST['password'];
|
||||
|
||||
require_once("../db.inc.php");
|
||||
|
||||
|
||||
$login = $_POST['login'];
|
||||
$password = $_POST['password'];
|
||||
$query = "SELECT * FROM clients WHERE name='$login' AND password='$password' AND role='helpdesk'";
|
||||
$result = pg_query($dbconn, $query) or die('Échec de la requête : ' . pg_last_error());
|
||||
|
||||
if (pg_num_rows($result) > 0)
|
||||
header('Location: print_clients.php');
|
||||
else
|
||||
print "Authentication failed, $query";
|
||||
?>
|
17
tp-bd-files/webapp/helpdesk/index.php
Normal file
17
tp-bd-files/webapp/helpdesk/index.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?
|
||||
session_start();
|
||||
unset($_SESSION['login']);
|
||||
unset($_SESSION['password']);
|
||||
?>
|
||||
|
||||
<html><head><title>Login Helpdesk</title></head>
|
||||
<body>
|
||||
<form action="do_login.php" method="post">
|
||||
Login: <input type="text" name="login"><br/>
|
||||
Password: <input type="password" name="password"><br/>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
33
tp-bd-files/webapp/helpdesk/print_clients.php
Normal file
33
tp-bd-files/webapp/helpdesk/print_clients.php
Normal file
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
session_start();
|
||||
echo "Login is ". $_SESSION['login'];
|
||||
echo " <a href=index.php?logout=1>Logout</a><br/><br/>";
|
||||
|
||||
require_once("../db.inc.php");
|
||||
|
||||
// Affichage de la table des clients
|
||||
// Exécution de la requête SQL
|
||||
$query = 'SELECT * FROM clients';
|
||||
$result = pg_query($dbconn, $query) or die('Échec de la requête : ' . pg_last_error());
|
||||
|
||||
// Affichage des résultats en HTML
|
||||
echo "<table border=1><tr><td>Name</td><td>Email</td><td>Comment</td><td>Message</td><td>Name</td><td>Email</td><td>Comment</td><td>Message</td><td>Update</td></tr>\n";
|
||||
while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
|
||||
$id=$line['id'];
|
||||
$name=$line['name'];
|
||||
$email=$line['email'];
|
||||
$comment=$line['comment'];
|
||||
$message=$line['message'];
|
||||
|
||||
echo "\t<tr><td>$name</td><td>$email</td><td>$comment</td><td> $message</td>\n";
|
||||
|
||||
echo "\t<form action=do_helpdesk.php method=post><td><input type=text name=name value=\"$name\"></td><td><input type=text name=email value=$email></td><td><input type=text name=comment value=\"$comment\"></td><td><input type=text name=message value=\"$message\"></td><td><input type=submit value=Update><input type=hidden name=id value=$id></td></form></tr>\n";
|
||||
}
|
||||
echo "</table>\n";
|
||||
|
||||
// Libère le résultat
|
||||
pg_free_result($result);
|
||||
|
||||
// Ferme la connexion
|
||||
pg_close($dbconn);
|
||||
?>
|
Reference in New Issue
Block a user