PHP - Conceptos web

Esta sesión demuestra cómo PHP puede proporcionar contenido dinámico según el tipo de navegador, los números generados aleatoriamente o la entrada del usuario. También demostró cómo se puede redirigir el navegador del cliente.

Identificación del navegador y la plataforma

PHP crea algunos útiles environment variables que se puede ver en la página phpinfo.php que se utilizó para configurar el entorno PHP.

Una de las variables de entorno establecidas por PHP es HTTP_USER_AGENT que identifica el navegador y el sistema operativo del usuario.

PHP proporciona una función getenv () para acceder al valor de todas las variables de entorno. La información contenida en la variable de entorno HTTP_USER_AGENT se puede utilizar para crear contenido dinámico apropiado para el navegador.

El siguiente ejemplo demuestra cómo puede identificar el navegador y el sistema operativo de un cliente.

NOTE- La función preg_match () se analiza en la sesión de expresión regular de 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>

Esto está produciendo el siguiente resultado en mi máquina. Este resultado puede ser diferente para su computadora dependiendo de lo que esté usando.

Producirá el siguiente resultado:

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

Mostrar imágenes al azar

El PHP rand()La función se usa para generar un número aleatorio.i Esta función puede generar números dentro de un rango dado. El generador de números aleatorios se debe sembrar para evitar que se genere un patrón regular de números. Esto se logra utilizando elsrand() función que especifica el número de semilla como argumento.

El siguiente ejemplo demuestra cómo puede mostrar una imagen diferente cada vez de cuatro imágenes:

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

Producirá el siguiente resultado:

Usar formularios HTML

Lo más importante a tener en cuenta cuando se trata de formularios HTML y PHP es que cualquier elemento de formulario en una página HTML estará disponible automáticamente para sus scripts PHP.

Pruebe el siguiente ejemplo poniendo el código fuente en el 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>

Producirá el siguiente resultado:

  • La variable predeterminada de PHP $_PHP_SELF se usa para el nombre del script PHP y cuando hace clic en el botón "enviar", se llamará al mismo script PHP y producirá el siguiente resultado:

  • El método = "POST" se utiliza para publicar datos de usuario en el script del servidor. Hay dos métodos para publicar datos en el script del servidor que se describen en el capítulo PHP GET & POST .

Redirección del navegador

El PHP header()La función proporciona encabezados HTTP sin procesar al navegador y se puede usar para redirigirlo a otra ubicación. El script de redirección debe estar en la parte superior de la página para evitar que se cargue cualquier otra parte de la página.

El objetivo es especificado por el Location: encabezado como argumento de la header()función. Después de llamar a esta función,exit() La función se puede utilizar para detener el análisis del resto del código.

El siguiente ejemplo demuestra cómo puede redirigir una solicitud del navegador a otra página web. Pruebe este ejemplo poniendo el código fuente en el 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>

Producirá el siguiente resultado: