Cours 2 - PHP : Programmation côté serveur

Conception de Sites Web dynamiques 2024-2025

Programme

  • Architecture Client-Serveur

  • Langage côté serveur : PHP

  • Introduction au langage PHP

  • PHP + HTML

  • HTML: rappel

  • CSS: rappel

Un peu de statistique statistiques

114 étudiants inscrits

TD1 :

  • Présents en TD : 90
  • Remis sur moodle : 94

TD2 :

  • Présents en TD : 83
  • Remis sur moodle : 91

TD3 :

Ressources

  • https://www.labri.fr/perso/preuter/cswd2025/
  • Moodle :
  • Framateam (2nde partie du cours)

Favoris

Liens contenant vos informations et pages :

Ressources :

Motivation : Retour sur TD2

  • code source PHP
<?php
echo "Hello World";
?>
  • code source affiché dans le navigateur
Hello World

Motivation : Retour sur TD2

  • code source PHP
<?php
$n=5;
$i=1;
while ($i <= $n)
{
    echo "La valeur de la variable i est ".$i;
    $i = $i + 1;
}
?>
  • code source affiché dans le navigateur
La valeur de la variable i est 1La valeur de la variable i est 2La valeur de la variable i est 3La valeur de la variable i est 4La valeur de la variable i est 5

Motivation : Retour sur TD2

  • code source PHP
<?php
$n=5;
$i=1;
while ($i <= $n)
{
    echo "La valeur de la variable i est ".$i.PHP_EOL;
    $i = $i + 1;
}
?>
  • code source affiché dans le navigateur
La valeur de la variable i est 1
La valeur de la variable i est 2
La valeur de la variable i est 3
La valeur de la variable i est 4
La valeur de la variable i est 5

Motivation : Retour sur TD2

  • code source PHP
<?php
$n = $_GET['n'];
echo "Le paramètre n est ".$n;
?>

Motivation : Retour sur TD2

  • code source PHP
<?php
$n=1;      // valeur pour n par défaut
if (isset($_GET['n']))
{
    $n = $_GET['n'];
}
echo "Le paramètre n est ".$n;
?>

Sites web dynamiques

Introduction - Programme

Statistique langages côtés serveur

Introduction - Sites Web Dynamiques

Une page web dynamique est générée à la demande, contrairement à une page statique. Son contenu peut varier en fonction de divers paramètres :

  • Données spécifiques au moment de la consultation (heure, utilisateur connecté, formulaire soumis, etc.).
  • Informations provenant d’une base de données.
  • Données externes récupérées via une API (services tiers, flux RSS, etc.).

On distingue deux approches principales :

  • Programmation côté client (exécutée dans le navigateur, ex. : JavaScript).
  • Programmation côté serveur (génération du contenu avant l’envoi au client, ex. : PHP, Node.js).

Architecture Client-Serveur

Fonctionnement d’un site web dynamique

Ce schéma illustre le fonctionnement d’un site web dynamique en PHP en trois étapes :

  1. Le client envoie une requête
    • L’utilisateur accède à une page web avec une URL contenant un paramètre (ex. ?n=Lisa).
    • Le navigateur envoie cette requête au serveur.
  2. Le serveur interprète le code PHP
    • Le fichier PHP est exécuté sur le serveur.
    • Les paramètres de la requête sont traités ($_GET['n'] dans cet exemple).
    • Le serveur génère une page HTML en réponse.
  3. Le client reçoit la réponse
    • Le serveur envoie le HTML généré au navigateur.
    • Le navigateur affiche la page avec le contenu dynamique (ex. Bonjour Lisa).

Ce principe illustre l’architecture client-serveur, où le traitement est effectué côté serveur avant d’être affiché côté client.

Architecture Client-Serveur

PHP : un langage côté serveur populaire

  • PHP signifie PHP: Hypertext Preprocessor (acronyme récursif).
  • Langage de programmation côté serveur utilisé pour générer des pages web dynamiques.
  • Très répandu, notamment dans les CMS comme WordPress, Drupal, Joomla.
  • Dernière version : PHP 8.4 (sortie en novembre 2024).
  • Alternatives : Node.js (JavaScript côté serveur), Python (Django, Flask), Ruby (Ruby on Rails), ASP.NET (Microsoft)

PHP reste un choix courant pour les sites web dynamiques grâce à sa simplicité et sa compatibilité avec de nombreux serveurs et bases de données.

accueil.php (code source PHP)

code source php

<!DOCTYPE html>
<html lang="fr">
<head>
...
</head> 
<body>
    <p>
    Bonjour <?php echo $_GET['n']; ?>
    </p>
</body>
</html>

code interprété

<!DOCTYPE html>
<html lang="fr">
<head>
...
</head> 
<body>
    <p>
    Bonjour Lisa
    </p>
</body>
</html>

