Langage coté serveur: PHP



Informations préalables


Après un clic sur le bouton envoyer (submit) et vérification du code Javascript, si le formulaire est correctement rempli, son contenu doit être transmis au serveur web. Dans la balise <form>, il faut préciser quel programme sur le serveur sera chargé d'analyser les données; cette information est indiquée avec l'attribut action dans la balise <form>; on doit aussi choisir une méthode d’envoi des données, il y a deux possibilités qui s'appellent  get et post  (ce point sera expliqué dans le chapitre sur le protocole http). ), la méthode d’envoi est communiquée avec l'attribut method dans la balise <form> , ici on choisira method ="post"


Voici à quoi ressemble une balise <Form> avec ces attributs:


<form action="myphp.php" method ="post" name="inscription_form" onsubmit="return checkForm();">



Vous pouvez voir que le destinataire du formulaire s'appelle myphp.php, c'est le nom du fichier que va charger le serveur web pour traiter les données du formulaire. C'est un fichier qui contient du code php qui est un langage interprété par le serveur web.


Un serveur web est un logiciel qui envoie des pages web à un client web ( comme Firefox, etc...), c'est le client web qui demande les pages avec le protocole http (ou https).  Le  serveur web est installé sur une machine que l'on appelle une machine serveur ou plus simplement un serveur, le client web est installé sur une autre machine ( ordinateur, smartphone) que l'on appelle une machine cliente ou plus simplement un client.  

Le réseau internet sert de support de transmission pour les échanges entre le client et le serveur.


Sur le serveur on utilisera le logiciel serveur web Apache. Pour réduire le coût, la machine serveur sera une machine virtuelle. Une machine virtuelle se comporte exactement comme une vraie machine, le principe est d'utiliser un programme ( ici virtualBox) que l'on installe sur un ordinateur du lycée. Une fois VirtualBox lancé, il simule un ordinateur, on lui installe un système d'exploitation et des logiciels comme le serveur web Apache. Un client communiquera avec la machine virtuelle sans se rendre compte que c'est un serveur virtuel.


1.  Sur le serveur Virtuel Un lien vers le dossier /var/www/html  (  entouré en bleu ci-dessous) vous permettra d'accéder aux fichiers du site web. Pour l'instant le site web n'est pas encore fonctionnel parce que le fichier myphp.php n'est pas complété.



Partie1 : prise en main


  • ouvrir le dossier html du bureau puis le fichier "myphp.php" dans ce dossier:


 


