This commit is contained in:
Adrian POURCHOT 2023-05-16 11:27:42 +02:00
parent 4964d61762
commit 185dd18ec1
16 changed files with 337 additions and 0 deletions

BIN
BACKEND/PHP/tp3.tar.gz Normal file

Binary file not shown.

View File

@ -0,0 +1,11 @@
.center{
text-align:center;
}
.gagne{
color:#2E8B57;
}
.perdu{
color:#FF6347;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,7 @@
<?php
$vue=FALSE;
$images=["pierre.png","feuille.png","ciseaux.png"];
// TODO
?>

View File

@ -0,0 +1,52 @@
<?php
include 'include/jeu.php';
// variable de la vue definies par le controleur
// $coup_[joueur|oridnateur]
// $image_[joueur|ordinateur]
// $message
// $vue booleen pour affichage si un coup a été joué
//
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8" >
<link rel="stylesheet" href="https://unpkg.com/@picocss/pico@1.*/css/pico.min.css">
<link rel="stylesheet" href="./css/style.css">
<title>Chifoumi</title>
</head>
<body>
<main class="container">
<h3>Pierre, Feuille, Ciseaux</h3>
<div class="center">
<p>Choississez votre coup </p>
<a href="?coup=0"><img width="50px" src="./images/pierre.png"></a>
<a href="?coup=1"><img width="50px" src="./images/feuille.png"></a>
<a href="?coup=2"><img width="50px" src="./images/ciseaux.png"></a>
</div>
<?php if ($vue): ?>
<div class="grid">
<article>
<h5 ">Votre Coup</h5>
<hr>
<div class="center">
<img src="./images/<?php echo $image_joueur;?>">
</div>
</article>
<article>
<h5>Celui de l'ordinateur</h5>
<hr>
<div class="center">
<img src="./images/<?php echo $image_ordinateur;?>">
</div>
</article>
</div>
<h2 class="center"><span class="<?php echo $class;?>"><?php echo $message;?></span></h2>
</div>
<?php endif; ?>
</main>
</body>
</html>

BIN
BACKEND/PHP/tp4.tar.gz Normal file

Binary file not shown.

73
BACKEND/PHP/tp4/README.md Normal file
View File

@ -0,0 +1,73 @@
# TP4 : Cookies et sessions en PHP.
### Ex1.
Complétez le script `index.php` de l'exercice 1 de manière à
mémoriser grâce à un cookie son os préféré (parmi Linux, Windows et
MacOS). Le cookie est valable pendant une minute, et l'os par
défaut est Linux.
![](./img/cookie.png)
### Ex2.
Le but est de créer un min-jeu de morpion.
![](./img/ttt.png)
Les variables de session :
- `grid` : le plateau du jeu. tableau de 9 cases, prennant les valeurs 0 (libre), 1 (joueur 1), 2 (joueur 2).
- `playerTurn` : le joueur qui joue.
Le script prend en paramètre la variable `pos` : la position du coup joué par le joueur.
### Ex3.
On désire rendre les pages du [tp3](./../tp3) (cinema) accessibles
uniquement à des utilisateur **inscrits au préalable**.
1. Rajouter à la base une table `user` qui comprend un **login**,
**email** et un **password**. (login est la clé)
2. Ecrire un formulaire d'inscription au site qui comprend les
champs correspondants. Vous enregistrerez dans la base la mot de
passe hashé avec la fonction
[password\_hash](http://php.net/manual/fr/function.password-hash.php)
de php.
3. Faire en sorte que toutes les pages de l'application soient
accessibles **uniquement** si l'utilisateur s'est authentifié.
(utiliser une session)
Ecrire les scripts ou pages suivants
<dl>
<dt><code>inscription.php</code></dt>
<dd>formulaire d'inscription, et qui traite les données du formulaire.
Si le formulaire n'est pas correctement rempli, Il est réaffiché.
(les champs correctes sont conservés !)</dd>
<dt><code>authentification.html</code></dt>
<dd>formulaire d'authentification.</dd>
<dt><code>verification.php</code></dt>
<dd>traite le formulaire précédent et vérifie si l'utilisateur est
enregistré. En cas de succés, renvoie vers la page d'accueil du
site. Pour éviter des attaques force brute, ajoutez une
temporisation qui ralentira de telles attaques.</dd>
<dt><code>securite.php</code></dt>
<dd>morceau de code que vous inclurez systématiquement dans vos pages
que vous voulez rendre accessible uniquement aux utilisateurs dûment
authentifiés. Ce script vérifiera l'existence d'une variable de
session créée lors de la connexion.</dd>
</dl>
Pour permettre l'authentification d'un utilisateur, il faut que
login et le mot de passe conviennent. On compare le hash de
l'utilisateur stocké dans la base avec le hashage calculé du
password soumis lors de l'authentification :
```php
<?php
// Voir l'exemple fourni sur la page de la fonction password_hash()
// pour savoir d'où cela provient.
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';
if (password_verify('rasmuslerdorf', $hash)) {
echo 'Le mot de passe est valide !';
} else {
echo 'Le mot de passe est invalide.';
}
?>
```

View File

@ -0,0 +1,12 @@
main>section {
display: flex;
align-items:center;
justify-content:space-between;
}
section > section {
width: 25%;
}
section > section + section {
width: 50%;
}

View File

@ -0,0 +1,58 @@
<?php
$OS = "linux";
if(!isset($_POST['OS'])){
if (!isset($_COOKIE['OS'])){
setcookie('OS', $OS, time()+60);
} else {
$OS = $_COOKIE['OS'];
}
} else {
$OS=$_POST['OS'];
setcookie('OS', $OS, time()+60);
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://unpkg.com/@picocss/pico@1.*/css/pico.min.css">
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body>
<main class="container">
<section>
<section>
<form method="POST">
<fieldset>
<legend>Changez votre OS</legend>
<label>
<input type="radio" name="OS" value="linux">
<i class="fa fa-linux fa-2x" aria-hidden="true"></i>
</label>
<label>
<input type="radio" name="OS" value="windows">
<i class="fa fa-windows fa-2x" aria-hidden="true"></i>
</label>
<label>
<input type="radio" name="OS" value="apple">
<i class="fa fa-apple fa-2x" aria-hidden="true"></i>
</label>
</fieldset>
<button type="submit">Envoyer</button>
</form>
</section>
<section>
<p>
<?php echo "<i class='fa fa-$OS fa-4x'></i>";?>
</p>
<p>Rafraîchir la page <a href=""><i class="fa fa-refresh" aria-hidden="true"></i></a></p>
</section>
</section>
</main>
</body>
</html>

View File

@ -0,0 +1,32 @@
table.morpion{
border-collapse: collapse;
table-layout:fixed;
margin-left:auto;
margin-right:auto;
display:inline-block;
width:auto;
}
table.morpion td {
border : 1px solid #aaaaaa;
width:10rem;
height:10rem;
padding : 0px;
margin:0px;
overflow: hidden;
white-space: nowrap;
text-align:center;
vertical-align:middle;
}
table.morpion i {
font-size:8rem;
}
table.morpion a {
display : inline-block;
width : 8rem;
height: 8rem;
}
.center{
text-align:center;
}

View File

@ -0,0 +1,66 @@
<?php
$message = "";
$grid = [0,1,0,1,0,2,2,0,0];
//
// TODO
//
//
function isWinner($grid, $player)
{
$winStates = array
(
array(0, 1, 2), array(3, 4, 5), array(6, 7, 8), // Horizontal
array(0, 3, 6), array(1, 4, 7), array(2, 5, 8), // Vertical
array(0, 4, 8), array(2, 4, 6) // Diagonal
);
foreach ($winStates as $winState)
{
if ($grid[$winState[0]] == $player &&
$grid[$winState[1]] == $player &&
$grid[$winState[2]] == $player)
{
return true;
}
}
return false;
}
function noWinner($grid)
{
for($i = 0; $i < 9; $i++)
if ($grid[$i] == 0)
return false;
return true;
}
function displayGrid($grid)
{
echo '<table class="morpion">';
for ($i = 0; $i < 3; $i ++){
echo "<tr>";
for ($j = 0; $j < 3; $j ++){
echo "<td>";
$pos = 3*$i + $j;
if ($grid[$pos] == 0)
echo "<a href='?pos=$pos'></a>";
if ($grid[$pos] == 1)
echo '<i class="fa fa-times" aria-hidden="true"></i>';
if ($grid[$pos] == 2)
echo '<i class="fa fa-circle-o" aria-hidden="true"></i>';
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
}

View File

@ -0,0 +1,26 @@
<?php
include 'include/tictactoe.php';
?>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://unpkg.com/@picocss/pico@1.*/css/pico.min.css">
<link rel="stylesheet" href="./css/style.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body>
<main class="container center">
<h3>Tic Tac Toe : <?php echo "player $playerTurn turn";?></h3>
<?php
if ($message != ""){
echo "<h1>$message";
echo " <a href='?'>new game</a></h1>";
}
displayGrid($grid);
?>
</main>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
BACKEND/PHP/tp4/img/ttt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB