Par Valentin Brosseau / @c4software
Au début PHP => Personal Home Page Maintenant PHP => Hypertext Preprocessor
.phpInternet ≠ Chrome
Le statique dynamique
=
Le site généré en cas de changement
Toujours la même « base »
Votre HTML est un texte à trou. Le PHP peut-être inséré n'importe où.
<?php.?>.;..php n'est même pas obligé de contenir du PHP (🤔)<?php
// Votre code
?>⚠️ Ne fonctionne que ⚠️
dans les fichiers de type .php
<!DOCTYPE html>
<html lang="en">
<head>
<title>Exemple PHP</title>
</head>
<body>
<h1>Bonjour vous</h1>
<p>
Nous sommes le
<?php echo date("d/m/Y"); ?>
</p>
</body>
</html>Installons ensemble votre environnement de développement.
Permets de mémoriser le temps d'une exécution une valeur.
$.$nom = "valentin";// Simplement
echo $nom;
// Dans un texte
echo "Bonjour je suis $nom";echo va nous permettre d'afficher du texte sur la page.
En PHP, mais également quelques soit le langage.
| Type | Contenu | Type d'opération |
|---|---|---|
string |
"Une chaine de caractère" | Gestion du texte, concaténation |
int |
42 | Opération mathématique |
boolean |
True ou False |
Opération logique |
float |
10.3 | Opération mathématique |
array |
["a", "b", "c"] |
Nous écrirons le code au maximum en Anglais !
Vos noms de variables doivent rester simples.
Limité vous à la liste suivante :
abcdefghijklmnopqrstuvwxyz1234567890\_-
Ajouter dans le TP1 la création et l'utilisation d'une variable d'une variable.
Concaténation
$prenom = "valentin";
$nom = "brosseau";
echo $nom . " " . $prenom;Affichera : valentin brosseau
Comme en mathématique :
+, -, /, *, %…
Opération logique

