II. PHP

FondamentalI Introduction

A son origine, le web était« statique » : le code HTML était simplement envoyé par le serveur web au client.

Les personnes qui consultaient le site accédaient toutes à la même page.

Les choses ont ensuite évolué : les serveurs sont aujourd'hui capables de générer eux-mêmes du code HTML.

Les résultats qui s'afficheront à l'écran dépendront donc des demandes effectuées par l'utilisateur du site : le web est devenu dynamique.

Différents langages de programmation peuvent être utilisés « côté serveur » afin de permettre au serveur de générer lui-même le code HTML à envoyer.

Le plus utilisé encore aujourd'hui se nomme PHP.

PHP: Hypertext Preprocessor, plus connu sous son sigle PHP, est un langage de programmation libre, utilisé pour produire des pages Web dynamiques interprétés côté serveur.

PHP est un langage impératif orienté objet qui s'intègre dans vos pages HTML.

Il est considéré comme une des bases de la création de sites web dits dynamiques mais également des applications web.

ComplémentASSURER UNE COMMUNICATION EN RESEAU

Principe simplifié de l'affichage d'une page WEB hébergée sur un Serveur :

Lors de l'affichage d'une page WEB, votre navigateur envoie l'adresse demandée au Serveur WEB.

Apache est le logiciel qui traite les requêtes HTTP. Il cherche le fichier dans l'arborescence du Serveur.

Si le fichier ne contient pas de code PHP,

Si le fichier porte l'extension reconnue comme une page PHP (.PHP, .PHP3, .PHP4 par exemple)

la page est renvoyée à votre navigateur directement.

Votre navigateur interprète alors les différents langages interprétés côtés client se trouvant dans ce fichier

(HTML, JavaScript, CSS, etc ...) et affiche la page.

Le Serveur Web transmet ce fichier au logiciel PHP qui va:

- l'analyser

- exécuter le code entre balises <?php ... ?>

- envoyer les requêtes vers la base de donnée MySQL

- traiter les informations de retour de MySQL

La page est ensuite transmise au navigateur WEB sans code PHP

Exemple

Date et l'heure du Serveur

Code HTML (extension PHP)

1
<html>
2
<body>
3
<font size="2" face="Arial">Le texte en HTML</font>
4
<?php include("AffichageHeureDate.php"); 
5
// on appelle le fichier 
6
?>
7
<?php
8
$heure = date("H\hi");
9
print("<center><font size=\"2\" face=\"Arial\"> Il est $heure.</font></center>");
10
?>
11
</body>
12
</html>	

Code PHP (AffichageHeureDate.php)

1
<?php
2
$date = date("d-m-Y"); // affichage de la date du Serveur
3
$heure = date("H:i"); // affichage de l'heure du Serveur
4
Print("Nous sommes le $date et il est $heure");
5
?>
6

ComplémentII Données de formulaire

HTML du formulaire  Accueil.html

1
<form method="GET" action="Traitement.php">
2
Nom : <input type="text" name="nom" size="12"><br>
3
Prenom : <input type="text" name="prenom" size="12">
4
<input type="submit" value="OK">
5
</form>

Traitement.php traite les données côté Serveur

1
<?php
2
$prenom = $_GET['prenom'];
3
$nom = $_GET['nom'];
4
print("<center>Bonjour $prenom $nom</center>");
5
?>
6

ComplémentII Données de formulaire

III Sauvegarde de données

1) Dans un fichier

1
<?php
2
$fp = fopen("data.txt","r+");
3
//Ouverture en lecture et écriture (“r”: lecture uniquement)
4
$donnees = fgets($fp,255); //Récupère 255 caractères
5
fseek($fp,4);
6
//place le curseur à la 5ème position du fichier
7
//la première position étant notée 0
8
fputs($fp,'5'); //On écrit 5 à la position où est le curseur
9
fclose($fp); //On ferme le fichier
10
print('Le fichier contient : '.$donnees);
11
?>

Exercice :

Réaliser une petite page Accueil.php et réaliser un code php qui permette de compter et stocker le nombre de visiteurs ayant consulté cette page dans un fichier compteur.txt.

2) Dans un cookie

Un cookie est un fichier texte de taille limitée (65ko) permettant de stocker certaines informations. Le but premier de ce type de fichier et de pouvoir garder en mémoire les informations d'un visiteur afin de pouvoir les réutiliser à chacune de ses visites. Par exemple on y stocke son NOM, son PRENOM etc... Bien sûr cela n'est possible qu'à partir du moment où le visiteur a entré lui-même ses informations dans un formulaire sur le site.

setcookie()permet la création d'un cookie sur le client.

Cette création doit être la première fonction PHP que vous utilisez dans votre script, donc tout en haut du script.

1
<?php
2
$expire = 365*24*3600; // on définit la durée du cookie, 1 an
3
setcookie('nompropre','eric',time()+$expire); // on l envoi
4
?>
5

