Php 简明教程

PHP - Web Concepts

PHP 是一种服务器端脚本语言,用于创建动态网页。它是 Web 开发中最流行的编程语言之一。本章旨在让您熟悉使用 PHP 进行 Web 应用程序开发的某些重要概念。

基于 Web 的应用程序是网页的集合。网页主要是用 HTML 标记创建的。HTML 包含用于定义页面元素(如文本、图像、表格等)外观的不同 HTML 标记。因此,HTML 本质上创建了一个静态网页。

Web 应用托管在安装了 PHP 模块的 HTTP 服务器上。浏览器作为 http 客户端,遵循 HTTP 协议来与服务器建立通信。

php web concepts

How to Add Dynamic Content on a Webpage?

要向网页添加动态内容,可以使用两种方式。

JavaScript 是一种客户端脚本语言,它可以访问 HTML 文档对象模型并在客户端浏览器上呈现动态内容。JavaScript 代码可以嵌入到 HTML 页面中。

浏览器可以通过 HTML 表单元素收集用户数据,然后将其发送到 HTTP 服务器进行处理。PHP 是一种广泛使用的服务器端处理语言。PHP 脚本也可以嵌入到 HTML 页面中。

Example

在下面的脚本中,嵌入到 HTML 中的 JavaScript 代码根据客户端浏览器呈现当前日期,而 PHP 代码则根据脚本托管的服务器显示当前日期。

<!DOCTYPE html>
<html>
<body>
   <script type="text/JavaScript">
      document.write("Client's date :"+Date()+"\n");
   </script>
   <?php
      date_default_timezone_set("Asia/Calcutta");
      echo "server's date is " . date("Y-m-d") . "\n";
      echo "The time is " . date("h:i:sa");
   ?>
</body>
</html>

PHP can intercept and process the data from HTML forms 。这使你可以收集你的用户的信息。下一章将讨论 PHP 表单处理。

PHP can be used to interact with databases ,例如 MySQL 和 PostgreSQL。这使你能够存储和检索你的数据库中的数据,并动态填充网页或为 Web 应用程序提供动力。PHP 包括用于数据库处理的 mysql、mysqli 和 PDO 扩展。

PHP can handle the data received from the client 使用 HTTP GET 和 POST 方法。我们将在后面的章节详细讨论 PHP 如何处理 GET/POST 方法。

HTTP is a stateless protocol 。不过,它允许在服务器和客户端分别维护会话和 cookie。PHP 可用于创建和管理会话和 cookie。当用户浏览你的网站时,会话允许你跟踪各个用户,而 cookie 允许你将信息存储在用户的计算机上以供日后使用。在后续章节中,我们将学习 PHP 如何处理会话和 cookie。

PHP can be used to upload files to your web server 。这使你能够创建允许用户上传文件(例如图片、视频或文档)的 Web 应用程序。

You can use PHP to create a login page for your website 。当用户输入他们的用户名和密码时,PHP 可以检查数据库以查看用户是否有效。如果用户有效,PHP 可以让用户登录并将其重定向到你的网站的主页。

Identifying Browser & Platform

PHP 创建了一些可以在用于设置 PHP 环境的 phpinfo.php 页面中看到的 environment variables

PHP 设置的环境变量之一是 HTTP_USER_AGENT ,它标识用户的浏览器和操作系统。

PHP 提供了一个 getenv() 函数来访问所有环境变量的值。HTTP_USER_AGENT 环境变量中包含的信息可用于根据浏览器创建适当的动态内容。

Example

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

NOTE − preg_match() 函数在 PHP Regular expression 会话中讨论。

<?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);
?>

这在我的机器上产生以下结果。根据你使用的计算机,此结果可能有所不同。

它将产生以下结果 −

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

Display Images Randomly

PHP rand() 函数用于生成随机数。此函数可以生成指定范围内内的数。应设置随机数生成器的种子,以防止生成规则的数字模式。这是通过使用 srand() 函数来实现的,该函数指定种子号作为其参数。

Example

以下示例展示了如何每次从四张图片中显示不同的图片 −

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

   switch( $num ) {
      case 1: $image_file = "/php/images/php_image_sample_1.jpg";
         break;

      case 2: $image_file = "/php/images/php_image_sample_2.jpg";
         break;

      case 3: $image_file = "/php/images/php_image_sample_3.jpg";
         break;

      case 4: $image_file = "/php/images/php_image_sample_4.jpg";
         break;
   }
   echo "Random Image : <img src=$image_file />";
?>

它将产生以下结果 −

php image sample 3

Using HTML Forms

处理 HTML 表单和 PHP 时需要注意的最重要一点是 HTML 页面中的任何表单元素都将自动对你的 PHP 脚本可用。

Example

通过将源代码放入 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();
   }
?>
<form action = "<?php <b>$_PHP_SELF</b> ?>" method = "POST">
   Name: <input type = "text" name = "name" />
   Age: <input type = "text" name = "age" />
   <input type = "submit" />
</form>

它将产生以下结果 −

forms
  1. PHP 默认变量 $_PHP_SELF 用于 PHP 脚本名称,当你点击“提交”按钮时,将调用相同的 PHP 脚本,并将产生以下结果 −

  2. method = "POST" 用于向服务器脚本发布用户数据。有两种向服务器脚本发布数据的方法,将在 PHP GET & POST 章节中讨论。

Browser Redirection

PHP header() 函数向浏览器提供原始的 HTTP 标头,可用于将其重定向到其他位置。重定向脚本应位于页面的最顶部,以防页面任何其他部分加载。

目标由 Location: 标头指定为 header() 函数的参数。在调用此函数后,可以使用 exit() 函数来停止解析代码的其余部分。

Example

以下示例演示如何将浏览器请求重定向到另一个网页。通过将源代码放入 test.php 脚本中,尝试此示例。

<?php
   if( $_POST["location"] ) {
      $location = $_POST["location"];
      header( "Location:$location" );

      exit();
   }
?>
<p>Choose a site to visit :</p>
<form action = "<?php <b>$_SERVER['PHP_SELF']</b> ?>" 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>

它将产生以下结果 −

browser redirection