Variables « automatiquement remplies », et ça dès le début de votre script.
Ajouter dans votre code :
echo "<pre>".print_r($_SERVER, true)."</pre>";
Ajouter dans votre code :
echo "Bonjour " . $_GET['nom'];
echo "Bonjour " . $_GET['prenom'];Appeler la page en ajoutant dans le lien :
?nom=Brosseau&prenom=Valentin
// Exemple $_GET Contiendra
array(
"prenom" => "valentin",
"nom" => "brosseau",
);
echo $_GET['nom']; // Affichera brosseau
echo $_GET['prenom']; // Affichera valentin
echo $_GET['nom'] . " " . $_GET['prenom']; // Affichera brosseau valentinATTENTION
Petit aparté sur la sécurité informatique. Nous verrons plus tard les failles de sécurités, ce que vous venez de faire en est une (c'est une XSS).
stringints exemple $ages = array()| Indice (clé) | valeurs |
|---|---|
| 0 | Élément 1 |
| 1 | Élément 2 |
| 2 | Élément 3 |
$valeurs = array('élément 1', 'élément 2', 'élément 3');
// ou via un ajout automatique à la fin du tableau
$valeur[] = 'élément 1';
$valeur[] = 'élément 2';
$valeur[] = 'élément 3';
// ou via un ajout à une position donnée
$valeurs[0] = 'élément 1';
$valeurs[1] = 'élément 2';
$valeurs[2] = 'élément 3';chiffre mais un string.$student = array(
"nom" => "Brosseau",
"prenom" => "Valentin",
"ordinateur" => true,
"age" => 33,
);Exemple retour de base de données
$students = array(
array(
"nom" => "Brosseau",
"prenom" => "Valentin",
"ordinateur" => true,
"age" => 33,
),
array(
"nom" => "Doe",
"prenom" => "John",
"ordinateur" => false,
"age" => 87,
)
)$_SERVER.Question posé à l'ordinateur

Une condition va nous permettre d'exécuter certaines parties du code en fonction de la valeur des variables
La question est « mathématique » / « Logique »
| Symbole | Signification |
|---|---|
| == | Est égale à |
| != | Est différent de |
| > | Est strictement supérieure à |
| < | Est strictement inférieure à |
| >= | Est supérieure ou égale à |
| <= | Est inférieure ou égale à |
$age = 22;
if($age >= 18) {
echo "Vous pouvez passer le permis";
}$age = 22;
if($age >= 18) {
echo "Vous pouvez passer le permis";
} else {
echo "Encore un peu de patience… Pour le permis c'est à 18ans";
}$age = 22;
if($age >= 14) {
echo "Vous pouvez passer le permis 2 roues.";
} else if ($age >= 18) {
echo "Vous pouvez passer le permis voiture";
} else {
echo "Encore un peu de patience… Pour le permis 2 roues c'est à 14ans";
}<?php
$estMajeur = true;
if($estMajeur == true) {
echo "Vous pouvez passer le permis";
}<?php
$estMajeur = true;
if($estMajeur) {
echo "Vous pouvez passer le permis";
}Le plus simple pour comprendre le fonctionnement. C'est de pratiquer. Je vous laisse écrire des conditions dans votre fichier PHP de test.
La répétition… La force de l'ordinateur

Comme Bart, simplifiez-vous la recopie d'une punition.
10… 20… 10 000. Votre ordinateur ne fatigue jamais !
La boucle while est la plus simple de tout, elle ne s'arrête que quand la condition de sortie est false.
$var = true;
while ($var == true)
{
// Bravo, ceci est votre première boucle infinie 🎉
}Ou avec l'exemple de Bart
$ligne_a_ecrire = 1000;
$ecrite = 0;
while($ecrite < $ligne_a_ecrire){
echo "Je n'utiliserai plus un algorithme pour faire mes punitions";
$ecrite = $ecrite + 1; // ou $ecrite++;
}Comme le while sauf qu'elle repose sur des données.
$ligne_a_ecrire = 1000;
for ($ecrite = 0; $ecrite <= $ligne_a_ecrire; $ecrite++){
echo "Je n'utiliserai plus un algorithme pour faire mes punitions";
}Vraiment utile avec l'usage de tableau
$etudiants = array(
array('nom' => 'Brosseau'),
array('nom' => 'Doe')
);
for($i = 0; $i < count($etudiants); ++$i) {
echo $people[$i]['nom'];
}Écrire moins… Pour gagner plus !
Comme le for mais en plus lisible
$etudiants = array(
array('nom' => 'Brosseau'),
array('nom' => 'Doe')
);
foreach ($etudiants as $etudiant) {
echo $etudiant['nom'];
}Les tableaux sont un gros morceau.
Le gateau au chocolat de Mamie Huguette
3 Oeufs.
100g de sucre.
50g de farines.
100g de beurre.
200g de chocolat. On mélange et on enfourne 20 minutes.Transformé en « Code »
$oeuf = 3;
$sucre = 100;
$farine = 50;
$beurre = 100;
$chocolat = 200;
$melange = $oeuf + $sucre + $farine + $beurre+ $chocolat;
echo "Cuire 20minutes le mélange de $melange gramme.";Ça fait beaucoup de ligne ? Nous n'allons pas le copier…
Vous n'avez pas besoin de connaitre le fonctionnement.
nom.echo gateauHuguette();Si nous exécutons le code :
Cuire 20minutes le mélange => 453 grammes.Partout dans votre code vous allez pouvoir l'appeler, et dans tous les cas vous aurez votre gâteau au chocolat.
Permets de personnaliser le traitement interne de la fonction.
// Moelleux
echo gateauHugette(15);
// ou trop cuit
echo gateauHugette(30);Cuire 15minutes le mélange => 453 grammes.
Cuire 30minutes le mélange => 453 grammes.L'intérieure de la boite noire
function gateauHugette($duree){
$oeuf = 3;
$sucre = 100;
$farine = 50;
$beurre = 100;
$chocolat = 200;
$melange = $oeuf + $sucre + $farine + $beurre+ $chocolat;
return "Cuire $duree minutes le mélange de $melange gramme.";
}Une fonction c'est une instruction classique
// La variable $mon_gateau contiendra le résultat de la fonction.
$mon_gateau = gateauHugette(20);
// Des gateaux à l'infinie
while(true){
echo gateauHugette(20);
}La liste est très longue, mais ça passe de :
L'ensemble de ces fonctions sont écrites dans la documentation officielle. À voir ici
Maintenant que nous savons faire une fonction!
Je vous propose de transformer le code de « Bart » (TP 1.1)
Mettre la partie while (ou for) dans une fonction afin de l'utiliser là où vous souhaitez afficher vos phrases.
Séparer physiquement header, footer, nav… Et surtout éviter le copier / coller de code identique.

Certaines parties sont présentes sur l'ensemble des pages
La puissance de PHP la fonction include. Elle va nous permettre d'insérer le contenu d'un autre fichier.
<?php
include('monfichier.php');
?>
Nous découpons donc notre HTML dans X fichiers PHP.

Maintenant que nous savons découper notre code. Je vous propose de réaliser le TP suivant
Maintenant que nous savons découper notre code. Je vous laisse retourner dans le TP Bart afin de :
Communication entre le HTML et le PHP

Communication entre le Client et le Serveur
✋ Quand il s'agit d'un formulaire, je vous conseille vivement de toujours passer par un POST.
div, p…form avec un attribut action destination du formulaire.Déroulement en 3 étapes :

<form method="post" action="destination.php">
<input type="text" name="nom" placeholder="Votre Nom" value="" />
<input type="text" name="prenom" placeholder="Votre Prenom" value="" />
<input type="submit" value="Envoyer" />
</form>Nous avons vu beaucoup de nouvelles choses. Nous allons les mettre en pratique avec le TP 2
Sauvegarder des variables entre chaque chargement de pages
En PHP, elle est non démarrée par défaut
<?php
session_start();
?>⚠️ Le session_start() doit être la première ligne de votre script PHP.
<?php
// Enregistrer la variable
$_SESSION["ma_variable"] = "ceci est une valeur de session";
// La lire
echo $_SESSION["ma_variable"];
?>Et … C'est tout !
Comme la Session… Mais sauvegardé sur le poste client

Par défaut les valeurs enregistrées dans le cookie sont éditables par le client, donc il n'y a aucune garantie de ce que vous allez récupérer. Attention au XSS donc.
À réserver aux données non sensibles
// Enregistre une valeur
$value = 'Valeur de test';
setcookie("monCookie", $value);
setcookie("monCookie", $value, time()+3600); /* expire dans 1 heure */
// Récupération d'un cookie
echo $_COOKIE["monCookie"];C'est un gros morceau. L'include sera notre « sauveur ».
Fini les projets « en bordel ».
L'organisation étant un point important, je vous propose de la mettre en pratique immédiatement dans le TP 3.