PHP - Concetti web

Questa sessione dimostra come PHP può fornire contenuto dinamico in base al tipo di browser, numeri generati casualmente o input dell'utente. Ha anche dimostrato come il browser del client può essere reindirizzato.

Identificazione del browser e della piattaforma

PHP crea alcuni file utili environment variables che può essere visto nella pagina phpinfo.php che è stata utilizzata per configurare l'ambiente PHP.

Una delle variabili d'ambiente impostate da PHP è HTTP_USER_AGENT che identifica il browser e il sistema operativo dell'utente.

PHP fornisce una funzione getenv () per accedere al valore di tutte le variabili d'ambiente. Le informazioni contenute nella variabile d'ambiente HTTP_USER_AGENT possono essere utilizzate per creare contenuto dinamico appropriato al browser.

L'esempio seguente mostra come identificare un browser client e un sistema operativo.

NOTE- La funzione preg_match () è discussa nella sessione delle espressioni regolari 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>

Questo sta producendo il seguente risultato sulla mia macchina. Questo risultato potrebbe essere diverso per il tuo computer a seconda di cosa stai usando.

Produrrà il seguente risultato:

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

Visualizza le immagini in modo casuale

Il PHP rand()viene utilizzata per generare un numero casuale. i Questa funzione può generare numeri entro un dato intervallo. Il generatore di numeri casuali dovrebbe essere impostato per evitare che venga generato un modello regolare di numeri. Ciò si ottiene utilizzando ilsrand() funzione che specifica il numero seme come argomento.

L'esempio seguente mostra come visualizzare un'immagine diversa ogni volta su quattro immagini:

<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>

Produrrà il seguente risultato:

Utilizzo di moduli HTML

La cosa più importante da notare quando si ha a che fare con moduli HTML e PHP è che qualsiasi elemento di modulo in una pagina HTML sarà automaticamente disponibile per i propri script PHP.

Prova il seguente esempio inserendo il codice sorgente nello 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>

Produrrà il seguente risultato:

  • La variabile predefinita PHP $_PHP_SELF viene utilizzato per il nome dello script PHP e quando fai clic sul pulsante "invia" verrà chiamato lo stesso script PHP e produrrà il seguente risultato:

  • Il metodo = "POST" viene utilizzato per inviare i dati dell'utente allo script del server. Ci sono due metodi per inviare i dati allo script del server che sono discussi nel capitolo PHP GET & POST .

Reindirizzamento del browser

Il PHP header()la funzione fornisce intestazioni HTTP non elaborate al browser e può essere utilizzata per reindirizzarlo a un'altra posizione. Lo script di reindirizzamento dovrebbe essere nella parte superiore della pagina per impedire il caricamento di qualsiasi altra parte della pagina.

Il target è specificato da Location: header come argomento del file header()funzione. Dopo aver chiamato questa funzione il fileexit() può essere utilizzata per arrestare l'analisi del resto del codice.

L'esempio seguente mostra come reindirizzare una richiesta del browser a un'altra pagina web. Prova questo esempio inserendo il codice sorgente nello 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>

Produrrà il seguente risultato: