PHP - Web 概念



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

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

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

PHP Web Concepts

如何在网页上添加动态内容?

要在网页上添加动态内容,有两种可能性。

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

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

示例

在以下脚本中,嵌入在 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 可以拦截和处理来自 HTML 表单的数据。这允许您从用户那里收集信息。下一章讨论 PHP 的表单处理。

PHP 可用于与 MySQL 和 PostgreSQL 等数据库交互。这允许您存储和检索数据库中的数据,并动态填充网页或为 Web 应用程序提供支持。PHP 包含用于数据库处理的 mysql、mysqli 和 PDO 扩展。

PHP 可以使用 HTTP GET 和 POST 方法处理从客户端接收的数据。我们将在后面的章节中详细讨论 PHP 如何处理 GET/POST 方法。

HTTP 是一种无状态协议。但是,它允许分别在服务器和客户端上维护会话和 Cookie。PHP 可用于创建和管理会话和 Cookie。会话允许您在用户浏览网站时跟踪各个用户,而 Cookie 允许您在用户的计算机上存储信息以供以后使用。在随后的章节中,我们将学习 PHP 如何处理会话和 Cookie。

PHP 可用于将文件上传到您的 Web 服务器。这允许您创建允许用户上传文件(例如图像、视频或文档)的 Web 应用程序。

您可以使用 PHP 为您的网站创建登录页面。当用户输入用户名和密码时,PHP 可以检查数据库以查看用户是否有效。如果用户有效,PHP 可以登录用户并将其重定向到网站的主页。

识别浏览器和平台

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

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

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

示例

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

注意 - 函数 preg_match() 在PHP 正则表达式 部分中进行了讨论。

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

随机显示图像

PHP rand() 函数用于生成随机数。此函数可以在给定范围内生成数字。随机数生成器应进行播种以防止生成规则的数字模式。这是使用srand() 函数实现的,该函数将其参数指定为种子数。

示例

以下示例演示了如何从四张图像中每次显示不同的图像 -

<?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 />";
?>

它将产生以下结果 -

Display Image Randomly

使用 HTML 表单

在处理 HTML 表单和 PHP 时需要注意的最重要的事情是,HTML 页面中的任何表单元素都将自动可用于您的 PHP 脚本。

示例

通过将源代码放在 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
  • PHP 默认变量$_PHP_SELF 用于 PHP 脚本名称,当您单击“提交”按钮时,将调用相同的 PHP 脚本并产生以下结果 -

  • method = "POST" 用于将用户数据发布到服务器脚本。将数据发布到服务器脚本有两种方法,这将在PHP GET 和 POST 章节中讨论。

浏览器重定向

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

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

示例

以下示例演示了如何将浏览器请求重定向到另一个网页。通过将源代码放在 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 = "https://tutorialspoint.com">
         Tutorialspoint.com
      </option>
         
      <option value = "http://www.google.com">
         Google Search Page
      </option>
         
   </select>
   <input type = "submit" />
</form>

它将产生以下结果 -

Browser Redirection
广告
© . All rights reserved.