nathan boileau 2 years ago
commit 499bb5a3b9

@ -1,39 +0,0 @@
CREATE TABLE Admin(
email varchar(50) PRIMARY KEY,
pseudo varchar(50),
mdp varchar(50)
);
CREATE TABLE Enigme(
idEnigme char(5) PRIMARY KEY,
admin varchar(50) REFERENCES Admin(email),
enonce varchar(250) NOT NULL,
aide varchar(250),
rappel varchar(250),
solution varchar(250) NOT NULL,
test varchar(250) NOT NULL,
tempsDeResolution numeric CHECK (tempsDeResolution >0)
);
CREATE TABLE Joueur(
email varchar(50) PRIMARY KEY,
enigmeEnCours varchar(50) REFERENCES Enigme(idEnigme),
pseudo varchar(50),
mdp varchar(50)
);
CREATE TABLE Partie(
idPartie char(5) NOT NULL,
joueur varchar(50) REFERENCES Joueur(email),
enigme char(5) REFERENCES Enigme(idEnigme),
points numeric CHECK (points >0),
PRIMARY KEY(idGame, joueur, enigme)
);
CREATE TABLE DetailPartie(
idPartie char(5) NOT NULL,
joueur varchar(50) REFERENCES Joueur(email),
enigme char(5) REFERENCES Enigme(idEnigme),
points numeric CHECK (points >0),
PRIMARY KEY(idGame, joueur, enigme)
);

@ -0,0 +1,16 @@
<?php
//préfixe
$rep='../';
//BD
$dsn = 'mysql:host=londres.uca.local; dbname=dbnogarnier1';
$user = 'nogarnier1';
$password = 'achanger';
//View
$vues['erreurSignUp']='View/Error/ErreurSignUp.php';
$vues['erreur']='View/Error/Erreur.php';
$vues['erreurBd']='View/Error/ErreurBd.php';
$vues['erreurLoginEmail']='View/Error/ErreurLoginEmail.php';
$vues['erreurLoginMdp']='View/Error/ErreurLoginMdp.php';
$vues['erreur404']='View/Error/Erreur404.php';

@ -1,7 +1,5 @@
<?php
require 'JoueurGateway.php';
class Controller
{
private Connection $con;
@ -13,33 +11,108 @@ class Controller
$this->con=$con;
session_start();
try{
global $rep, $vues;
$action=$_REQUEST['action'];
switch($action) {
case NULL:
//require ('../View/src/pages/Main.html');
header('Location: http://londres.uca.local/~nogarnier1/Scripted/WEB/View/src/pages/Main.html');
require ('./View/src/pages/Main.php');
//header('Location: http://londres.uca.local/~nogarnier1/Scripted/WEB/View/src/pages/Main.html');
break;
case "signUp":
$this->signUp();
break;
case "login":
$this->login();
break;
case "goToPresentation":
$this->goToPresentation();
break;
case "goToHome":
$this->goToHome();
break;
case "goToLogin":
$this->goToLogin();
break;
case "goToSignUp":
$this->goToSignUp();
break;
}
} catch (PDOException $e)
{
//si erreur BD, pas le cas ici
$dataVueEreur[] = "Erreur inattendue!!! ";
//require(__DIR__.'/../vues/erreur.php'); // ajout du code de la vue ici
}
catch (Exception $e2)
{
$dataVueEreur[] = "Erreur inattendue!!! ";
//require ($rep.$vues['erreur']);
require ($rep.$vues['erreurBd']);
}
}
private function login() {
private function signUp() {
global $rep, $vues;
try {
$gateway = new JoueurGateway($this->con);
$validation = new Validation();
if (! $validation->ValidateEmail($_REQUEST['email'])) {
throw (new Exception("Email non valide"));
}
$joueur = new Joueur($_REQUEST['email'], $_REQUEST['username'], $_REQUEST['password']);
$gateway->insert($joueur);
$gateway->showAll();
$_SESSION['connected'] = 'true';
require ('./View/src/pages/Main.php');
}catch (Exception $e){
require($rep.$vues['erreurSignUp']);
}
}
private function login(){
global $rep, $vues;
try {
$gateway = new JoueurGateway($this->con);
$joueur = $gateway->getJoueurByEmail($_REQUEST['email']);
if ($joueur->getEmail() == null){
throw new JoueurNotFoundException("Joueur introuvable");
}
$mdp = $gateway->getMdpByEmail($_REQUEST['email']);
if ($mdp != $_REQUEST['password']){
throw new InvalidMdpException("Mot de passe invalide");
}
$_SESSION['connected'] = 'true';
require ('./View/src/pages/Main.php');
}catch (JoueurNotFoundException $e){
require($rep.$vues['erreurLoginEmail']);
}catch (InvalidMdpException $m) {
require($rep . $vues['erreurLoginMdp']);
}
}
private function goToPresentation() {
global $rep, $vues;
try {
require ('./View/src/pages/Presentation.html');
}catch (Exception $e){
require($rep.$vues['erreur404']);
}
}
private function goToHome() {
global $rep, $vues;
try {
require ('./View/src/pages/Main.php');
}catch (Exception $e){
require($rep.$vues['erreur404']);
}
}
private function goToLogin() {
global $rep, $vues;
try {
require ('./View/src/pages/LogSign/Login.php');
}catch (Exception $e){
require($rep.$vues['erreur404']);
}
}
private function goToSignUp() {
global $rep, $vues;
try {
require ('./View/src/pages/LogSign/SignUp.php');
}catch (Exception $e){
require($rep.$vues['erreur404']);
}
}
}

