PHP - Concepts Web

Cette session montre comment PHP peut fournir du contenu dynamique en fonction du type de navigateur, des nombres générés aléatoirement ou de l'entrée utilisateur. Il a également montré comment le navigateur client peut être redirigé.

Identification du navigateur et de la plate-forme

PHP crée des environment variables qui peut être vu dans la page phpinfo.php qui a été utilisée pour configurer l'environnement PHP.

L'une des variables d'environnement définies par PHP est HTTP_USER_AGENT qui identifie le navigateur et le système d'exploitation de l'utilisateur.

PHP fournit une fonction getenv () pour accéder à la valeur de toutes les variables d'environnement. Les informations contenues dans la variable d'environnement HTTP_USER_AGENT peuvent être utilisées pour créer un contenu dynamique adapté au navigateur.

L'exemple suivant montre comment vous pouvez identifier un navigateur client et un système d'exploitation.

NOTE- La fonction preg_match () est discutée dans la session Expression régulière PHP .

<html>
   <body>
   
      <?php
         function getBrowser() { 
            $u_agent = $_SERVER['HTTP_USER_AGENT']; 
            $bname = 'Unknown';
            $platform = 'Unknown';
            $version = "";
            
            //First get the platform?
            if (preg_match('/linux/i', $u_agent)) {
               $platform = 'linux';
            }elseif (preg_match('/macintosh|mac os x/i', $u_agent)) {
               $platform = 'mac';
            }elseif (preg_match('/windows|win32/i', $u_agent)) {
               $platform = 'windows';
            }
            
            // Next get the name of the useragent yes seperately and for good reason
            if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) {
               $bname = 'Internet Explorer';
               $ub = "MSIE";
            } elseif(preg_match('/Firefox/i',$u_agent)) {
               $bname = 'Mozilla Firefox';
               $ub = "Firefox";
            } elseif(preg_match('/Chrome/i',$u_agent)) {
               $bname = 'Google Chrome';
               $ub = "Chrome";
            }elseif(preg_match('/Safari/i',$u_agent)) {
               $bname = 'Apple Safari';
               $ub = "Safari";
            }elseif(preg_match('/Opera/i',$u_agent)) {
               $bname = 'Opera';
               $ub = "Opera";
            }elseif(preg_match('/Netscape/i',$u_agent)) {
               $bname = 'Netscape';
               $ub = "Netscape";
            }
            
            // finally get the correct version number
            $known = array('Version', $ub, 'other');
            $pattern = '#(?<browser>' . join('|', $known) . ')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
            
            if (!preg_match_all($pattern, $u_agent, $matches)) {
               // we have no matching number just continue
            }
            
            // see how many we have
            $i = count($matches['browser']);
            
            if ($i != 1) {
               //we will have two since we are not using 'other' argument yet
               
               //see if version is before or after the name
               if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
                  $version= $matches['version'][0];
               }else {
                  $version= $matches['version'][1];
               }
            }else {
               $version= $matches['version'][0];
            }
            
            // check if we have a number
            if ($version == null || $version == "") {$version = "?";}
            return array(
               'userAgent' => $u_agent,
               'name'      => $bname,
               'version'   => $version,
               'platform'  => $platform,
               'pattern'   => $pattern
            );
         }
         
         // now try it
         $ua = getBrowser();
         $yourbrowser = "Your browser: " . $ua['name'] . " " . $ua['version'] .
            " on " .$ua['platform'] . " reports: <br >" . $ua['userAgent'];
         
         print_r($yourbrowser);
      ?>
   
   </body>
</html>

Cela produit le résultat suivant sur ma machine. Ce résultat peut être différent pour votre ordinateur en fonction de ce que vous utilisez.

Il produira le résultat suivant -

Your browser: Google Chrome 54.0.2840.99 on windows reports: 
Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) 
   Chrome/54.0.2840.99 Safari/537.36

Afficher les images au hasard

Le PHP rand()est utilisée pour générer un nombre aléatoire.i Cette fonction peut générer des nombres dans une plage donnée. Le générateur de nombres aléatoires doit être amorcé pour empêcher la génération d'un modèle régulier de nombres. Ceci est réalisé en utilisant lesrand() fonction qui spécifie le numéro de départ comme argument.

L'exemple suivant montre comment afficher une image différente à chaque fois sur quatre images -

<html>
   <body>
   
      <?php
         srand( microtime() * 1000000 );
         $num = rand( 1, 4 );
         
         switch( $num ) {
            case 1: $image_file = "/php/images/logo.png";
               break;
            
            case 2: $image_file = "/php/images/php.jpg";
               break;
            
            case 3: $image_file = "/php/images/logo.png";
               break;
            
            case 4: $image_file = "/php/images/php.jpg";
               break;
         }
         echo "Random Image : <img src=$image_file />";
      ?>
      
   </body>
</html>

Il produira le résultat suivant -

Utilisation de formulaires HTML

La chose la plus importante à noter lors de l'utilisation de formulaires HTML et PHP est que tout élément de formulaire dans une page HTML sera automatiquement disponible pour vos scripts PHP.

Essayez l'exemple suivant en mettant le code source dans le script test.php.

<?php
   if( $_POST["name"] || $_POST["age"] ) {
      if (preg_match("/[^A-Za-z'-]/",$_POST['name'] )) {
         die ("invalid name and name should be alpha");
      }
      
      echo "Welcome ". $_POST['name']. "<br />";
      echo "You are ". $_POST['age']. " years old.";
      
      exit();
   }
?>
<html>
   <body>
   
      <form action = "<?php $_PHP_SELF ?>" method = "POST">
         Name: <input type = "text" name = "name" />
         Age: <input type = "text" name = "age" />
         <input type = "submit" />
      </form>
      
   </body>
</html>

Il produira le résultat suivant -

  • La variable PHP par défaut $_PHP_SELF est utilisé pour le nom du script PHP et lorsque vous cliquez sur le bouton «Soumettre», le même script PHP sera appelé et produira le résultat suivant -

  • La méthode = "POST" est utilisée pour publier les données utilisateur dans le script serveur. Il existe deux méthodes pour publier des données sur le script serveur qui sont décrites dans le chapitre PHP GET & POST .

Redirection du navigateur

Le PHP header()La fonction fournit des en-têtes HTTP bruts au navigateur et peut être utilisée pour le rediriger vers un autre emplacement. Le script de redirection doit être tout en haut de la page pour empêcher le chargement de toute autre partie de la page.

La cible est spécifiée par le Location: en-tête comme argument du header()fonction. Après avoir appelé cette fonction, leexit() La fonction peut être utilisée pour arrêter l'analyse du reste du code.

L'exemple suivant montre comment vous pouvez rediriger une demande de navigateur vers une autre page Web. Essayez cet exemple en mettant le code source dans le script test.php.

<?php
   if( $_POST["location"] ) {
      $location = $_POST["location"];
      header( "Location:$location" );
      
      exit();
   }
?>
<html>
   <body>
   
      <p>Choose a site to visit :</p>
      
      <form action = "<?php $_SERVER['PHP_SELF'] ?>" method ="POST">
         <select name = "location">.
         
            <option value = "http://www.tutorialspoint.com">
               Tutorialspoint.com
            </option>
         
            <option value = "http://www.google.com">
               Google Search Page
            </option>
         
         </select>
         <input type = "submit" />
      </form>
      
   </body>
</html>

Il produira le résultat suivant -