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

识别浏览器&平台
PHP 创建一些有用的环境变量,它们可以在用于设置 php 环境的 phpinfo.php 页面中看到 PHP 配置。
被 PHP 设置环境变量集中一个变量 HTTP_USER_AGENT 是用来标识用户的浏览器和操作系统。
PHP 提供了 getenv() 函数来访问所有的环境变量的值。
HTTP_USER_AGENT 环境变量中包含的信息适合于浏览器,可用于创建动态内容。
下面的例子演示了如何识别客户浏览器和操作系统。
注意:函数 preg_match() 是在 PHP 正则表达式匹配函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<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> |
这是在我的机器上产生后的结果。可能在不同的电脑依据所运行的环境会产生不同的结果。
1 |
You are using Mozilla! on Windows! |
随机显示图像
PHP rand() 函数用于生成一个随机数。这个函数可以会随机地在一个给定的范围内生成数字。随机数生成器打乱数字生成的规律。通过使用srand()函数,给它特定的种子数值作为它的参数。
以下示例演示了如何每次显示四个不同的图像的图片:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<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 脚本运行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?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 源代码的脚本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?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-Type为text/htmlnn。在这种情况下,将application/octet-stream和实际文件名称将连接到一起。
例如,如果你想要从一个给定的文件名文件下载链接,那么它的语法将如下。
1 2 3 4 5 6 7 8 9 10 11 |
#!/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"); } |