@ -1,52 +0,0 @@
<?php
class DetailPartieGateway
{
private Connection $con;
/**
* @param Connection $con
*/
public function __construct(Connection $con)
{
$this->con = $con;
}
/**
* @param Connection $con
*/
public function setCon(Connection $con): void
{
$this->con = $con;
}
public function insert(DetailPartie $detailPartie)
{
$query="INSERT INTO DetailPartie VALUES (:idDetailPartie,:joueur,:partie,:enigme,:pointsObtenus,:classement)";
$this->con->executeQuery($query,array(
'idDetailPartie' => array($detailPartie->getIdDetailPartie(),PDO::PARAM_STR),
'joueur' => array($detailPartie->getJoueur(),PDO::PARAM_STR),
'partie' => array($detailPartie->getPartie(),PDO::PARAM_STR),
'enigme' => array($detailPartie->getEnigme(),PDO::PARAM_STR),
'pointsObtenus' => array($detailPartie->getPointsObtenus(),PDO::PARAM_INT),
'classement' => array($detailPartie->getClassement(),PDO::PARAM_INT)
));
}
public function delete(string $partie){
$query="DELETE * FROM DetailPartie WHERE partie=:partie";
$this->con->executeQuery($query,array(
'partie' => array($partie,PDO::PARAM_STR)
));
}
public function showAll(){
$query="SELECT * FROM DetailPartie";
$this->con->executeQuery($query);
$results=$this->con->getResults();
foreach($results as $row)
{
$row['idDetailPartie'];
}
}
}