Lors de la requête d'un ordinateur client, PHP va regarder si un fichier contenant des éventuels cookies existe déjà sur la machine du visiteur. Vous obtenez la valeur stockée dans le cookie à l'aide du tableau $_COOKIE :

1
<?php
2
// On affiche la valeur du nom
3
echo "Bonjour".$_COOKIE['nompropre'];
4
?>
5

Si le visiteur n'a pas encore de cookie venant de votre site, rien ne sera affiché et aucun message d'erreur n'apparaitra.

Les Cookies pour Firefox sont stockés dans C:\Users\eric\AppData\Roaming\Mozilla\Firefox\Profiles\bs46uzws.default-release dans le fichier cookies.sqlite

Pour lire le contenu du fichier, rendez vous à l'adresse :https://inloop.github.io/sqlite-viewer

3) Dans une base de données

a) Introduction

Une base de données est une entité dans laquelle il est possible de stocker des données de façon structurée et avec le moins de redondance possible. Ces données doivent pouvoir être utilisées par des programmes, par des utilisateurs différents.

L'avantage majeur de l'utilisation de bases de données est la possibilité de pouvoir être accédées par plusieurs utilisateurs simultanément. La gestion de la base de données se fait grâce à un système appelé SGBD (système de gestion de bases de données). Nous emploierons MySQL.

Cela permettra :

-l'accès aux données de façon simple

-d'autoriser un accès aux informations à de multiples utilisateurs

-de manipuler les données présentes dans la base de données (insertion, suppression, modification)

Une base de données contient différentes tables. Les tables sont formées par un ensemble de « cellules » contenant des « champs » fixés à l'avance.

b) Création de la base

Sélectionner « Administration », puis lancer alors le module

« Administration MySQL ».

Créer alors une nouvelle base de données en lui donnant un nom, par exemple « MaBase ».

Puis on crée une table appelée « Annuaire » avec 5 champs (5 colonnes)

Id (Numéro de champ automatique), Nom,Prénom, Email,Date_Ajout

Une base de données (type MySQL) avec une table « réservation » qui est constituée d'un index, d'un numéro de salle, d'un jour, d'un horaire et d'un nom.

1
<?php
2
    
3
    date_default_timezone_set('Europe/Paris');
4
    
5
    $Nom_Serveur="localhost";
6
    $Nom_Utilisateur="root";
7
    $Mot_Passe="root";
8
    $Nom_Base="MaBase";
9
10
$connection=mysqli_connect($Nom_Serveur,$Nom_Utilisateur,$Mot_Passe);
11
if(!$connection){
12
die('Connexion impossible : '.mysql_error());
13
}
14
$sql='CREATE DATABASE '.$Nom_Base;
15
if($connection->query($sql)==TRUE){
16
echo"Base de données créée correctement";
17
    echo"<br>";
18
}else{
19
echo'Erreur lors de la création de la base de données : '.$connection->error;
20
    echo"<br>";
21
}
22
23
    // Creation du lien avec la base de donnée
24
    $connection=mysqli_connect($Nom_Serveur,$Nom_Utilisateur,$Mot_Passe,$Nom_Base);
25
    // Check connection
26
    if($connection->connect_error){
27
        die("Impossible d'établir le lien avec la base de donnée: ".$connection->connect_error);
28
        echo"<br>";
29
    }
30
31
// Requete SQL de création de la table
32
$sql="CREATE TABLE Annuaire (
33
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
34
prenom VARCHAR(30) NOT NULL,
35
nom VARCHAR(30) NOT NULL,
36
email VARCHAR(50),
37
date_ajout DATE
38
)";
39
40
if($connection->query($sql)==TRUE){
41
echo"Table Annuaire a été créée avec succès: ";
42
    echo"<br>";
43
}else{
44
echo"Erreur lors de la creation de la table Annnuaire : ".$connection->error;
45
    echo"<br>";
46
}
47
48
// Ajout d'un enregistrement dans la table
49
$sql='INSERT INTO Annuaire(prenom, nom, email,date_ajout) VALUES(\'eric\', \'langer\', \'eric.langer@ac-strasbourg.fr\',\''.date("Y-m-d H:i:s").'\')';
50
51
if($connection->query($sql)==TRUE){
52
    echo'La personne a bien été ajouté !';
53
    echo"<br>";
54
}else{
55
echo"Erreur lors de L'ajout de l'enregistrement : ".$connection->error;
56
    echo"<br>";
57
}
58
59
$sql='SELECT * FROM Annuaire';
60
61
$reponse = $connection->query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.$mysqli->error);
62
63
// on recupere le resultat sous forme d'un tableau
64
while ($ligne = $reponse->fetch_assoc()) {
65
    // on affiche les résultats
66
    echo 'Nom : '.$ligne['nom'].'<br>';
67
    echo 'Prenom : '.$ligne['prenom'].'<br>';
68
    echo 'Mail : '.$ligne['email'].'<br>';
69
}
70
71
72
?>
73