PHP: Récupération de paramètres

  • dans une URL, on peut spécifier un ou plusieurs paramètres, permettant de générer des pages dynamiquement en fonction de ces paramètres. Exemple :

  • URL : http://.../index.php?n=5

  • code source du fichier index.php :

<?php
  // Récupération du paramètre 'n' et affichage
  $n = $_GET['n'];
  echo $n;
?>

PHP: Récupération de paramètres

La fonction isset() permet de vérifier si un paramètre existe dans l’URL (ou dans une autre variable), et si c’est le cas, de l’utiliser dans le script. Si le paramètre n’existe pas, une valeur par défaut peut être attribuée.

<?php
if (isset($_GET['n']))
    $n = $_GET['n'];
else
{
    $n = 1;
     // valeur par défaut
}
?>

PHP: Récupération de paramètres

On peut aussi spécifier plusieurs paramètres dans l’URL :

  • Le premier paramètre est attaché avec le signe ?.
  • Les paramètres suivants sont séparés par le signe &.

Exemple :

<?php
  $a = $_GET['prenom'];        // Récupère le prénom
  $b = $_GET['nom'];           // Récupère le nom
  $c = $_GET['datenaissance']; // Récupère la date de naissance
  echo $a;  // Affiche le prénom
  echo $b;  // Affiche le nom
  echo $c;  // Affiche la date de naissance
?>

PHP: Récupération de paramètres

Ce n’est pas obligatoire, mais souvent, on utilise un nom de variable qui correspond au nom de paramètre dans l’URL pour rendre le code plus lisible et intuitif.

<?php
  $prenom = $_GET['prenom'];        // Récupère le prénom
  $nom = $_GET['nom'];              // Récupère le nom
  $datenaissance = $_GET['datenaissance']; // Récupère la date de naissance
  echo $prenom;   // Affiche le prénom
  echo $nom;      // Affiche le nom
  echo $datenaissance; // Affiche la date de naissance
?>

Alterner entre PHP et HTML

Lorsqu’on produit des pages HTML avec du code PHP :

  • Ce qui est entre les balises PHP <?php et ?> est interprété par le préprocesseur PHP.
  • Ce qui n’est pas entre les balises PHP <?php et ?> est produit tel quel en sortie.
  • On peut basculer entre le code PHP et le HTML à volonté.

Alternance entre PHP et HTML (donc changements de contexte)

<?php
$i = 1; 
while ($i<=5) 
{
?>
    <p>Salut</p> 
<?php
    $i=$i+1; 
}
?>

Tout en PHP (donc sans changement de contexte)

<?php
$i = 1; 
while ($i<=5) 
{
    echo "<p>Salut</p>";
    $i=$i+1; 
}
?>

Tableaux

En PHP, les tableaux peuvent être indexés par des entiers, où chaque élément est associé à un indice numérique.

Exemple avec deux manières d’initialiser un tableau contenant les jours de la semaine :

  • Tableaux indexés
<?php
$jours = array(); 
$jours[0] = "Lundi"; 
$jours[1] = "Mardi"; 
$jours[2] = "Mercredi"; 
$jours[3] = "Jeudi"; 
$jours[4] = "Vendredi"; 
$jours[5] = "Samedi"; 
$jours[6] = "Dimanche"; 
?>

ou bien avec la syntaxe simplifiée :

<?php
$jours = ["Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"];
?>

Tableaux

Un tableau associatif (ou dictionnaire) associe des clés personnalisées à des valeurs, ce qui permet d’utiliser des chaînes de caractères comme indices au lieu de simples nombres.

Voici un exemple avec les informations d’une personne :

<?php
$personne['nom'] = "Lafarge"; 
$personne['prenom'] = "Patxi"; 
$personne['codepostal'] = "33100";
?>

ou bien avec la syntaxe simplifiée :

<?php
$personne = [
    'nom' => "Lafarge",
    'prenom' => "Patxi",
    'codepostal' => "33100"
];
?>

Tableaux

Les tableaux peuvent aussi être indexés et associatifs en même temps. Cela permet de créer des structures plus complexes, comme une liste de personnes, où chaque personne est représentée par un tableau associatif.

Voici un exemple de tableau indexé contenant des tableaux associatifs :

<?php
$personnes = array(); 
$personnes[0]['nom'] = "Lafarge"; 
$personnes[0]['prenom'] = "Patxi"; 
$personnes[0]['codepostal'] = "33100";
$personnes[1]['nom'] = "Errecaret"; 
$personnes[1]['prenom'] = "Amaia"; 
$personnes[1]['codepostal'] = "64100";
?>

ou bien

<?php
$personnes = [
    [
        'nom' => "Lafarge",
        'prenom' => "Patxi",
        'codepostal' => "33100"
    ],
    [
        'nom' => "Errecaret",
        'prenom' => "Amaia",
        'codepostal' => "64100"
    ]
];
?>