Cours 5 - 2 - P PHP
Cours 5 - 2 - P PHP
Cours 5 - 2 - P PHP
Programmation Web
Langage PHP (II)
1
Prof Yousef FARHAOUI Filière GI (S6) : Module I616
Variables serveur(1/2)
PHP propose l’accès à toute une série de variables comme les en-têtes, dossiers et
chemins des scripts, sans que vous ayez à les créer, on les appelle les variables
serveur. Ces variables sont créées par le serveur web.
2
Variables serveur(2/2)
Exemple
<?php
echo 'PHP_SELF: '.$_SERVER['PHP_SELF'];
Le résultat obtenu sera :
3
Accès fichiers
1. Ouverture / fermeture de fichier
Avant toute opération de lecture ou écriture sur un fichier il y a nécessité de
l’ouvrir. Et à la fin de tout traitement d’un fichier il y a nécessité de le fermer.
Syntaxe
<?
// Ouverture de fichier
$monfichier = fopen("nom_du_fichier", "r+");
// Traitements sur le fichier
// …..
// Fermeture du fichier
fclose($monfichier);
?>
4
Accès fichiers
fopen() prend en entrée :
-le nom du fichier (ou même une url)
-le mode d’ouverture du fichier
fclose().
Problème de concurrence :
Plusieurs clients demandent une page simultanément
deux scripts modifient un fichier en même temps
Conflit
▶ Solution : verrouillage du fichier
<?
$id = fopen("fichier.txt", "w");
echo $id."\n";
flock($id, LOCK_EX);
LOCK_EX // Verrouillage en lecture et en écriture
....
flock($id, LOCK_UN); // Déverrouillage
fclose($id);
?>
Syntaxe
<?
$monfichier = fopen("nom_du_fichier", "r+");
fgets ($monfichier, $taille) ;
fclose($monfichier) ;
?>
7
Accès fichiers
Exemple :
L’exemple suivant va permettre de lire dans un fichier texte (fichier.txt) ligne par ligne puis
d’afficher le résultat à l’écran en mettant un numéro à chaque ligne.
Fichier fichier.txt Fichier page.php
Rami Ahmed
Errachidia Exemple 1
maroc <?php
Exemple 2 $i=0;
$fichier = 'fichier.txt';
<table border="1"> $fp = fopen($fichier,'r') ;//ouverture du fichier en lecture seulement
<tr><th>Nom</th><th>Prenom while ( !feof($fp)) // tant qu’on n’est pas a la fin du fichier
</th></tr> {
<? $ligne = fgets($fp); //Lecture ligne par ligne
$id = fopen("liste.txt", "r"); echo 'Ligne '.$i++.'--->'.$ligne.'<br>'; }
while ($ligne=fgets($id)) { fclose($fp);
$t = explode(";", $ligne); ?>
echo Le résultat obtenu sera :
"<tr><td>$t[0]</td><td>$t[1] Ligne 1 ---> Rami Ahmed
</td></tr>"; } Ligne 2 ---> Errachidia
flcose($id); Ligne 3 ---> maroc
?></table> 8
Accès fichiers
Lecture de fichier (fread() )
string fread( resource handle , int length )
fread lit jusqu'à length octets dans le fichier référencé par handle . La lecture s'arrête lorsque
length octets ont été lus, ou que l'on a atteint la fin du fichier.
9
Accès fichiers
Lecture de fichier ( file() )
array file (string filename)
Identique à readfile, hormis le fait que file retourne le fichier dans un tableau. Chaque élément
du tableau correspondant à une ligne du fichier, et les retour−chariots sont placés en fin de ligne.
11
Accès fichiers
Ecriture dans un fichier
La fonction pour l’écriture dans un fichier est fputs():
int fputs( int handle , string string , int length )
fputs écrit le contenu de la chaîne string dans le fichier pointé par handle. Si la longueur length
est fournie, l'écriture s'arrêtera après length octets, ou à la fin de la chaîne.
Syntaxe Exemple
<?
<?
$monfichier =
$filename = "fichier.txt";
fopen("nom_du_fichier", "r+");
$monfichier = fopen ($filename, "a+");
fputs ($monfichier, "Texte à écrire");
$contenu="ceci est le texte a ecrire\n";
fclose ($monfichier) ;
fputs($monfichier, $contenu);
?>
fclose ($monfichier);
?>
Le résultat obtenu sera :
Le fichier fichier.txt aura une ligne supplémentaire
contenant « ceci est le texte à écrire »
12
Manipulations de fichiers
▶ Existence :
<?
if (file_exists("liste.txt"))
echo "le fichier existe";
else echo "le fichier n'existe pas";
?>
▶ Renommer un fichier :
<?
$res = rename("liste.txt", "liste2.txt");
if ($res==FALSE) die("erreur");
?>
▶ Supprimer un fichier :
<?
$res = unlink("liste.txt");
if ($res==FALSE) die("erreur");
?>
14
Accès fichiers
Fonctions diverses de traitement de fichier :
▶ feof($handle) fonction qui retourne un booleen pour indiquer la fin du fichier parcouru.
▶ filesize($nom_du_fichier) fonction qui retourne la taille du fichier en octets.
▶ file_exists($nom_du_fichier ) fonction qui retourne un booleen indiquant si le fichier
existe ou non.
▶ is_file("fichier") = true s’il s’agit d’un fichier
▶ is_readable("fichier") = true si le fichier est dispo en lecture
▶ is_writable("fichier") = true si le fichier est dispo. en écriture
▶ filetype("fichier) = le type du fichier
▶ basename("img/truc/toto.php") = ”toto.php”
▶ realpath("toto.php") = chemin complet du fichier
▶ fseek($id, n) ! se positionne sur le n-ème octet
▶ rewind($id) ! se positionne au début du fichier
▶ ftell($id) = position courante du curseur dans le fichier
▶ fgetc($id) = le prochain caractère du fichier
15
Passage et transmission de variables
Quand dans un site web un formulaire est rempli et envoyé, le contenu des champs saisis est
transféré à la page destination sous forme de variables. Ce passage de variables ou de
paramètres peut se faire de deux manières : en GET ou en POST.
la méthode GET : les variables du formulaires sont transmises dans la barre d’adresse
sous la forme ?nom_du_cham=valeur. On peut mettre plusieurs variables à la suite en les
séparant par un &.
(http://localhost/destination.php?nom=rami&prenom=ahmed).
la méthode POST : les variables du formulaire transitent de manière invisible.
16
Passage et transmission de variables
Passage et transmission de variables par formulaire
Syntaxe <!—Envoi d’un formulaire en POST -->
<form method="post" action="destination.php">
<input type="text" name="nom" size="12"><br>
<input type="submit" value="OK">
</form>
Selon que la méthode d’envoi a été du GET ou du POST la récupération du contenu des
variables est faite selon une syntaxe différente :
Syntaxe <?php
//Dans le cas d’un envoi des paramètres en POST
$variable1=$_POST'[‘nom_du_champ'] ;
<html>
<body> <?
<form method="post" action="resultat.php"> //Récupération des paramètres
Nom : <input type="text" name="nom" passés
size="12"><br> $prenom = $_POST['prenom'];
Prénom : <input type="text" name="prenom" $nom = $_POST['nom'] ;
size="12"> //affichage des paramètres
<input type="submit" value="OK"> echo "<center>Bonjour $prenom
</form> $nom</center>";
</body> ?>
</html>
18
Exemple d’écriture dans un fichier
<html>
<body>
<form action="<? echo $_SERVER['PHP_MYSELF']; ?>" method="post">
<b>Nom :</b> <input type="text" name="nom"/><br/>
<b>Prenom :</b> <input type="text" name="prenom"/><br/>
<input type="submit" value="Envoyer"/>
</form>
<?
if (isset($_POST['nom']) && isset($_POST['prenom'])) {
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$id = fopen("liste.txt", "a");
if ($id==FALSE) die("erreur");
flock($id, LOCK_SH);
fwrite($id, "$nom;$prenom\n");
flock($id, LOCK_UN);
$r = fclose($id);
if ($r==FALSE) die("erreur");
}
?>
</body>
</html> 19
Passage et transmission de variables
Passage et transmission de variables par hyperlien
Des paramètres ou variables peuvent passer d’une page source vers une page destination sans
transiter par un formulaire pour leur envoi. Les hyperliens peuvent être des vecteurs de passage
de paramètre.
Syntaxe:
<!—Syntaxe d’envoi -->
<a href=destination.php ?variable1=contenu1&variable2=contenu2&…> Lien </a>
La récupération des paramètres dans la page destination se fait par le tableau $_GET
<?
$variable1=$_GET['variable1'] ;
$variable2=$_GET['variable2'] ;
…
?>
20
Passage et transmission de variables
Passage et transmission de variables par hyperlien
Exemple :
Dans l’exemple suivant nous allons créer un fichier menu.php contenant un menu fait
d’hyperliens. Chacun de ces hyperliens enverra des paramètres différents.
Ce menu sera appelé dans une page qui réagira différemment selon le paramètre envoyé.
?>
21