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-Type为text/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");
}