La partie PHP du chapitre ressources donne tous les détails du langage ( vous n'avez pas à connaître ce langage en première).  


Le langage PHP est interprété par le serveur web; le code php est souvent  inséré au milieu du code html,  il est placé entre des balises en paire <? php  et  ?> ( vous les voyez entourées en rouge ci-dessus ). Un fichier qui contient du code php ne doit pas être enregistré avec l'extension .html mais avec l'extension .php. Quand un client web demande à consulter une page php, le serveur web charge la page, analyse ce qui est demandé dans le code php puis il envoie la page au client web.


Le navigateur web ( client web)  ne peut pas interpréter le code php, ainsi vous ne pouvez pas demander l'ouverture d'un fichier php à Firefox comme vous le faisiez avec du code html. Il faut faire une requete "http://nom-du-serveur/fichier-voulu.php" auprès du serveur web qui transmettra la page au navigateur sans les parties php.



Voici un code php  en rouge ci-dessous au milieu d'un code html en noir:


<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title> page php </title>

</head>

<body>

<?php  

echo 'Bonjour';

?>

</body>

</html>


  • Saisir l'instruction  echo 'Bonjour'; entre les balises php de votre fichier myphp.php. Enregistrer.



  • Ouvrir un navigateur web  de la machine virtuelle et demander la page http://localhost/myphp.php 

( localhost est le nom donné au serveur web local d'une machine serveur)




Résultat: l'instruction echo est un peu comme la fonction document.write(..) de JavaScript, elle permet d'ajouter du contenu dans la page web.



  • Faire un clic-droit dans la page web et choisir "code source de la page"


   


Vous pouvez voir ce que le serveur a envoyé au navigateur, le code php n'est pas présent, l'instruction echo a été interprétée par le serveur web qui a rajouté le texte "bonjour":




L'instruction echo permet d'ajouter des balises html qui sont mises dans des chaînes de caractères, les chaînes peuvent se concaténer avec l'opérateur de concaténation, le point  ".".


<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title> page php </title>

</head>

<body>

<?php

// le point permet de concaténer des chaînes de caractères  

echo '<h1>'. 'Bonjour'. '</h1>';

?>

</body>

</html>


Résultat de l'affichage et code source transmis:


       




Partie2 : variables et traitement des données du formulaire


PHP peut manipuler des variables; en php, les variables sont des mots précédés du signe $, saisir les parties en rouge du code php ci-dessous (à la place du code précédent)  dans le fichier myphp.php, tester le code en demandant au navigateur de la machine virtuelle la page http://localhost/myphp.php :


<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title> page php </title>

</head>

<body>

<?php

$nom = ' Onette';

$prenom = 'Camille';

$lieu_de_naissance = 'Carcassonne' ;

$date_naissance = '12-08-2004';

// ce code concatène des chaines de caractères et le contenu de variables

echo 'Bonjour'.$prenom.' '.$nom.'tu es né(e) le '.$date_naissance. ' à '.$lieu_de_naissance;

?>

</body>

</html>



Résultat






 Les variables php peuvent se voir affecter des données transmises par un formulaire.

Côté html, le champ de saisie du nom est associé à une variable qui est donnée dans l'attribut name d'une la balise <input> de type='text' (champ de saisie), ci dessous name="nom"


<label for="nom">  Entrez votre nom : </label>

<input type="text" name="nom"  maxlength="20" size="20" />



Si la personne saisit Onette dans le champ, la variable  nom = 'Onette'




Lorsque l'utilisateur transmet le formulaire en cliquant sur le bouton Envoyer, le contenu de toutes les variables est envoyé par la méthode post. Du côté serveur, le serveur web obtient un tableau appelé $_ POST avec le contenu de toutes les variables transmises.



Pour manipuler les éléments du tableau coté php, on peut par exemple affecter à une variable php appelé  $nom  le contenu de la case du tableau qui contient la valeur du champ nom cette case s'appelle  $_POST['nom'], cette affectation se programmera:  

$nom = $_POST['nom'];


Voici un code qui récupère le contenu des variables du tableau ci-dessus et les affecte à des variables php:


$nom = $_POST['nom'];

$prenom = $_POST['prenom'];

$lieu = $_POST['lieu'];

$date_naissance = $_POST['birthday'];



    • saisir les parties php en rouge ci-dessous, à la place du code précédent,  dans votre fichier myphp.php, enregistrer

 

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title> page php </title>

</head>

<body>

<?php

$nom = $_POST['nom'];

$prenom = $_POST['prenom'];

$lieu = $_POST['lieu'];

$date_naissance = $_POST['birthday'];

echo 'Bien recu M ' .$prenom. ' ' .$nom';

?>

</body>

</html>


    • Demander la page http://localhost avec votre navigateur de la machine virtuelle pour avoir la page index.html qui s'affiche.

 ( si on ne précise pas quelle page on veut après localhost,  le serveur renvoie la page d'accueil qui est ici  index.html)




    • Remplir le formulaire et cliquer sur Envoyer.




Résultat: le serveur vous répond avec le contenu de l'instruction echo:



PhP est un langage qui possède toutes les caractéristiques habituelles des langages de programmation, il permet de déclarer et utiliser des variables, de définir des fonctions, de faire des tests, des traitements en boucle, etc.. Au niveau syntaxe comme vous le verrez dans cette activité, c'est assez proche du langage JavaScript mais avec quelques variations.


La fonction php native empty(..)  prend en paramètre une des cases d'un tableau $_POST et renvoie true si la case est vide,  par exemple  !empty( $_POST['nom']) permet de vérifier que la case du tableau $_POST['nom'] contient bien un nom ( vous avez programmé une vérification côté client avec JavaScript mais si les données transmises proviennent d'un code web malveillant, la vérification peut avoir été contournée) .

 empty(..) renvoie true si la case du tableau n'a pas une valeur et  false  sinon, on peut utiliser cette valeur renvoyée ( true ou false)  dans un test "if" qui sera vrai si la case a bien une valeur; on utilise l'opérateur and (et) pour vérifier toutes les cases du tableau:

Si la case nom et la case prénom et la case lieu de naissance ont bien toutes des valeurs, on continue sinon on renvoie un message d'erreur au navigateur:


    • 7.4 Remplacer le code php précédent par celui ci-dessous et passer à la question suivante:


if ( (!empty($_POST['nom'])) and (!empty($_POST['prenom'])) and (!empty($_POST['lieu'])) and (!empty($_POST['birthday'])))

{


$nom = $_POST['nom'];

$prenom = $_POST['prenom'];

$lieu = $_POST['lieu'];

$date_naissance = $_POST['birthday'];

echo 'Bien reçu M(me) '.$prenom.' '. $nom. ' vous êtes né à '.$lieu. ' le '. $date_naissance;


}

else

{

echo " <br/> <h1> Désolé vous n'avez pas rempli tous les champs correctement <h1> ";


}


Maintenant le formulaire est vérifié côte client avec JavaScript et coté serveur avec  PHP.




Base de données


Une base de données est un ensemble de tableaux qui permettent de stocker des informations sur un serveur, ils sont gérés par un logiciel que l'on appelle le Système de Gestion de Base de Données ( SGBD).  On peut entrer en communication avec le SGBD par l'intermédiaire de requêtes  avec un langage spécialisé appelé SQL ( Simple Query Langage: langage simple de requête), Php peut envoyer des requêtes SQL à un SGBD.


L'étude des SGBD et du langage SQL est au programme de terminale en NSI.









Créé avec HelpNDoc Personal Edition: Produire des aides en ligne pour les applications Qt