离线下载
PDF版 ePub版

极客学院团队出品 · 更新于 2018-11-28 11:00:43

Web Concepts

本节演示了根据浏览器类型如何使用PHP可以提供动态页面内容,像随机生成的数字或用户输入。它还展示了客户端浏览器是怎么可以被重定向的。

识别浏览器&平台

PHP 创建一些有用的环境变量,它们可以在用于设置 php 环境的 phpinfo.php 页面中看到 PHP 配置。

被 PHP 设置环境变量集中一个变量 HTTP_USER_AGENT 是用来标识用户的浏览器和操作系统。

PHP 提供了 getenv() 函数来访问所有的环境变量的值。

HTTP_USER_AGENT 环境变量中包含的信息适合于浏览器,可用于创建动态内容。

下面的例子演示了如何识别客户浏览器和操作系统。

注意:函数 preg_match() 是在 PHP 正则表达式匹配函数

    <html>
    <body>
    <?php
       $viewer = getenv( "HTTP_USER_AGENT" );
       $browser = "An unidentified browser";
       if( preg_match( "/MSIE/i", "$viewer" ) )
       {
          $browser = "Internet Explorer";
       }
       else if(  preg_match( "/Netscape/i", "$viewer" ) )
       {
          $browser = "Netscape";
       }
       else if(  preg_match( "/Mozilla/i", "$viewer" ) )
       {
          $browser = "Mozilla";
       }
       $platform = "An unidentified OS!";
       if( preg_match( "/Windows/i", "$viewer" ) )
       {
          $platform = "Windows!";
       }
       else if ( preg_match( "/Linux/i", "$viewer" ) )
       {
          $platform = "Linux!";
       }
       echo("You are using $browser on $platform");
    ?>
    </body>
    </html>

这是在我的机器上产生后的结果。可能在不同的电脑依据所运行的环境会产生不同的结果。

    You are using Mozilla! on Windows!

随机显示图像

PHP rand() 函数用于生成一个随机数。这个函数可以会随机地在一个给定的范围内生成数字。随机数生成器打乱数字生成的规律。通过使用srand()函数,给它特定的种子数值作为它的参数。

以下示例演示了如何每次显示四个不同的图像的图片:

    <html>
    <body>
    <?php
      srand( microtime() * 1000000 );
      $num = rand( 1, 4 );

      switch( $num ) 
      {
      case 1: $image_file = "/home/images/alfa.jpg";
              break;
      case 2: $image_file = "/home/images/ferrari.jpg";
              break;
      case 3: $image_file = "/home/images/jaguar.jpg";
              break;
      case 4: $image_file = "/home/images/porsche.jpg";
              break;
      }
      echo "Random Image : <img src=$image_file />";
    ?>
    </body>
    </html>

使用 HTML 表单

最重要的事情是需要注意在处理 HTML 表单和 PHP 页面时,任何形式的表单元素都会提交到您的 PHP 脚本。试试下面的例子将在源代码 test.php 脚本运行。

    <?php
      if( $_POST["name"] || $_POST["age"] )
      {
         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>
  • PHP 他默认变量 $ _PHP_SELF 用于输出 PHP 脚本名称,当你点击“提交”按钮时然后,PHP 脚本将被调用,将会产生以下结果:
  • method=“POST” 用于用户发送数据到服务器脚本。在 PHP 中有两个方法可以上传数据到服务器脚本,GET 和 POST 将在以后的章节讨论。

浏览器重定向

PHPheader()函数提供原始 HTTP headers 到浏览器,可用于重定向到另一个位置。重定向脚本应该在页面的顶端,以防止加载页面的其他部分。

Location:用来指定目标位置:header()函数使用 url 作为参数。在调用该函数之后使用exit() 函数可以阻止其他代码的解析

下面的例子演示了如何将浏览器请求重定向到另一个 web 页面。试试这个例子 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 $_PHP_SELF ?>" method="POST">
       <select name="location">
          <option value="http://w3c.org">
                World Wise Web Consortium
          </option>
          <option value="http://www.google.com">
                Google Search Page
          </option>
       </select>
       <input type="submit" />
       </form>
    </body>
    </html>

显示“文件下载”对话框

某个时候显示“文件下载”对话框是想要的功能,你想给使用选项当用户点击一个链接,它就会弹出一个“文件下载”显示框给用户而不是显示实际内容。通过 HTTP 头协议这是非常容易的。

HTTP 头协议将不同于实际的协议,我们发送的 Content-Typetext/htmlnn。在这种情况下,将application/octet-stream和实际文件名称将连接到一起。

例如,如果你想要从一个给定的文件名文件下载链接,那么它的语法将如下。

    #!/usr/bin/perl
    # HTTP Header
    print "Content-Type:application/octet-stream; name=\"FileName\"\r\n";
    print "Content-Disposition: attachment; filename=\"FileName\"\r\n\n";

    # Actual File Content
    open( FILE, "<FileName" );
    while(read(FILE, $buffer, 100) )
    {
       print("$buffer");
    }
上一篇: 字符串 下一篇: GET 和 POST 方法