ED 4 : Php

Exercice 1 - Introduction à Php

On considère la page HTML suivante, contenant des scripts Php :
<html>
<body>
<h1>Votre Cinéma</h1>

<?php

$auteur="David Gross-Amblard"; // auteur du site

function lien($texte,$url){ // fabrique le code HTML d'un lien
  return "<a href=\"$url\">$texte</a>";
}

echo "Votre ".lien("cinéma","http://www.allocine.fr")." vous propose une sélection de grands films:";
?>

<ul>
<li>Alien vs Predator : 14h, 16h</li>
<li>Stupeur et tremblements : 14h</li>
<li>Magnolia : 16h, 18h</li>
<li>Les 400 coups : 16h</li>
</ul>

Auteur : <?= $auteur ?>

</body>
</html>
  1. Copiez cette page sur votre site, en lui donnant un nom terminant par ".php" et visualisez-le à travers le serveur Web. Renommez-le en ".html" et visualisez-le à nouveau. Que constatez-vous ? Pourquoi ?
  2. Modifiez le script pour remplacer le nom de l'auteur par votre nom.
  3. Créez une variable en début de script pour l'URL allocine, et utilisez-la dans le lien hypertexte.
  4. Ajoutez une feuille de style CSS créant une classe important, stipulant que le texte doit apparaître en rouge. Modifiez la fonction lien pour que les liens engendrés par votre script soient de classe important.
  5. Visualisez le code source de votre page en vous servant de votre navigateur. Quel processus a exécuté ce script ? Comparez avec Javascript.
  6. Affichez, dans le script précédent, le contenu des variables $HTTP_USER_AGENT et $HTTP_HOST (selon la configuration du serveur, elles peuvent se trouver dans le tableau prédéfini $_SERVER. On utilisera par exemple $_SERVER['HTTP_USER_AGENT']). Cherchez des exemples d'utilisation de ces variables.

Exercice 2 - Entrées/sorties et Php

  1. Copiez le fichier suivant sur votre site, en le nommant "horaires.txt". Observez son contenu.
  2. Ajoutez le code suivant dans votre script.
    <?php
    	$fichier=fopen("horaires.txt","r"); // ouvre le fichier en lecture
    	while($ligne=fgets($fichier)){      // lit une ligne
    
    	  $colonne=explode(":",$ligne);   // répartit les élements de la ligne
    					// dans le tableau $colonne
    
              $titre=$colonne[0];
    	  $realisateur=$colonne[1];					
    	  $horaire=$colonne[2];
    
    	  echo "$titre ($realisateur) : $horaire <br>";
           }	
    ?>
    
  3. Modifiez-le pour afficher le résultat dans une liste de type <ol>.
  4. Ajoutez un lien sur chaque titre de film vers allocine (vous pouvez aussi utiliser http://www.google.com).

Exercice 3 - paramètres du script

  1. Créez une variable $q dans votre script, ayant pour valeur "Truffaut" (attention à la majuscule).
  2. Ajoutez le code suivant pour que le script n'affiche que les horaires du film réalisé par $q. Attention, "==" (opérateur de comparaison) est différent de "=" (opérateur d'affectation de variable).
    	   if ($realisateur==$q){
    	   ... // faire l'affichage
    	   }
    	 
  3. Supprimez la définition de $q. Consultez votre document en passant la valeur du paramètre q dans l' URL: http://localhost/<nom de votre fichier>?q=Truffaut.
    • Normalement, la variable $q devrait avoir la valeur passée en paramètre dans l'Url. Mais, pour des raisons de sécurité, il se peut que l'option register_globals de PHP soit désactivée (pour afficher la configuration de votre serveur, vous pouvez utiliser la fonction phpinfo()). Sans cette option, il n'est pas possible d'accéder directement aux valeurs des paramètres transmis dans les URLs. Ces derniers sont alors stockés dans le tableau _GET. Utilisez par exemple $_GET['motcle'] pour récupérer la valeur du paramètre motcle.
  4. Observez une URL d'Allocine pour une recherche de film. Associez à chaque film de votre site le lien correspondant vers Allocine.
    • Dans la documentation, vous trouverez les fonctions permettant de construire une url "correcte".

Exercice 4 - Formulaires et Php

  1. Téléchargez le document suivant.
  2. Changer la valeur de l'attribut action de la balise form pour pointer vers votre script précédent.
  3. Observez la forme de l'URL appelée. Recommencez en modifiant l'attribut method de la balise form en "post". L'URL change-t'elle ? Selon vous, par quel biais la valeur du paramètre action est-elle transmise au serveur.