@ -1,6 +1,4 @@
<?php
require_once "../Config/Connection.php";
require_once "../Model/Enigme.php";
class EnigmeGateway
{

@ -0,0 +1,10 @@
<?php
class InvalidMdpException extends Exception {
public function errorMessage() {
//error message
$errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()
.': <b>'.$this->getMessage().'</b> Mdp invalide';
return $errorMsg;
}
}

@ -1,8 +1,5 @@
<?php
require_once "../Model/Joueur.php";
require_once "../Config/Connection.php";
class JoueurGateway
{
private Connection $con;
@ -37,6 +34,38 @@ class JoueurGateway
));
}
public function getJoueurByEmail(string $email) : Joueur{
$query = "SELECT * FROM Joueur WHERE email=:email";
$this->con->executeQuery($query, array(
':email' => array($email,PDO::PARAM_STR)
));
$results=$this->con->getResults();
foreach ($results as $row) {
$email=$row['email'];
$pseudo=$row['pseudo'];
$mdp=$row['mdp'];
}
if ($results == null){
throw new JoueurNotFoundException("Joueur Introuvable");
}
return new Joueur($email, $pseudo, $mdp);
}
public function getMdpByEmail(string $email) : string{
$query = "SELECT mdp FROM Joueur WHERE email=:email";
$this->con->executeQuery($query, array(
':email' => array($email,PDO::PARAM_STR)
));
$results=$this->con->getResults();
foreach ($results as $row) {
$mdp=$row['mdp'];
}
if ($results == null){
throw new InvalidMdpException("Mots de passe Incorrect");
}
return $mdp;
}
public function showAll() : void{
$query = "SELECT * FROM Joueur";
$this->con->executeQuery($query);

@ -0,0 +1,10 @@
<?php
class JoueurNotFoundException extends Exception {
public function errorMessage() {
//error message
$errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()
.': <b>'.$this->getMessage().'</b> Joueur not found';
return $errorMsg;
}
}

@ -1,12 +0,0 @@
<html>
<body>
<?php
require 'Controller.php';
$dsn = 'mysql:host=londres.uca.local; dbname=dbnogarnier1';
$user = 'nogarnier1';
$password = 'achanger';
$con = new Connection($dsn, $user, $password);
$control = new Controller($con)
?>
</body>
</html>

@ -1,125 +0,0 @@
<?php
class DetailPartie
{
private string $idDetailPartie;
private string $joueur;
private string $partie;
private string $enigme;
private int $pointsObtenus;
private int $classement;
/**
* @param string $idDetailPartie
* @param string $joueur
* @param string $partie
* @param string $enigme
* @param int $pointsObtenus
* @param int $classement
*/
public function __construct(string $idDetailPartie, string $joueur, string $partie, string $enigme, int $pointsObtenus, int $classement)
{
$this->idDetailPartie = $idDetailPartie;
$this->joueur = $joueur;
$this->partie = $partie;
$this->enigme = $enigme;
$this->pointsObtenus = $pointsObtenus;
$this->classement = $classement;
}
/**
* @return string
*/
public function getIdDetailPartie(): string
{
return $this->idDetailPartie;
}
/**
* @param string $idDetailPartie
*/
public function setIdDetailPartie(string $idDetailPartie): void
{
$this->idDetailPartie = $idDetailPartie;
}
/**
* @return string
*/
public function getJoueur(): string
{
return $this->joueur;
}
/**
* @param string $joueur
*/
public function setJoueur(string $joueur): void
{
$this->joueur = $joueur;
}
/**
* @return string
*/
public function getPartie(): string
{
return $this->partie;
}
/**
* @param string $partie
*/
public function setPartie(string $partie): void
{
$this->partie = $partie;
}
/**
* @return string
*/
public function getEnigme(): string
{
return $this->enigme;
}
/**
* @param string $enigme
*/
public function setEnigme(string $enigme): void
{
$this->enigme = $enigme;
}
/**
* @return int
*/
public function getPointsObtenus(): int
{
return $this->pointsObtenus;
}
/**
* @param int $pointsObtenus
*/
public function setPointsObtenus(int $pointsObtenus): void
{
$this->pointsObtenus = $pointsObtenus;
}
/**
* @return int
*/
public function getClassement(): int
{
return $this->classement;
}
/**
* @param int $classement
*/
public function setClassement(int $classement): void
{
$this->classement = $classement;
}
}

@ -3,17 +3,15 @@
class Enigme
{
private string $idEnigme;
private string $admin;
private string $enonce;
private string $aide;
private string $rappel;
private string $solution;
private string $test;
private float $tempsDeResolution;
private int $tempsDeResolution;
/**
* @param string $idEnigme
* @param string $admin
* @param string $enonce
* @param string $aide
* @param string $rappel
@ -21,16 +19,29 @@ class Enigme
* @param string $test
* @param int $tempsDeResolution
*/
public function __construct(string $idEnigme, string $admin, string $enonce, string $aide, string $rappel, string $solution, string $test, float $tempsDeResolution)
public function __construct(string $idEnigme, string $enonce, string $aide, string $rappel, string $solution, string $test, int $tempsDeResolution)
{
$arguments=func_get_args();
$index=func_num_args();
if(method_exists($this,$function='__construct'.$index));
call_user_func(array(array($this,$function),$arguments));
}
public function __constructMulti(string $idEnigme, string $enonce, string $solution, string $test, int $tempsDeResolution){
$this->idEnigme=$idEnigme;
$this->enonce=$enonce;
$this->solution=$solution;
$this->test=$test;
$this->tempsDeResolution=$tempsDeResolution;
}
public function __constructSolo(string $idEnigme, string $enonce, string $aide, string $rappel, string $solution, string $test){
$this->idEnigme=$idEnigme;
$this->admin = $admin;
$this->enonce=$enonce;
$this->aide=$aide;
$this->rappel=$rappel;
$this->solution=$solution;
$this->test=$test;
$this->tempsDeResolution = $tempsDeResolution;
}
/**
@ -49,22 +60,6 @@ class Enigme
$this->idEnigme = $idEnigme;
}
/**
* @return string
*/
public function getAdmin(): string
{
return $this->admin;
}
/**
* @param string $admin
*/
public function setAdmin(string $admin): void
{
$this->admin = $admin;
}
/**
* @return string
*/
@ -148,7 +143,7 @@ class Enigme
/**
* @return int
*/
public function getTempsDeResolution(): float
public function getTempsDeResolution(): int
{
return $this->tempsDeResolution;
}
@ -156,7 +151,7 @@ class Enigme
/**
* @param int $tempsDeResolution
*/
public function setTempsDeResolution(float $tempsDeResolution): void
public function setTempsDeResolution(int $tempsDeResolution): void
{
$this->tempsDeResolution = $tempsDeResolution;
}

@ -3,13 +3,16 @@
class Partie
{
private string $idPartie;
private date $datePartie;
/**
* @param string $idPartie
* @param date $datePartie
*/
public function __construct(string $idPartie)
{
$this->idPartie = $idPartie;
$this->datePartie = getdate(NULL);
}
/**
@ -27,4 +30,22 @@ class Partie
{
$this->idPartie = $idPartie;
}
/**
* @return date
*/
public function getDatePartie(): date
{
return $this->datePartie;
}
/**
* @param date $datePartie
*/
public function setDatePartie(date $datePartie): void
{
$this->datePartie = $datePartie;
}
}

@ -3,11 +3,13 @@
-- CREATE scripted;
-- USE scripted;
DROP TABLE GameDetail;
DROP TABLE Contenir;
DROP TABLE Game;
DROP TABLE Resoudre;
DROP TABLE Gerer;
DROP TABLE ResoudreMulti;
DROP TABLE Participer;
DROP TABLE ResoudreEnSolo;
DROP TABLE Enigme;
DROP TABLE Partie;
DROP TABLE Admin;
DROP TABLE Joueur;
@ -24,7 +26,7 @@ mdp varchar(50)
);
CREATE TABLE Enigme(
idEnigme char(5) PRIMARY KEY,
id char(5) PRIMARY KEY,
admin varchar(50) REFERENCES Admin(email),
enonce varchar(250) NOT NULL,
aide varchar(250),
@ -34,31 +36,28 @@ test varchar(250) NOT NULL,
tempsDeResolution numeric CHECK (tempsDeResolution >0)
);
CREATE TABLE Resoudre(
joueur varchar(50) REFERENCES Joueur(email),
enigme varchar(5) REFERENCES Enigme(idEnigme),
PRIMARY KEY(joueur, enigme)
);
CREATE TABLE Game(
idGame char(5) PRIMARY KEY
id char(5) PRIMARY KEY
);
CREATE TABLE Contenir(
game varchar(50) REFERENCES Game(idGame),
enigme varchar(5) REFERENCES Enigme(idEnigme),
PRIMARY KEY(game, enigme)
CREATE TABLE ResoudreEnSolo(
joueur varchar(50) REFERENCES Joueur(email),
enigme varchar(5) REFERENCES Enigme(id),
indexEnigme numeric UNIQUE,
PRIMARY KEY(joueur, enigme)
);
CREATE TABLE GameDetail(
idGameDetail char(5),
CREATE TABLE ResoudreEnMulti(
joueur varchar(50) REFERENCES Joueur(email),
game varchar(50) REFERENCES Game(idGame),
enigme varchar(5) REFERENCES Enigme(idEnigme),
pointsObtenu numeric NOT NULL CHECK (pointsObtenu >= 0),
classement numeric NOT NULL
CHECK (classement >= 1 && classement <= 3),
tempsDeResolution numeric CHECK (tempsDeResolution >0)
enigme varchar(5) REFERENCES Enigme(id),
partie char(5) REFERENCES Partie(id),
indexEnigme numeric UNIQUE,
PRIMARY KEY(joueur, enigme, partie)
);
INSERT INTO Joueur VALUE ('code@c.com','SU','RPRISE');
CREATE TABLE Contenir(
partie varchar(50) REFERENCES Partie(id),
enigme varchar(5) REFERENCES Enigme(id),
indexEnigme numeric UNIQUE,
PRIMARY KEY(partie, enigme)
);

@ -0,0 +1,9 @@
<html>
<body>
<h1>ERREUR</h1>
<p>Erreur inatendu</p>
<?php
?>
</body>
</html>

@ -0,0 +1,9 @@
<html>
<body>
<h1>ERREUR</h1>
<p>Page introuvable</p>
<?php
?>
</body>
</html>

@ -0,0 +1,9 @@
<html>
<body>
<h1>ERREUR</h1>
<p>Erreur avec la base de donnée</p>
<?php
?>
</body>
</html>

@ -0,0 +1,10 @@
<html>
<body>
<h1>ERREUR</h1>
<p>Joueur introuvable</p>
<?php
?>
</body>
</html>

@ -0,0 +1,10 @@
<html>
<body>
<h1>ERREUR</h1>
<p>Mot de passe invalide</p>
<?php
?>
</body>
</html>

@ -0,0 +1,10 @@
<html>
<body>
<h1>ERREUR</h1>
<p>E-mail invalide</p>
<?php
?>
</body>
</html>

@ -0,0 +1,215 @@
/*Fonts CSS */
@import url('https://fonts.googleapis.com/css2?family=Orbitron&display=swap');
/*Default CSS*/
/*Ace CSS */
.ace{
width: 45%;
height: 90%;
max-height: 100%;
margin-bottom: 0;
margin-right: 10px;
}
/* Main Button Css */
.buttons{
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
cursor: pointer;
}
.compiler_class .buttons div{
display: flex;
}
.buttons .btn{
position: relative;
width: 120px;
height: 60px;
display: inline-block;
background: transparent;
margin: 20px;
}
.buttons .btn:before, .buttons .btn:after
{
content:'';
position: absolute;
inset: 0;
transition: 0.5s;
background: #f00
}
.buttons .btn:nth-child(1):before, .buttons .btn:nth-child(1):after
{
background: linear-gradient(45deg, #00ccff, #0e1538, #d400d4)
}
.buttons .btn:nth-child(2):before, .buttons .btn:nth-child(2):after
{
background: linear-gradient(45deg, #d400d4, #0e1538, #fb5942);
}
.buttons .btn:hover:before
{
inset: -3px;
}
.buttons .btn:hover:after
{
inset: -3px;
filter: blur(10px);
}
.buttons .btn span{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: inline-block;
background: #0e1538;
z-index: 10;
display: flex;
justify-content: center;
align-items: center;
font-size: 1.2em;
text-transform: uppercase;
letter-spacing: 2px;
color: #fff;
border: 1px solid #040a29;
overflow: hidden;
}
.buttons .btn span::before{
content:'';
position: absolute;
top: 0;
left: -50%;
width: 100%;
height: 100%;
background: rgba(255,255,255,0.075);
transform: skew(25deg)
}
.buttons .btn .noAnimation {
animation: none;
font-size: 1em;
}
/* Modal CSS */
.modal-container {
position: fixed;
top: 0;
left: 0;
z-index: 10;
display: none;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
background: var(--m-background);
}
.modal-container:target {
display: flex;
align-items: center;
}
.modal {
display: flex;
justify-content: center;
align-items: flex-end;
width: 30%;
height: 35%;
padding: 10px 0;
border-radius: .8rem;
color: aliceblue;
background: var(--background);
box-shadow: var(--m-shadow, .4rem .4rem 8.2rem .2rem) var(--shadow-1);
position: relative;
overflow: hidden;
}
/* Modal H1 */
.modal #containerResult{
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
width: 80%;
height: 100%;
}
/* Modal Container Buttons */
.modal .buttons{
display: flex;
align-items: flex-end;
height: 100%;
width: auto;
}
.modal .buttons #top{
display: flex;
justify-content: flex-end;
align-items: flex-start;
width: auto;
height: 50%;
}
.modal .buttons #bottom{
display: flex;
justify-content: center;
align-items: flex-end;
width: auto;
height: 50%;
}
/* Modal buttons btn */
.modal .buttons .btn{
width: 30px;
height: 30px;
margin : 0 15px;
}
.modal .buttons #bottom{
width: 100%;
}
.modal .buttons #fleche{
display: none;
width: 75px;
height: 40px;
}
.modal .buttons .btn span{
background: #06124b;
color: white;
}
.modal .buttons #bottom .btn:nth-child(1):before, .modal .buttons #bottom .btn:nth-child(1):after
{
background: linear-gradient(45deg, #d400d4, #0e1538, #fb5942);
}

@ -0,0 +1,84 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Bootstrap Site</title>
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css"
integrity="sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I"
crossorigin="anonymous"/>
<link rel="stylesheet" href="../../CSS/Enigmev2.css"/>
<link rel="stylesheet" href="../../CSS/Main.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<script
src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js"
integrity="sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/"
crossorigin="anonymous"></script>
</head>
<body style="background-color: black;background-image: none;">
<div class="container-fluid mx-4">
<div class="row">
<div class="col-3">
<div class="retour">
<a class="material-icons" id="home" href="../Home.html" style="font-size:36px;color:white;">home</a>
</div>
<div class="sign">
<h1>
<span class="fast-flicker">p</span>
<span>alin</span>
<span class="flicker">d</span>
<span>rome</span>
</h1>
</div><br>
<div>
<h2>Consigne</h2><br>
<p class="enonce">
Écrire une fonction estPalindrome qui prend en argument un entier et qui renvoie True si cest un palindrome et False sinon.
</p><br><br>
<h2>Rappel</h2><br>
<p class="rappel">Un palindrome est un nombre qui peut se lire dans les deux sens. Par exemple 111.</p><br><br>
<h2>Exemple</h2><br>
<p>Entrée :&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;Sortie :</p>
<p>[1,0,1]&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&ensp;True</p>
<p>[1,1,9,1]&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;False</p><br><br>
<h2>Aide</h2><br>
<p>En python linstruction [::-1] permet dinverse une chaine de caractère. Par exemple print("ae"[::-1]) affiche : ea.</p>
</div>
</div>
<div class="col-5">
<div class='ace' id='editor'>def estPalindrome(var):
return var == var[::-1]
print(estPalindrome("abba"))
</div>
</div>
<div class="col-4">
<div class='compiler_class'>
<textarea id='console' readonly></textarea>
</div>
<div class="buttons">
<div>
<a onclick="run_init()" class="btn">
<span class="noAnimation">Run</span>
</a>
<a href="#m1-o" onclick="submit()" class="btn">
<span class="noAnimation">Submit</span>
</a>
</div>
</div>
</div>
</div>
</div>
<script src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>
<script src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js" type="text/javascript" charset="utf-8"></script>
<script src="../../JS/base.js"></script>
<script src="../../JS/palindrome.js"></script>
</body>
</html>

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="../../CSS/LogSign.css">
<link rel="stylesheet" href="./View/src/CSS/LogSign.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<script defer src="../../JS/Login.js"></script>
<title>Login</title>
@ -15,10 +15,10 @@
<div class="top">
<h2>Sign up</h2>
</div>
<form action="" method="POST">
<form action="index.php?action=login" method="POST">
<div class="user-box">
<input type="text" id="username" name="username" required="">
<label>Username</label>
<input type="text" id="email" name="email" required="">
<label>Email</label>
</div>
<div class="user-box">
<input type="password" id="password" name="password" required="">
@ -32,7 +32,7 @@
<span></span>
Submit
</button>
<a href="SignUp.php" class="right">
<a href="index.php?action=goToSignUp" class="right">
<span></span>
<span></span>
<span></span>

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="../../CSS/LogSign.css">
<link rel="stylesheet" href="./View/src/CSS/LogSign.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<script defer src="../../JS/SignUp.js"></script>
<title>Login</title>
@ -15,7 +15,7 @@
<div class="top">
<h2>Sign up</h2>
</div>
<form action="../../../../Controller/Traitement.php?action=login" method="POST">
<form action="index.php?action=signUp" method="POST">
<div class="user-box">
<input type="email" id="email" name="email" required="">
<label>Email</label>
@ -30,19 +30,12 @@
</div>
<div>
<button class="left" type="submit">
<span></span>
<span></span>
<span></span>
<span></span>
Submit
</button>
<a href="SignUp.php" class="right">
<span></span>
<span></span>
<span></span>
<span></span>
Sign up
</a>
</button>
</div>
</form>
</div>

@ -16,7 +16,7 @@
integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU"
crossorigin="anonymous"
/>
<link rel="stylesheet" href="../CSS/Main.css" />
<link rel="stylesheet" href="./View/src/CSS/Main.css" />
</head>
@ -37,13 +37,21 @@
<a
id="enigme"
class="mb-3 text-uppercase d-flex justify-content-center align-items-center"
href="./Pres.html"
style="width: 260px; height: 50px"
<?php
if (isset($_SESSION['connected']) && $_SESSION['connected'] == 'true'){
echo 'href="index.php?action=goToPresentation"';
}
else{
echo 'href="index.php?action=goToLogin"';
}
?>
>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
Énigmes
</a>
</div>

@ -1,29 +1,20 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="../CSS/Enigme.css" />
<link rel="stylesheet" href="../CSS/Home.css" />
<link rel="stylesheet" href="../CSS/Presentation.css" />
<link
rel="stylesheet"
href="https://fonts.googleapis.com/icon?family=Material+Icons"
/>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./View/src/CSS/Enigme.css">
<link rel="stylesheet" href="./View/src/CSS/Home.css">
<link rel="stylesheet" href="./View/src/CSS/Presentation.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<title>Presentation</title>
</head>
<body onload="script();">
<div class="presentation_titre" id="home">
<div class="titre_pre">
<div class="retour">
<a
class="material-icons"
id="home"
href="Home.html"
style="font-size: 64px; color: white"
>home</a
>
<a class="material-icons" id="home" href="index.php?action=goToHome" style="font-size:64px;color:white;">home</a>
</div>
<div class="sign">
<h1>
@ -36,26 +27,20 @@
</div>
<div class="Presentation">
<div class="Histoire">
<img src="../../assets/img/Renard.png" alt="Foxy" />
<img src="../../assets/img/Renard.png" alt="Foxy">
<div class="Consigne" id="message">
<p>
Bonjour utilisateur ! Je suis Foxy, une IA créer par Howard Aiken,
un eminent chercheur, malhereusement celui-ci est mort. J'ai
besoin de votre aide pour protéger mon code source d'une
organisation malveillante qui veut le voler. Pour cela, je vais
vous demander de résoudre des énigmes. Mais tout d'abord, vous
devez passer un test de qualification. Si vous réussissez, vous
pourrez accéder aux énigmes. Bonne chance utilisateur !
<p>Bonjour utilisateur ! Je suis Foxy, une IA créer par Howard Aiken, un eminent chercheur,
malhereusement celui-ci est mort. J'ai besoin de votre aide pour protéger mon code source d'une organisation
malveillante qui veut le voler. Pour cela, je vais vous demander de résoudre des énigmes. Mais tout d'abord,
vous devez passer un test de qualification. Si vous réussissez, vous pourrez accéder aux énigmes.
Bonne chance utilisateur !
</p>
</div>
</div>
<br />
<br>
<div class="ConsigneRun">
<div class="Consigne">
<p>
Le Bouton Run te permet de tester ton code, n'oublie pas de faire
print(nomFonction(x)) pour afficher sur la console !
</p>
<p>Le Bouton Run te permet de tester ton code, n'oublie pas de faire print(nomFonction(x)) pour afficher sur la console !</p>
</div>
<div class="buttons">
<a class="btn">
@ -63,7 +48,7 @@
</a>
</div>
</div>
<br />
<br>
<div class="ConsigneSubmit">
<div class="buttons">
<a class="btn">
@ -71,10 +56,7 @@
</a>
</div>
<div class="Consigne">
<p>
Tu pense avoir réussi ? Tres bien ! Utilise le bouton submit pour
faire valider ton code et passer à la prochaine enigme
</p>
<p>Tu pense avoir réussi ? Tres bien ! Utilise le bouton submit pour faire valider ton code et passer à la prochaine enigme </p>
</div>
</div>
<div class="buttons">
@ -84,5 +66,6 @@
</div>
</div>
</div>
</div>
</body>
</html>

@ -0,0 +1,24 @@
<?php
require_once './Config/Config.php';
require_once "./Config/Connection.php";
require_once './Config/Validation.php';
require_once "./Model/Joueur.php";
require_once "./Model/Enigme.php";
require_once './Controller/JoueurGateway.php';
require_once './Controller/EnigmeGateway.php';
require_once './Controller/JoueurNotFoundException.php';
require_once './Controller/InvalidMdpException.php';
require_once './Controller/Controller.php';
//unset($_SESSION['connected']);
$con = new Connection($dsn, $user, $password);
$control = new Controller($con);
session_unset(); //efface les variable session
session_destroy();//détruit la session
$_SESSION = null;//histoire d'être sûre

@ -1,8 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/php.iml" filepath="$PROJECT_DIR$/.idea/php.iml" />
</modules>
</component>
</project>

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PhpProjectSharedConfiguration" php_language_level="7">
<option name="suggestChangeDefaultLanguageLevel" value="false" />
</component>
</project>

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
</component>
</project>
Loading…
Cancel
Save