diff --git a/td1_2/10.php b/td1_2/10.php
new file mode 100644
index 0000000..de7bd85
--- /dev/null
+++ b/td1_2/10.php
@@ -0,0 +1,27 @@
+<?php
+
+$tableau = array(
+    "nom" => "nunes",
+    "prenom" => "Jean-Claude",
+    "age" => 18,
+    "addresse" => "35400 Saint-Malo",
+    "profession" => "Java",
+);
+
+echo "<hr><h1>FOR :</h1>";
+
+for ($i = 0; $i < count($tableau); $i++) {
+    print(array_keys($tableau)[$i] . ": ");
+    echo $tableau[array_keys($tableau)[$i]] . "<br/>";
+}
+
+echo "<hr><h1>PRINT_R :</h1>";
+
+print_r($tableau);
+
+
+echo "<hr><h1>FOREACH :</h1>";
+
+foreach ($tableau as $key => $value) {
+    echo "$key: $value<br/>";
+}
diff --git a/td1_2/11.php b/td1_2/11.php
new file mode 100644
index 0000000..00ea723
--- /dev/null
+++ b/td1_2/11.php
@@ -0,0 +1,39 @@
+<?php
+
+$tableau = array(
+    "jean" => 14,
+    "claude" => 13,
+    "david" => 18,
+    "maxime" => 1,
+);
+
+$moyenne = 0;
+
+foreach ($tableau as $prenom => $note) {
+    echo "$prenom: $note<br/>";
+    $moyenne += $note;
+}
+
+$moyenne = $moyenne / count($tableau);
+
+echo "<p><strong>Moyenne :</strong> $moyenne";
+
+// Modification des notes 
+foreach ($tableau as $prenom => $note) {
+    if ($prenom == "jean") {
+        continue;
+    }
+    $tableau[$prenom] = $note - 2;
+}
+
+echo "<hr><h3>Nouvelles notes</h3>";
+
+?>
+
+<pre>
+
+<?php
+print_r($tableau);
+?>
+
+</pre>
\ No newline at end of file
diff --git a/td1_2/2.php b/td1_2/2.php
new file mode 100644
index 0000000..84989b1
--- /dev/null
+++ b/td1_2/2.php
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<body>
+    <?php 
+        echo "<h1>Bonjour à tous</h1>";
+        echo "<p>Salut <a href='lien'>lien</a></p>";
+    ?> 
+</body>
+</html>
+
+<!-- 
+    Code source : 
+
+<!DOCTYPE html>
+<html>
+<body>
+    <h1>Bonjour à tous</h1><p>Salut <a href='lien'>lien</a></p> 
+</body>
+</html>
+
+--> 
\ No newline at end of file
diff --git a/td1_2/3.php b/td1_2/3.php
new file mode 100644
index 0000000..f2b80ef
--- /dev/null
+++ b/td1_2/3.php
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<body>
+    <?php 
+        $var = "a";
+        $var2 = 23;
+        echo $var; 
+        echo "<br/>";
+        echo $var2;
+
+        echo $var." : bonjour !";
+    ?> 
+</body>
+</html>
diff --git a/td1_2/4.php b/td1_2/4.php
new file mode 100644
index 0000000..6c26932
--- /dev/null
+++ b/td1_2/4.php
@@ -0,0 +1,9 @@
+<?php 
+
+$var_a = 10;
+
+$var_b = 20;
+
+echo $var_a * $var_b . "<br/>";
+
+echo $var_b + $var_a . "<br/>";
\ No newline at end of file
diff --git a/td1_2/5.php b/td1_2/5.php
new file mode 100644
index 0000000..4b14006
--- /dev/null
+++ b/td1_2/5.php
@@ -0,0 +1,10 @@
+<?php 
+$prenom = "Jean";
+$nom = "Claude";
+$addr = "18 Rue des écoles"; 
+$age = 48; 
+
+echo "<p>Prenom : $prenom - Nom : $nom - Addresse : $addr - Age : $age</p><br/>";
+
+echo ($age / 10) % 10;
+?>
\ No newline at end of file
diff --git a/td1_2/6.php b/td1_2/6.php
new file mode 100644
index 0000000..93eaaf8
--- /dev/null
+++ b/td1_2/6.php
@@ -0,0 +1,3 @@
+<?php 
+
+echo($_SERVER["REMOTE_ADDR"]);
diff --git a/td1_2/7.php b/td1_2/7.php
new file mode 100644
index 0000000..e4c6537
--- /dev/null
+++ b/td1_2/7.php
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<body>
+    <pre>
+<?php $var = "a";
+$var2 = 23;
+print_r($var . "<br/>");
+print_r($var2); ?> 
+    </pre>
+</body>
+</html>
diff --git a/td1_2/8.php b/td1_2/8.php
new file mode 100644
index 0000000..2ae6bb2
--- /dev/null
+++ b/td1_2/8.php
@@ -0,0 +1,13 @@
+<?php
+
+$prenom = "Jean";
+$nom = "Petit";
+$age = 5;
+
+echo "<p>Prénom : $prenom<br/>Nom : $nom</p>";
+
+if ($age < 18) {
+    echo "$prenom est mineur(e).";
+} else {
+    echo "$prenom est majeur(e).";
+}
diff --git a/td1_2/9.php b/td1_2/9.php
new file mode 100644
index 0000000..9a5e393
--- /dev/null
+++ b/td1_2/9.php
@@ -0,0 +1,24 @@
+<?php
+
+for ($i = 2004; $i <= 2022; $i++) {
+    echo "$i<br/>";
+}
+
+echo "<br/><br/>";
+
+$k = 2004;
+
+while ($k <= 2022) {
+    echo "$k<br/>";
+    $k++;
+}
+
+$k = 2004;
+
+echo "<br/><br/>";
+
+
+do {
+    echo "$k<br/>";
+    $k++;
+} while ($k <= 2022);
diff --git a/td4/exo1.php b/td4/exo1.php
new file mode 100644
index 0000000..cae046c
--- /dev/null
+++ b/td4/exo1.php
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<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">
+    <title>Document</title>
+</head>
+
+<body>
+
+    <h1> Formulaire </h1>
+
+    <form action="exo1_traitement.php" method="POST">
+        <label for="nom">Nom :</label>
+        <input type="text" id="nom" name="nom"><br><br>
+
+        <label for="email">Email :</label>
+        <input type="text" id="email" name="email"><br><br>
+
+        <label for="message">Message :</label>
+        <textarea id="message" name="message"></textarea><br><br>
+
+        <label>Choix unique :</label><br>
+        <input type="radio" id="choix1" name="choix" value="choix1">
+        <label for="choix1">Choix 1</label><br>
+        <input type="radio" id="choix2" name="choix" value="choix2">
+        <label for="choix2">Choix 2</label><br><br>
+
+        <label>Choix multiples :</label><br>
+        <input type="checkbox" id="option1" name="options[]" value="option1">
+        <label for="option1">Option 1</label><br>
+        <input type="checkbox" id="option2" name="options[]" value="option2">
+        <label for="option2">Option 2</label><br>
+        <input type="checkbox" id="option3" name="options[]" value="option3">
+        <label for="option3">Option 3</label><br><br>
+
+        <input name="userIP" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" type="hidden">
+        <input name="userDATE" value="<?php echo date("Y-m-d H:i:s"); ?>" type="hidden">
+
+        <input type="submit" value="Envoyer">
+    </form>
+
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/td4/exo1_traitement.php b/td4/exo1_traitement.php
new file mode 100644
index 0000000..c64dc12
--- /dev/null
+++ b/td4/exo1_traitement.php
@@ -0,0 +1,11 @@
+<?php
+
+foreach ($_POST as $cle => $valeur) {
+    if (is_string($valeur)) {
+        $valeur = strtolower($valeur);
+    }
+    if (is_array($valeur)) {
+        $valeur = implode(", ", $valeur);
+    }
+    echo "<strong>$cle</strong> : $valeur <br>";
+}
diff --git a/td4/exo3.php b/td4/exo3.php
new file mode 100644
index 0000000..00a8ec3
--- /dev/null
+++ b/td4/exo3.php
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<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">
+    <title>Document</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
+</head>
+
+<body>
+
+    <div class="container p-5">
+        <h1> Formulaire </h1>
+
+        <form class="pt-3" method="POST" action="#">
+            <div class="mb-3">
+                <label for="nom" class="form-label">Nom :</label>
+                <input type="text" class="form-control" id="nom" name="nom">
+            </div>
+
+            <div class="mb-3">
+                <label for="email" class="form-label">Email :</label>
+                <input type="text" class="form-control" id="email" name="email">
+            </div>
+
+            <div class="mb-3">
+                <label for="message" class="form-label">Message :</label>
+                <textarea class="form-control" id="message" name="message"></textarea>
+            </div>
+
+            <div class="mb-3">
+                <label class="form-label">Choix unique :</label><br>
+                <div class="form-check form-check-inline">
+                    <input class="form-check-input" type="radio" id="choix1" name="choix" value="choix1">
+                    <label class="form-check-label" for="choix1">Choix 1</label>
+                </div>
+                <div class="form-check form-check-inline">
+                    <input class="form-check-input" type="radio" id="choix2" name="choix" value="choix2">
+                    <label class="form-check-label" for="choix2">Choix 2</label>
+                </div>
+            </div>
+
+            <div class="mb-3">
+                <label class="form-label">Choix multiples :</label><br>
+                <div class="form-check">
+                    <input class="form-check-input" type="checkbox" id="option1" name="options[]" value="option1">
+                    <label class="form-check-label" for="option1">Option 1</label>
+                </div>
+                <div class="form-check">
+                    <input class="form-check-input" type="checkbox" id="option2" name="options[]" value="option2">
+                    <label class="form-check-label" for="option2">Option 2</label>
+                </div>
+                <div class="form-check">
+                    <input class="form-check-input" type="checkbox" id="option3" name="options[]" value="option3">
+                    <label class="form-check-label" for="option3">Option 3</label>
+                </div>
+            </div>
+
+
+            <input name="userIP" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" type="hidden">
+            <input name="userDATE" value="<?php echo date("Y-m-d H:i:s"); ?>" type="hidden">
+
+
+            <button type="submit" name="valide" class="btn btn-primary">Envoyer</button>
+        </form>
+
+
+        <?php
+        if (isset($_POST['valide'])) {
+            echo "<h1> Réponse </h1>";
+            foreach ($_POST as $cle => $valeur) {
+                if (is_string($valeur)) {
+                    $valeur = strtolower($valeur);
+                }
+                if (is_array($valeur)) {
+                    $valeur = implode(", ", $valeur);
+                }
+                echo "<strong>$cle</strong> : $valeur <br>";
+            }
+        }
+        ?>
+
+    </div>
+
+
+    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/td4/exo4.php b/td4/exo4.php
new file mode 100644
index 0000000..f4eae9d
--- /dev/null
+++ b/td4/exo4.php
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<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">
+    <title>Document</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
+</head>
+
+<body>
+
+    <div class="container p-5">
+        <h1> Formulaire </h1>
+
+        <form class="pt-3" method="POST" action="#">
+            <div class="mb-3">
+                <label for="nom" class="form-label">Nom :</label>
+                <input type="text" class="form-control" id="nom" name="nom">
+            </div>
+
+            <div class="mb-3">
+                <label for="email" class="form-label">Email :</label>
+                <input type="email" class="form-control" id="email" name="email">
+            </div>
+
+            <div class="mb-3">
+                <label for="url" class="form-label">URL :</label>
+                <input type="text" class="form-control" id="url" name="url">
+            </div>
+
+            <div class="mb-3">
+                <label for="message" class="form-label">Message :</label>
+                <textarea class="form-control" id="message" name="message"></textarea>
+            </div>
+
+            <div class="mb-3">
+                <label class="form-label">Choix unique :</label><br>
+                <div class="form-check form-check-inline">
+                    <input class="form-check-input" type="radio" id="choix1" name="choix" value="choix1">
+                    <label class="form-check-label" for="choix1">Choix 1</label>
+                </div>
+                <div class="form-check form-check-inline">
+                    <input class="form-check-input" type="radio" id="choix2" name="choix" value="choix2">
+                    <label class="form-check-label" for="choix2">Choix 2</label>
+                </div>
+            </div>
+
+            <div class="mb-3">
+                <label class="form-label">Choix multiples :</label><br>
+                <div class="form-check">
+                    <input class="form-check-input" type="checkbox" id="option1" name="options[]" value="option1">
+                    <label class="form-check-label" for="option1">Option 1</label>
+                </div>
+                <div class="form-check">
+                    <input class="form-check-input" type="checkbox" id="option2" name="options[]" value="option2">
+                    <label class="form-check-label" for="option2">Option 2</label>
+                </div>
+                <div class="form-check">
+                    <input class="form-check-input" type="checkbox" id="option3" name="options[]" value="option3">
+                    <label class="form-check-label" for="option3">Option 3</label>
+                </div>
+            </div>
+
+
+            <input name="userIP" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" type="hidden">
+            <input name="userDATE" value="<?php echo date("Y-m-d H:i:s"); ?>" type="hidden">
+
+
+            <button type="submit" class="btn btn-primary">Envoyer</button>
+        </form>
+
+
+        <?php
+        if (isset($_POST['nom'])) {
+            echo "<h1> Réponse </h1>";
+            $mail = filter_var($_POST['email'], FILTER_SANITIZE_SPECIAL_CHARS);
+            $nom = filter_var($_POST['nom'], FILTER_SANITIZE_SPECIAL_CHARS);
+            $url = filter_var($_POST['url'], FILTER_SANITIZE_SPECIAL_CHARS);
+            echo "<p><strong>Nom : $nom</strong></p>";
+            echo "<p><strong>Email : $mail est <b>" . (filter_var($address, FILTER_VALIDATE_EMAIL) ? 'OK' : 'NOK') . " valide</b></p>";
+            echo "<p><strong>URL : $url est <b>" . (filter_var($url, FILTER_VALIDATE_URL) ? 'OK' : 'NOK') . " valide</b></p>";
+        }
+        ?>
+
+    </div>
+
+
+    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/td4/td4b/data1.txt b/td4/td4b/data1.txt
new file mode 100644
index 0000000..8d73cbf
--- /dev/null
+++ b/td4/td4b/data1.txt
@@ -0,0 +1,3 @@
+Jean Dupont jean.dupont@outlook.com
+Pierre Martin p.mart1@gmail.com
+Paul Durand durandpaul@caramail.fr
diff --git a/td4/td4b/data1_old.txt b/td4/td4b/data1_old.txt
new file mode 100755
index 0000000..02e7185
--- /dev/null
+++ b/td4/td4b/data1_old.txt
@@ -0,0 +1,3 @@
+Jean-Marc Pierrot jm.pierrot@univ-rennes.fr 019435812
+Frederic Sanchez fredsanch@gmail.fr 0968134529
+Stephanie Garcia setphanieg@outlook.com 0638913307
\ No newline at end of file
diff --git a/td4/td4b/data2.csv b/td4/td4b/data2.csv
new file mode 100644
index 0000000..118648c
--- /dev/null
+++ b/td4/td4b/data2.csv
@@ -0,0 +1,2 @@
+David,Gatel,david@univ.fr,https://getbootstrap.com,192.168.64.1,"2023-03-16 01:29:20",csv,
+fzani,fjia,jfai@euN.fr,http://a.fr,192.168.64.1,"2023-03-16 01:31:21",csv,
diff --git a/td4/td4b/data2.json b/td4/td4b/data2.json
new file mode 100755
index 0000000..897aafc
--- /dev/null
+++ b/td4/td4b/data2.json
@@ -0,0 +1,22 @@
+[
+    {
+        "prenom": "af",
+        "nom": "afzaf",
+        "email": "ae@e.fr",
+        "url": "http:\/\/fazfzafza.fr",
+        "userIP": "192.168.64.1",
+        "userDATE": "2023-03-16 01:32:23",
+        "sortie": "json",
+        "valide": ""
+    },
+    {
+        "prenom": "af",
+        "nom": "afzaf",
+        "email": "ae@e.fr",
+        "url": "http:\/\/fazfzafza.fr",
+        "userIP": "192.168.64.1",
+        "userDATE": "2023-03-16 01:32:23",
+        "sortie": "json",
+        "valide": ""
+    }
+]
\ No newline at end of file
diff --git a/td4/td4b/data2.txt b/td4/td4b/data2.txt
new file mode 100644
index 0000000..75ecc08
--- /dev/null
+++ b/td4/td4b/data2.txt
@@ -0,0 +1 @@
+Jean Claude jean.claude@nunes.fr https://jean.fr 192.168.64.1 2023-03-16 00:50:15
diff --git a/td4/td4b/exo1.php b/td4/td4b/exo1.php
new file mode 100755
index 0000000..4724fa0
--- /dev/null
+++ b/td4/td4b/exo1.php
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<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">
+    <title>Document</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
+</head>
+
+<body>
+    <?php
+    // Ouvre le fichier menu.txt en mode lecture
+    $menu_file = fopen("menu.txt", "r") or die("Impossible d'ouvrir le fichier menu.txt");
+
+    // Lit les lignes du fichier une à une
+    $menu_items = array();
+    while (!feof($menu_file)) {
+        $line = fgets($menu_file);
+        if ($line) {
+            // Sépare la ligne en deux parties : le titre et l'URL
+            $parts = explode(" ", $line);
+            $title = $parts[0];
+            $url = $parts[1];
+
+            // Ajoute un élément au tableau de menu
+            $menu_items[] = array("title" => $title, "url" => $url);
+        }
+    }
+
+    // Ferme le fichier
+    fclose($menu_file);
+
+    // Affiche la barre de menu
+    echo "<nav class='navbar navbar-expand-lg navbar-light bg-light'>";
+    echo "<div class='container-fluid'>";
+    echo "<a class='navbar-brand' href='#'>Menu</a>";
+    echo "<button class='navbar-toggler' type='button' data-bs-toggle='collapse' data-bs-target='#navbarNav' aria-controls='navbarNav' aria-expanded='false' aria-label='Toggle navigation'>";
+    echo "<span class='navbar-toggler-icon'></span>";
+    echo "</button>";
+    echo "<div class='collapse navbar-collapse' id='navbarNav'>";
+    echo "<ul class='navbar-nav'>";
+    foreach ($menu_items as $item) {
+        echo "<li class='nav-item'>";
+        echo "<a class='nav-link' href='" . $item["url"] . "'>" . $item["title"] . "</a>";
+        echo "</li>";
+    }
+    echo "</ul>";
+    echo "</div>";
+    echo "</div>";
+    echo "</nav>";
+    ?>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/td4/td4b/exo2.php b/td4/td4b/exo2.php
new file mode 100755
index 0000000..3ede091
--- /dev/null
+++ b/td4/td4b/exo2.php
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<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">
+    <title>Document</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
+</head>
+
+<body>
+    <div class="container mt-4">
+        <?php
+
+        $lines = file("data1.txt");
+
+        foreach ($lines as $line) {
+            $line = trim($line);
+            $parts = explode(" ", $line);
+            $prenom = $parts[0];
+            $nom = $parts[1];
+            $email = $parts[2];
+            $tel = $parts[3];
+            echo "<h1>$prenom $nom</h1><p>Email : <a href='mailto:$email'>$email</a><br/>Tél : $tel</p>";
+        }
+        ?>
+    </div>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/td4/td4b/exo3.php b/td4/td4b/exo3.php
new file mode 100755
index 0000000..7d698b1
--- /dev/null
+++ b/td4/td4b/exo3.php
@@ -0,0 +1,22 @@
+<?php
+
+$donnees = array(
+    "Jean" => array(
+        "nom" => "Dupont",
+        "email" => "jean.dupont@outlook.com"
+    ),
+    "Pierre" => array(
+        "nom" => "Martin",
+        "email" => "p.mart1@gmail.com"
+    ),
+    "Paul" => array(
+        "nom" => "Durand",
+        "email" => "durandpaul@caramail.fr"
+    ),
+);
+
+foreach ($donnees as $prenom => $info) {
+    $data = $prenom . " " . $info["nom"] . " " . $info["email"];
+    file_put_contents("data1.txt", $data . PHP_EOL, FILE_APPEND);
+    echo "Ecriture de $prenom dans le fichier data1.txt<br/>";
+}
diff --git a/td4/td4b/exo4.php b/td4/td4b/exo4.php
new file mode 100755
index 0000000..054e015
--- /dev/null
+++ b/td4/td4b/exo4.php
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<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">
+    <title>Document</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
+</head>
+
+<body>
+
+    <div class="container p-5">
+        <h1> Formulaire </h1>
+
+        <form class="pt-3" method="POST" action="#">
+            <div class="mb-3">
+                <label for="prenom" class="form-label">Prenom :</label>
+                <input type="text" class="form-control" id="prenom" name="prenom">
+            </div>
+
+            <div class="mb-3">
+                <label for="nom" class="form-label">Nom :</label>
+                <input type="text" class="form-control" id="nom" name="nom">
+            </div>
+
+            <div class="mb-3">
+                <label for="email" class="form-label">Email :</label>
+                <input type="text" class="form-control" id="email" name="email">
+            </div>
+
+
+            <div class="mb-3">
+                <label for="url" class="form-label">URL :</label>
+                <input type="url" class="form-control" id="url" name="url">
+            </div>
+
+            <input name="userIP" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" type="hidden">
+            <input name="userDATE" value="<?php echo date("Y-m-d H:i:s"); ?>" type="hidden">
+
+            <div class="mb-3">
+                <label class="form-label">Type de sortie :</label><br>
+                <div class="form-check form-check-inline">
+                    <input class="form-check-input" type="radio" id="choix1" name="sortie" value="txt">
+                    <label class="form-check-label" for="choix1">Fichier texte</label>
+                </div>
+                <div class="form-check form-check-inline">
+                    <input class="form-check-input" type="radio" id="choix2" name="sortie" value="csv">
+                    <label class="form-check-label" for="choix2">CSV</label>
+                </div>
+                <div class="form-check form-check-inline">
+                    <input class="form-check-input" type="radio" id="choix3" name="sortie" value="json">
+                    <label class="form-check-label" for="choix3">JSON</label>
+                </div>
+            </div>
+
+            <button type="submit" name="valide" class="btn btn-primary">Envoyer</button>
+        </form>
+
+
+        <?php
+        if (isset($_POST['valide'])) {
+            echo "<h1> Réponse </h1>";
+            foreach ($_POST as $cle => $valeur) {
+                echo "<strong>$cle</strong> : $valeur <br>";
+            }
+            if ($_POST["sortie"] == "txt") {
+                file_put_contents("data2.txt", $_POST['prenom'] . " " . $_POST['nom'] . " " . $_POST['email'] . " " . $_POST['url'] . " " . $_POST['userIP'] . " " . $_POST['userDATE'] . "\n", FILE_APPEND);
+            } else if ($_POST["sortie"] == "csv") {
+                $fp = fopen('data2.csv', 'a');
+                fputcsv($fp, $_POST);
+            } else if ($_POST["sortie"] == "json") {
+                $actuel = file_get_contents('data2.json');
+                $listeTemp = json_decode($actuel);
+                if (is_array($listeTemp)) {
+                    array_push($listeTemp, $_POST);
+                } else {
+                    $listeTemp = array($_POST);
+                }
+                $donneesJson = json_encode($listeTemp);
+                file_put_contents('data2.json', $donneesJson);
+            }
+        }
+        ?>
+
+    </div>
+
+
+    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/td4/td4b/menu.txt b/td4/td4b/menu.txt
new file mode 100755
index 0000000..9d9f75c
--- /dev/null
+++ b/td4/td4b/menu.txt
@@ -0,0 +1,5 @@
+Exercice1 page01.php
+Exercice2 page02.php
+Exercice3 page03.php
+Exercice4 page04.php
+Exercice5 page05.php
\ No newline at end of file
diff --git a/td5/action/new.php b/td5/action/new.php
new file mode 100644
index 0000000..38104b2
--- /dev/null
+++ b/td5/action/new.php
@@ -0,0 +1,24 @@
+<?php
+session_start();
+if ($_SESSION["user"]["role"] != "admin") {
+    header("Location: index.php");
+}
+if (isset($_POST["valide"])) {
+    $newperso = array(
+        "name" => $_POST["nom"],
+        "birthDate" => $_POST["bdate"],
+        "deathDate" =>  $_POST["ddate"],
+        "image" => $_POST["imgurl"],
+        "description" => $_POST["description"]
+    );
+
+    $actuel = file_get_contents('../personnages.json');
+    $listeTemp = json_decode($actuel, true);
+    print_r($listeTemp["historicalFigures"]);
+    array_push($listeTemp["historicalFigures"], $newperso);
+
+    $donneesJson = json_encode($listeTemp);
+    file_put_contents('../personnages.json', $donneesJson);
+
+    header("Location: ../persos.php");
+}
diff --git a/td5/connexion.php b/td5/connexion.php
new file mode 100644
index 0000000..1c67383
--- /dev/null
+++ b/td5/connexion.php
@@ -0,0 +1,91 @@
+<?php
+session_start();
+if (isset($_SESSION["user"])) {
+    header("Location: index.php");
+}
+?>
+<!doctype html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8">
+    <title>Mon Site - Connexion</title>
+
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
+
+
+    <style>
+        html,
+        body {
+            height: 100%;
+        }
+
+        body {
+            display: flex;
+            align-items: center;
+            padding-top: 40px;
+            padding-bottom: 40px;
+            background-color: #f5f5f5;
+        }
+
+        .form-signin {
+            max-width: 330px;
+            padding: 15px;
+        }
+
+        .form-signin .form-floating:focus-within {
+            z-index: 2;
+        }
+
+        .form-signin input[type="email"] {
+            margin-bottom: -1px;
+            border-bottom-right-radius: 0;
+            border-bottom-left-radius: 0;
+        }
+
+        .form-signin input[type="password"] {
+            margin-bottom: 10px;
+            border-top-left-radius: 0;
+            border-top-right-radius: 0;
+        }
+    </style>
+
+
+    <!-- Custom styles for this template -->
+    <link href="sign-in.css" rel="stylesheet">
+</head>
+
+<body class="text-center">
+
+    <main class="form-signin w-100 m-auto">
+        <form method="POST" action="connexion_traitement.php">
+            <img class="mb-4" src="/docs/5.3/assets/brand/bootstrap-logo.svg" alt="" width="72" height="57">
+            <h1 class="h3 mb-3 fw-normal">Connectez-Vous</h1>
+
+            <?php
+            if (isset($_GET["error"])) {
+                echo "<div class='alert alert-danger' role='alert'>
+                    Identifiant ou mot de passe incorrect
+                </div>";
+            }
+            ?>
+
+            <div class="form-floating">
+                <input type="text" class="form-control" id="floatingInput" placeholder="john" name="identifiant">
+                <label for="floatingInput">Identifiant</label>
+            </div>
+            <div class="form-floating">
+                <input type="password" class="form-control" id="floatingPassword" placeholder="Mot de passe" name="password">
+                <label for="floatingPassword">Mot de passe</label>
+            </div>
+            <input type="text" value="valider" name="valide" hidden>
+            <button class="w-100 btn btn-lg btn-primary" type="submit">Connexion</button>
+            <p class="mt-5 mb-3 text-muted">&copy; 2023</p>
+        </form>
+    </main>
+
+
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/td5/connexion_traitement.php b/td5/connexion_traitement.php
new file mode 100644
index 0000000..f4878ff
--- /dev/null
+++ b/td5/connexion_traitement.php
@@ -0,0 +1,21 @@
+<?php
+
+if (isset($_POST["valide"])) {
+    $identifiant = $_POST["identifiant"];
+    $password = $_POST["password"];
+    $users = json_decode(file_get_contents("users.json"), true);
+    $user = null;
+    foreach ($users as $u) {
+        if ($u["username"] == $identifiant && $u["password"] == $password) {
+            $user = $u;
+            break;
+        }
+    }
+    if ($user == null) {
+        header("Location: connexion.php?error=1");
+    } else {
+        session_start();
+        $_SESSION["user"] = $user;
+        header("Location: index.php");
+    }
+}
diff --git a/td5/deconnexion.php b/td5/deconnexion.php
new file mode 100644
index 0000000..c1555ab
--- /dev/null
+++ b/td5/deconnexion.php
@@ -0,0 +1,6 @@
+<?php
+session_start();
+
+session_destroy();
+
+header("Location: index.php?deconnexion=1");
diff --git a/td5/index.php b/td5/index.php
new file mode 100644
index 0000000..722d1c8
--- /dev/null
+++ b/td5/index.php
@@ -0,0 +1,57 @@
+<?php
+session_start();
+?>
+<!doctype html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8">
+    <title>Monsite</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
+</head>
+
+<body>
+
+    <nav class="navbar navbar-expand-md navbar-dark bg-dark">
+        <div class="container-fluid">
+            <a class="navbar-brand" href="#">Mon Site</a>
+            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
+                <span class="navbar-toggler-icon"></span>
+            </button>
+            <div class="collapse navbar-collapse" id="navbarCollapse">
+                <ul class="navbar-nav me-auto mb-2 mb-md-0">
+                    <li class="nav-item">
+                        <a class="nav-link active" aria-current="page" href="#">Accueil</a>
+                    </li>
+                    <li class="nav-item">
+                        <a class="nav-link" href="persos.php">Personnages Historiques</a>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    </nav>
+
+    <div class="container m-5">
+        <?php if (isset($_GET["deconnexion"])) {
+            echo "<div class='alert alert-success' role='alert'>Vous êtes déconnecté.</div>";
+        }
+        ?>
+        <div class="bg-light p-5 rounded">
+            <?php if (isset($_SESSION["user"])) { ?>
+                <h1>Bonjour <?= $_SESSION["user"]["username"] ?></h1>
+                <p class="lead">Vous êtes <strong class="text-danger"><?= $_SESSION["user"]["role"] ?></strong></p>
+                <a class="btn btn-lg btn-danger" href="deconnexion.php" role="button">Deconnexion &raquo;</a>
+            <?php } else { ?>
+                <h1>Vous n'êtes pas connecté.</h1>
+                <a class="btn btn-lg btn-primary" href="connexion.php" role="button">Connectez vous &raquo;</a>
+            <?php } ?>
+        </div>
+    </div>
+
+
+    <script src="/docs/5.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script>
+
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/td5/personnages.json b/td5/personnages.json
new file mode 100755
index 0000000..1917f5c
--- /dev/null
+++ b/td5/personnages.json
@@ -0,0 +1 @@
+{"historicalFigures":[{"name":"Leonardo da Vinci","birthDate":"April 15, 1452","deathDate":"May 2, 1519","description":"Leonardo da Vinci was a Renaissance artist and inventor, best known for works like the Mona Lisa and The Last Supper. He was also a scientist and engineer, and made significant contributions to fields like anatomy and architecture.","image":"https:\/\/uploads0.wikiart.org\/images\/leonardo-da-vinci.jpg!Portrait.jpg"},{"name":"Cleopatra","birthDate":"69 BC","deathDate":"August 10, 30 BC","description":"Cleopatra was the last active pharaoh of ancient Egypt, and is famous for her relationships with Julius Caesar and Mark Antony. She was also a powerful political figure in her own right, and played a significant role in the power struggles of the Roman Republic.","image":"https:\/\/media.vogue.fr\/photos\/5c769fa2488cdc91cadf65f6\/2:3\/w_2560%2Cc_limit\/GettyImages-139633685.jpg"},{"name":"Nelson Mandela","birthDate":"July 18, 1918","deathDate":"December 5, 2013","description":"Nelson Mandela was a South African anti-apartheid revolutionary and politician, who served as the President of South Africa from 1994 to 1999. He was a prominent leader in the struggle against apartheid, and was imprisoned for 27 years before being released in 1990.","image":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/0\/02\/Nelson_Mandela_1994.jpg\/640px-Nelson_Mandela_1994.jpg"},{"name":"Marie Curie","birthDate":"November 7, 1867","deathDate":"July 4, 1934","description":"Marie Curie was a Polish-born physicist and chemist, who conducted pioneering research on radioactivity. She was the first woman to win a Nobel Prize, and the first person to win two Nobel Prizes in different fields (physics and chemistry).","image":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/7\/7e\/Marie_Curie_c1920.jpg\/1200px-Marie_Curie_c1920.jpg"},{"name":"William Shakespeare","birthDate":"April 26, 1564","deathDate":"April 23, 1616","description":"William Shakespeare was an English playwright and poet, widely regarded as one of the greatest writers in the English language. He wrote over 30 plays, including classics like Romeo and Juliet, Hamlet, and Macbeth.","image":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/a\/a2\/Shakespeare.jpg\/800px-Shakespeare.jpg"},{"name":"ZBAD","birthDate":"13","deathDate":"1555","image":"https:\/\/google.com","description":"zffaaza"}]}
\ No newline at end of file
diff --git a/td5/persos.php b/td5/persos.php
new file mode 100644
index 0000000..432af63
--- /dev/null
+++ b/td5/persos.php
@@ -0,0 +1,114 @@
+<?php
+session_start();
+if ($_SESSION["user"] == null) {
+    header("Location: connexion.php");
+}
+?>
+<!doctype html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8">
+    <title>Monsite</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
+</head>
+
+<body>
+
+    <nav class="navbar navbar-expand-md navbar-dark bg-dark">
+        <div class="container-fluid">
+            <a class="navbar-brand" href="#">Mon Site</a>
+            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
+                <span class="navbar-toggler-icon"></span>
+            </button>
+            <div class="collapse navbar-collapse" id="navbarCollapse">
+                <ul class="navbar-nav me-auto mb-2 mb-md-0">
+                    <li class="nav-item">
+                        <a class="nav-link active" aria-current="page" href="index.php">Accueil</a>
+                    </li>
+                    <li class="nav-item">
+                        <a class="nav-link active" aria-current="page" href="persos.php">Personnages Historiques</a>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    </nav>
+
+    <div class="container p-5">
+        <div class="row g-5">
+            <?php
+            if ($_SESSION["user"]["role"] == "admin") {
+            ?>
+                <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#nouveauPerso" data-bs-whatever="@new">Nouveau personnage</button>
+            <?php
+            }
+            $personnages = json_decode(file_get_contents("personnages.json"), true);
+            foreach ($personnages["historicalFigures"] as $perso) {
+            ?>
+                <div class="col col-3">
+                    <div class="card">
+                        <img src="<?= $perso["image"] ?>" class="card-img-top" alt="Photo de <?= $perso["name"] ?>">
+                        <div class="card-body">
+                            <h5 class="card-title"><?= $perso["name"] ?></h5>
+                            <p class="text-muted"><?= $perso["birthDate"] ?> - <?= $perso["deathDate"] ?></p>
+                            <p class="card-text"><?= $perso["description"] ?></p>
+                        </div>
+                    </div>
+                </div>
+            <?php
+            }
+            ?>
+        </div>
+    </div>
+
+
+    <div class="modal fade" id="nouveauPerso" tabindex="-1" aria-labelledby="nouveauPersoLabel" aria-hidden="true">
+        <div class="modal-dialog">
+            <form method="POST" action="action/new.php">
+
+                <div class="modal-content">
+                    <div class="modal-header">
+                        <h5 class="modal-title" id="nouveauPersoLabel">Nouveau personnage historique
+                        </h5>
+                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
+                    </div>
+                    <div class="modal-body">
+                        <div class="mb-3">
+                            <label class="col-form-label">Nom :</label>
+                            <input type="text" class="form-control" name="nom" required>
+                        </div>
+                        <div class="mb-3">
+                            <label class="col-form-label">Lien vers l'image :</label>
+                            <input type="url" class="form-control" name="imgurl" required>
+                        </div>
+                        <div class="mb-3">
+                            <label class="col-form-label">Date de naissance :</label>
+                            <input type="text" class="form-control" name="bdate" required>
+                        </div>
+                        <div class="mb-3">
+                            <label class="col-form-label">Date de décès :</label>
+                            <input type="text" class="form-control" name="ddate" required>
+                        </div>
+                        <div class="mb-3">
+                            <label class="col-form-label">Description :</label>
+                            <textarea class="form-control" name="description" required></textarea>
+                        </div>
+                    </div>
+                    <div class="modal-footer">
+                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Fermer</button>
+                        <input type="submit" class="btn btn-primary" value="Ajouter">
+                    </div>
+                </div>
+                <input type="text" value="valider" name="valide" hidden>
+            </form>
+
+        </div>
+    </div>
+
+
+    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script>
+
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/td5/users.json b/td5/users.json
new file mode 100644
index 0000000..8409ac9
--- /dev/null
+++ b/td5/users.json
@@ -0,0 +1,14 @@
+[
+    {
+        "username": "mgramain",
+        "password": "bonjour",
+        "email": "maelgramain@etudiant.univ-rennes1.fr",
+        "role": "admin"
+    },
+    {
+        "username": "john35",
+        "password": "R139OO",
+        "email": "john35@gmail.com",
+        "role": "user"
+    }
+]
\ No newline at end of file
diff --git a/td5/users.php b/td5/users.php
new file mode 100644
index 0000000..6a7689f
--- /dev/null
+++ b/td5/users.php
@@ -0,0 +1,42 @@
+<?php
+$users = json_decode(file_get_contents("users.json"), true);
+?>
+<!DOCTYPE html>
+<html lang="en">
+
+<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">
+    <title>Utilisateurs</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
+</head>
+
+<body class="container">
+    <h1 class="mt-5">Liste d'utilisateurs</h1>
+    <table class="table table-bordered">
+        <thead>
+            <tr>
+                <th scope="col">Username</th>
+                <th scope="col">Password</th>
+                <th scope="col">E-Mail</th>
+                <th scope="col">Role</th>
+            </tr>
+        </thead>
+        <tbody>
+            <?php
+            foreach ($users as $user) {
+                echo "<tr>";
+                echo "<td>" . $user['username'] . "</td>";
+                echo "<td>" . $user['password'] . "</td>";
+                echo "<td>" . $user['email'] . "</td>";
+                echo "<td>" . $user['role'] . "</td>";
+                echo "</tr>";
+            }
+            ?>
+        </tbody>
+    </table>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/tdajax/index.php b/tdajax/index.php
new file mode 100644
index 0000000..d26f35f
--- /dev/null
+++ b/tdajax/index.php
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <title>JSON Content</title>
+    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
+    <script>
+        $(document).ready(function() {
+            setInterval(function() {
+                $.ajax({
+                    url: "showDate.php",
+                    dataType: "json",
+                    success: function(data) {
+                        $("#json-content").text(JSON.stringify(data));
+                    }
+                });
+            }, 1);
+        });
+        $(document).ready(function() {
+            $("#myInput").on("input", function() {
+                $.ajax({
+                    url: "write.php",
+                    method: "POST",
+                    data: {
+                        content: $(this).val()
+                    }
+                });
+            });
+        });
+    </script>
+</head>
+
+<body>
+    <div id="json-content"></div>
+    <input type="text" id="myInput">
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/tdajax/showDate.php b/tdajax/showDate.php
new file mode 100644
index 0000000..bad5451
--- /dev/null
+++ b/tdajax/showDate.php
@@ -0,0 +1,8 @@
+<?php
+
+$res = array(
+    "date" => date('d-m-y h:i:s')
+);
+header("Content-Type: application/json");
+
+echo (json_encode($res));
diff --git a/tdajax/texte.txt b/tdajax/texte.txt
new file mode 100755
index 0000000..0ae6d99
--- /dev/null
+++ b/tdajax/texte.txt
@@ -0,0 +1 @@
+zaddzadza
\ No newline at end of file
diff --git a/tdajax/write.php b/tdajax/write.php
new file mode 100644
index 0000000..94edaa2
--- /dev/null
+++ b/tdajax/write.php
@@ -0,0 +1,3 @@
+<?php
+
+file_put_contents("texte.txt", $_POST);