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 <?php
require 'JoueurGateway.php';
class Controller class Controller
{ {
private Connection $con; private Connection $con;
@ -13,33 +11,108 @@ class Controller
$this->con=$con; $this->con=$con;
session_start(); session_start();
try{ try{
global $rep, $vues;
$action=$_REQUEST['action']; $action=$_REQUEST['action'];
switch($action) { switch($action) {
case NULL: case NULL:
//require ('../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'); //header('Location: http://londres.uca.local/~nogarnier1/Scripted/WEB/View/src/pages/Main.html');
break;
case "signUp":
$this->signUp();
break; break;
case "login": case "login":
$this->login(); $this->login();
break; break;
case "goToPresentation":
$this->goToPresentation();
break;
case "goToHome":
$this->goToHome();
break;
case "goToLogin":
$this->goToLogin();
break;
case "goToSignUp":
$this->goToSignUp();
break;
} }
} catch (PDOException $e) } catch (PDOException $e)
{ {
//si erreur BD, pas le cas ici require ($rep.$vues['erreurBd']);
$dataVueEreur[] = "Erreur inattendue!!! ";
//require(__DIR__.'/../vues/erreur.php'); // ajout du code de la vue ici
} }
catch (Exception $e2) }
{
$dataVueEreur[] = "Erreur inattendue!!! "; private function signUp() {
//require ($rep.$vues['erreur']); 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);
$_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 login() { private function goToSignUp() {
$gateway=new JoueurGateway($this->con); global $rep, $vues;
$joueur=new Joueur($_REQUEST['email'], $_REQUEST['username'], $_REQUEST['password']); try {
$gateway->insert($joueur); require ('./View/src/pages/LogSign/SignUp.php');
$gateway->showAll(); }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 <?php
require_once "../Config/Connection.php";
require_once "../Model/Enigme.php";
class EnigmeGateway 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 <?php
require_once "../Model/Joueur.php";
require_once "../Config/Connection.php";
class JoueurGateway class JoueurGateway
{ {
private Connection $con; 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{ public function showAll() : void{
$query = "SELECT * FROM Joueur"; $query = "SELECT * FROM Joueur";
$this->con->executeQuery($query); $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 class Enigme
{ {
private string $idEnigme; private string $idEnigme;
private string $admin;
private string $enonce; private string $enonce;
private string $aide; private string $aide;
private string $rappel; private string $rappel;
private string $solution; private string $solution;
private string $test; private string $test;
private float $tempsDeResolution; private int $tempsDeResolution;
/** /**
* @param string $idEnigme * @param string $idEnigme
* @param string $admin
* @param string $enonce * @param string $enonce
* @param string $aide * @param string $aide
* @param string $rappel * @param string $rappel
@ -21,16 +19,29 @@ class Enigme
* @param string $test * @param string $test
* @param int $tempsDeResolution * @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)
{ {
$this->idEnigme = $idEnigme; $arguments=func_get_args();
$this->admin = $admin; $index=func_num_args();
$this->enonce = $enonce; if(method_exists($this,$function='__construct'.$index));
$this->aide = $aide; call_user_func(array(array($this,$function),$arguments));
$this->rappel = $rappel; }
$this->solution = $solution;
$this->test = $test; public function __constructMulti(string $idEnigme, string $enonce, string $solution, string $test, int $tempsDeResolution){
$this->tempsDeResolution = $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->enonce=$enonce;
$this->aide=$aide;
$this->rappel=$rappel;
$this->solution=$solution;
$this->test=$test;
} }
/** /**
@ -49,22 +60,6 @@ class Enigme
$this->idEnigme = $idEnigme; $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 * @return string
*/ */
@ -148,7 +143,7 @@ class Enigme
/** /**
* @return int * @return int
*/ */
public function getTempsDeResolution(): float public function getTempsDeResolution(): int
{ {
return $this->tempsDeResolution; return $this->tempsDeResolution;
} }
@ -156,7 +151,7 @@ class Enigme
/** /**
* @param int $tempsDeResolution * @param int $tempsDeResolution
*/ */
public function setTempsDeResolution(float $tempsDeResolution): void public function setTempsDeResolution(int $tempsDeResolution): void
{ {
$this->tempsDeResolution = $tempsDeResolution; $this->tempsDeResolution = $tempsDeResolution;
} }

@ -3,13 +3,16 @@
class Partie class Partie
{ {
private string $idPartie; private string $idPartie;
private date $datePartie;
/** /**
* @param string $idPartie * @param string $idPartie
* @param date $datePartie
*/ */
public function __construct(string $idPartie) public function __construct(string $idPartie)
{ {
$this->idPartie = $idPartie; $this->idPartie = $idPartie;
$this->datePartie = getdate(NULL);
} }
/** /**
@ -27,4 +30,22 @@ class Partie
{ {
$this->idPartie = $idPartie; $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; -- CREATE scripted;
-- USE scripted; -- USE scripted;
DROP TABLE GameDetail;
DROP TABLE Contenir; DROP TABLE Contenir;
DROP TABLE Game; DROP TABLE Gerer;
DROP TABLE Resoudre; DROP TABLE ResoudreMulti;
DROP TABLE Participer;
DROP TABLE ResoudreEnSolo;
DROP TABLE Enigme; DROP TABLE Enigme;
DROP TABLE Partie;
DROP TABLE Admin; DROP TABLE Admin;
DROP TABLE Joueur; DROP TABLE Joueur;
@ -24,7 +26,7 @@ mdp varchar(50)
); );
CREATE TABLE Enigme( CREATE TABLE Enigme(
idEnigme char(5) PRIMARY KEY, id char(5) PRIMARY KEY,
admin varchar(50) REFERENCES Admin(email), admin varchar(50) REFERENCES Admin(email),
enonce varchar(250) NOT NULL, enonce varchar(250) NOT NULL,
aide varchar(250), aide varchar(250),
@ -34,31 +36,28 @@ test varchar(250) NOT NULL,
tempsDeResolution numeric CHECK (tempsDeResolution >0) 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( CREATE TABLE Game(
idGame char(5) PRIMARY KEY id char(5) PRIMARY KEY
); );
CREATE TABLE Contenir( CREATE TABLE ResoudreEnSolo(
game varchar(50) REFERENCES Game(idGame), joueur varchar(50) REFERENCES Joueur(email),
enigme varchar(5) REFERENCES Enigme(idEnigme), enigme varchar(5) REFERENCES Enigme(id),
PRIMARY KEY(game, enigme) indexEnigme numeric UNIQUE,
PRIMARY KEY(joueur, enigme)
); );
CREATE TABLE GameDetail( CREATE TABLE ResoudreEnMulti(
idGameDetail char(5),
joueur varchar(50) REFERENCES Joueur(email), joueur varchar(50) REFERENCES Joueur(email),
game varchar(50) REFERENCES Game(idGame), enigme varchar(5) REFERENCES Enigme(id),
enigme varchar(5) REFERENCES Enigme(idEnigme), partie char(5) REFERENCES Partie(id),
pointsObtenu numeric NOT NULL CHECK (pointsObtenu >= 0), indexEnigme numeric UNIQUE,
classement numeric NOT NULL PRIMARY KEY(joueur, enigme, partie)
CHECK (classement >= 1 && classement <= 3),
tempsDeResolution numeric CHECK (tempsDeResolution >0)
); );
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 charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <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"> <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<script defer src="../../JS/Login.js"></script> <script defer src="../../JS/Login.js"></script>
<title>Login</title> <title>Login</title>
@ -15,10 +15,10 @@
<div class="top"> <div class="top">
<h2>Sign up</h2> <h2>Sign up</h2>
</div> </div>
<form action="" method="POST"> <form action="index.php?action=login" method="POST">
<div class="user-box"> <div class="user-box">
<input type="text" id="username" name="username" required=""> <input type="text" id="email" name="email" required="">
<label>Username</label> <label>Email</label>
</div> </div>
<div class="user-box"> <div class="user-box">
<input type="password" id="password" name="password" required=""> <input type="password" id="password" name="password" required="">
@ -32,7 +32,7 @@
<span></span> <span></span>
Submit Submit
</button> </button>
<a href="SignUp.php" class="right"> <a href="index.php?action=goToSignUp" class="right">
<span></span> <span></span>
<span></span> <span></span>
<span></span> <span></span>

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

@ -16,7 +16,7 @@
integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU"
crossorigin="anonymous" crossorigin="anonymous"
/> />
<link rel="stylesheet" href="../CSS/Main.css" /> <link rel="stylesheet" href="./View/src/CSS/Main.css" />
</head> </head>
@ -34,12 +34,20 @@
</h1> </h1>
</div> </div>
<div class="row d-flex justify-content-center g-5 py-5"> <div class="row d-flex justify-content-center g-5 py-5">
<a <a
id="enigme" id="enigme"
class="mb-3 text-uppercase d-flex justify-content-center align-items-center" class="mb-3 text-uppercase d-flex justify-content-center align-items-center"
href="./Pres.html" style="width: 260px; height: 50px"
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>
<span></span> <span></span>

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

@ -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