简单解析PHP程序的运行流程,PHP开发规范手册之
分类:www.澳门新萄京赌场

PHP验证类

一直想了解Web编程的技术。PHP是进行Web编程重要的一种语言,书上总是说,PHP是用于服务器端的编程语言。但是,实在不能理解它是怎么用于服务器端编程,如何被运行。也看过一些PHP的教程,大多是介绍语法,却没有给出前面的问题解答。最近东拼西凑的看了一些东西,终于对PHP如何运行有了一些了解。

一直想了解Web编程的技术。PHP是进行Web编程重要的一种语言,书上总是说,PHP是用于服务器端的编程语言。但是,实在不能理解它是怎么用于服务器端编程,如何被运行。也看过一些PHP的教程,大多是介绍语法,却没有给出前面的问题解答。最近东拼西凑的看了一些东西,终于对PHP如何运行有了一些了解。

涉及多个方面,比如PHP代码规范、PHP文件命名规范、网站开发流程、网站安全与维护等。
作为PHP开发规范的开篇,我从一个纯PHP开发者的角度来说说我所认为的PHP代码规范,主要从PHP目录框架结构、PHP代码书写规范、PHP文件命名规范三个角度来阐述,希望对PHP入门学习者有所帮助。
合理建设PHP目录框架结构
  我们知道在使用PHP进行网站开发之前,我们需要建设网站的目录结构,网站目录框架结构设计得合理规范,不但有利于网站开发,而且对SEO,网站推广都有好处。
  一般最基础的PHP网站结构涉及图片、CSS文件、JS文件、第三方组件、管理后台等内容,相对应的,基础的PHP目录框架结构也涉及这些内容,这些目录命名时也有规范,比如
  图片目录:images或者pic
  CSS目录:css
  JS目录:js
  第三方组件目录:libs或者include,下一级目录可以根据具体的组件名定义目录名
  管理目录:一般都是admin,单位了安全起见,你可以另起一个目录名或者对admin目录设置密码保护。如何对访问目录设置密码保护?
  特别提醒:对于网站的框架目录结构,事先要做好规划,为了对搜索引擎友好便于网站推广,建议目录结构层次不要太深,二三级目录结构就可以了。
  另外如果你采用模板,可以创建模板目录,比如将目录命名为tpl,如果使用第三方模板引擎,比如smarty,你可以根据需要自行决定是否要另设目录。PHP基础教程:Smarty安装教程
  对于中等规模的网站,你也可以根据网站功能划分网站目录框架结构,比如按照频道等。
  PHP文件命名规范
  良好的PHP文件命名规范也是PHP开发规范的要素,有助于记忆,便于管理,PHP网站程序文件的命名也有一定的规则,比如
  PHP网站首页文件命名规范:index.php或index.html
  CSS文件命名规范:主CSS文件命名为style.css,另外你也可以针对具体的模块或者频道命名,比如用于用户的CSS文件,可以定义为user_style.css或者u_style.css
  JS文件命名规范:主JS文件命名为main.js或major.js,其他的JS文件命名,你可以根据具体的页面或者特定的对象命名,比如首页JS文件可以命名为index.js,服务于用户登录的JS文件可以命名为user_login.js等。
  网站配置文件命名规范:config.php或default_config.php等
  文件命名特别提醒:在对PHP文件进行命名时考虑到可移植性,一律请使用小写命名,另外与网站目录名命名一样,文件命名时可以采用两种方式,一种可以使用拼音命名具体的文件,一种可以使用简单明了的英语单词命名文件,切勿随便命名,导致今后维护混乱。
  PHP代码书写规范
  良好的PHP代码规范,有助于PHP入门学习者从你写的PHP代码中受益,也有助于你今后的代码维护。
  1、对于所写的PHP代码,添加必要的代码注释,同时代码注释要规范,更多基础PHP代码书写规范,请参考PHP基本语法教程
  2、保持良好的PHP代码书写规范,合理使用缩进,保持代码美观。
  3、使用赋值符时变量名、赋值符、值之间以空格分隔,即

比较好的一些帖子:

【代码审计】PHP代码审计:

技术专题-PHP代码审计:

PHP代码审计学习总结:

关于PHP代码审计和漏洞挖掘的一点思考:

【摘记】静态分析工具大集合--------------之PHP

DesignPatternDetector[OSS] – 在PHP代码中检测设计模式

deptrac[OSS] – 在软件层之间执行依赖规则

exakat[OSS] – PHP自动化代码审查引擎

GrumPHP[OSS] – 检测每次提交的代码

phan[OSS] – 来自etsy的现代化静态分析器

php7cc[OSS] – PHP 7 兼容性检查器

php7mar[OSS] – 帮助开发者快速将代码移植到PHP 7

phpcpd[OSS] – 针对PHP代码的复制/粘贴检测工具.

PHP_CodeSniffer[OSS] – 检测违反定义的编码标准

phpdcd[OSS] – 针对PHP代码的无作用代码检测工具

PhpDependencyAnalysis[OSS] – 为项目创建一个依赖关系图标

Php Inspections (EA Extended)[OSS] – PHP静态代码分析工具

phpsa[OSS] – PHP静态分析工具

PHPMD[OSS] – 在你的代码中寻找可能出现的bug

PhpMetrics[OSS] – 预测代码的复杂性度量

PHPQA[OSS] – 一款用于运行QA工具(phploc, phpcpd, phpcs, pdepend, phpmd, phpmetrics)的工具

PHP Refactoring Browser[OSS] – 重构助手

PHP-Token-Reflection[OSS] – 函数库模拟PHP内部反射

PHP-Parser[OSS] – PHP写的一款PHP解析器

RIPS[OSS] – 一款用于PHP脚本漏洞的静态源代码分析工具

Tuli[OSS] – 静态分析引擎

[PHP]代码

HTTP协议与PHP脚本的触发

HTTP是一种基于Request/Response的协议,是支持Web运行的协议基础。HTTP的客户端发送Request
到服务器端,服务器端返回Response。Request中包含客户端需要访问的页面的文件名。服务器端返回该文件名指向的网页。如果没有使用PHP、JavaScript等,HTTP协议传输只能是静态的HTML文件。也就是,HTML文件不会受到用户行为的影响,内容一直保持不变。

图1 HTTP协议

如果要实现动态网页,就需要使用PHP或JavaScript。PHP是用于服务器端的编程语言,JavaScript是多用于客户端的编程语言。

PHP代码是在服务器端被执行的。用户访问一个包含PHP代码的网页时,发送Request到服务器,其中包含网页的文件名。服务器收到Request后,找到文件名指向的文件,发现其中嵌有PHP代码,会调用PHP解释器处理该文件,然后将处理后的结果整理到Response,发送到客户端。PHP代码可以与服务器端的数据库或其他资源进行交互,或者根据用户的操作产生不同的页面。

因此,PHP脚本的触发是在服务器收到客户端的Request。收到一个Request后,服务器触发一个PHP脚本;处理完脚本后,返回结果到客户端,等待下一个Request。当收到下一个Request后,服务器触发另一个(或同一个)PHP脚本。两次PHP脚本的运行是相互独立的,第二次脚本的运行几乎不受前一次脚本运行的影响。

JavaScript代码一般是在客户端被执行的,即被浏览器所处理。客户端从服务器端获取的是JavaScript代码,而不是代码被执行后的结果,然后调用解释器执行该代码。

HTTP协议与PHP脚本的触发 HTTP是一种基于Request/Response的协议,是支持Web运行的协议基础。HTTP的客户端发送Request
到服务器端,服务器端返回Response。Request中包含客户端需要访问的页面的文件名。服务器端返回该文件名指向的网页。如果没有使用PHP、JavaScript等,HTTP协议传输只能是静态的HTML文件。也就是,HTML文件不会受到用户行为的影响,内容一直保持不变。

复制代码 代码如下:

<?php
class checkcode
{
   //图像句柄
   private $img;
   //画布宽
   public $width=85;
   //画布搞
   public $height=25;
   //背景颜色
   public $bg_color = "#DCDCDC";
   //验证码
   public $code;
   //验证码库
   public $code_str = "sadhadh1ui2y9822ur2r9283r9rqdadqe12423reffqadfja09sdf0rpafashdfqwer98fqortFP89EDFIOQHFWEFTrgwfOGUsgdfKHAEFUHuqGR";
   //验证码长度
   public $code_len = 4;
   //验证码字体
   public $font;
   //字体大小
   public $font_size = 16;
   //字体颜色
   public $font_color = "#ffffff";

   /*
   * 构造函数
   */
   public function __construct()
   {
      $this->font = "font".DIRECTORY_SEPARATOR."arial.ttf";
   }
   /*
   *验证码生成函数
   */
   private function create_code()
   {
      $code=" ";
      for($i=0;$i<$this->code_len;$i  )
      {
         $code.=$this->code_str[mt_rand(0,strlen($this->code_str)-1)];
      }
       $this->code = $code;
   }
   /*
   *得到验证码
   */
   public function getcode()
   {
      return strtoupper($this->code);
   }
   /*
   * 创建图画句柄
   */
   public function getimg()
   {
      $w = $this->width;
      $h = $this->height;
      $img = imagecreatetruecolor($w,$h);
      $bg_color = imagecolorallocate($img,hexdec(substr($bg_color,1,2)),hexdec(substr($img,3,2)),hexdec(substr($img,5,2)));
      imagefill($img,0,0,$bg_color);
      $this->img = $img;
      $this->create_font();
      $this->create_pix();
      $this->show_code();
   }
   /*
   *创建字体
   */
   public function create_font()
   {
       $this->create_code();
        $color= $this->font_color;
        $font_color = imagecolorallocate($this->img, hexdec(substr($color, 1,2)), hexdec(substr($color, 3,2)), hexdec(substr($color, 5,2)));
        $x = $this->width/$this->code_len;
        for($i=0;$i<$this->code_len;$i  ){
          imagettftext($this->img, $this->font_size, mt_rand(-30, 30), $x*$i mt_rand(3,6), mt_rand($this->height/1.2,$this->height-5), $font_color, $this->font, $this->code[$i]);
        }
      $this->font_color = $font_color;
   }
   /*
   *写人干扰
   */
   private function create_pix()
   {
     $pix_color = $this->font_color;
     for($i=0;$i<100;$i  )
      {
        imagesetpixel($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),$pix_color);
     }
     for($j=0;$j<2;$j  )
     {
        imagesetthickness($this->img,mt_rand(2,4));
        imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$pix_color);
     }
   }
   /*
   *显示代码
   */
    private function show_code(){
        header("Content-type:image/png");
        imagepng($this->img);
        imagedestroy($this->img);
    }
}
?>

PHP的代码块

PHP代码是可以嵌入到HTML文件中的,经常可以在HTML文件中看到散落在各处的PHP代码块。我也一直困惑在同一个HMTL文件中,不同的PHP代码块之间是怎样的关系。原来PHP是会忽略两个PHP代码块之间HTML代码的。

<head>
    <title>Test PHP Multiple Blocks</title>
</head>
<body>
    <p>This is HTML code.</p>

    <?php
        $var = 1;
        echo "<p>This is PHP code block 1. <br/> $var=$var </p>";
    ?>

    <p>This is HTML code too.</p>

    <?php
        $var  = 1;
        echo "<p>This is PHP code block 2. <br/> $var=$var</p>" 
    ?>

</body>

代码中有两个PHP代码块,它们被HTML代码隔开了。第1个PHP代码块声明了1个变量$var;第2个代码块引用$var,进行改变了它的值。用PHP执行上述代码,得到的输出如下。

<head>
    <title>Test PHP Multiple Blocks</title>
</head>
<body>
    <p>This is HTML code.</p>

    <p>This is PHP code block 1. <br/> $var=1 </p>
    <p>This is HTML code too.</p>

    <p>This is PHP code block 2. <br/> $var=2</p>
</body>

第2个代码块是可以引用$var的。虽然被HTML代码隔开了,但是两段代码的执行完全忽略了HTML部分。PHP的输出与下面没有被HTML隔开的PHP代码是一样的,前者只是在PHP输出结果之间插入了相应的HTML代码。

    <?php
        $var = 1;
        echo "<p>This is PHP code block 1. <br/> $var=$var </p>";

        $var  = 1;
        echo "<p>This is PHP code block 2. <br/> $var=$var</p>" 
    ?>

图片 1

<?
$leapsoulcn = "欢迎访问PHP网站教程网,此节主要介绍PHP开发规范之PHP代码规范";
?>

[PHP]代码

参考文献

  1. Learn HTTP
  2. Learning PHP, MySQL, and JavaScript
  3. PHP Manual

如果要实现动态网页,就需要使用PHP或JavaScript。PHP是用于服务器端的编程语言,JavaScript是多用于客户端的编程语言。

4、在书写if、switch、函数代码时,务必保持大括号匹配,即

<?php
class checkcode
{
   //图像句柄
   private $img;
   //画布宽
   public $width=85;
   //画布搞
   public $height=25;
   //背景颜色
   public $bg_color = "#DCDCDC";
   //验证码
   public $code;
   //验证码库
   public $code_str = "sadhadh1ui2y9822ur2r9283r9rqdadqe12423reffqadfja09sdf0rpafashdfqwer98fqortFP89EDFIOQHFWEFTrgwfOGUsgdfKHAEFUHuqGR";
   //验证码长度
   public $code_len = 4;
   //验证码字体
   public $font;
   //字体大小
   public $font_size = 16;
   //字体颜色
   public $font_color = "#ffffff";

   /*
   * 构造函数
   */
   public function __construct()
   {
      $this->font = "font".DIRECTORY_SEPARATOR."arial.ttf";
   }
   /*
   *验证码生成函数
   */
   private function create_code()
   {
      $code=" ";
      for($i=0;$i<$this->code_len;$i  )
      {
         $code.=$this->code_str[mt_rand(0,strlen($this->code_str)-1)];
      }
       $this->code = $code;
   }
   /*
   *得到验证码
   */
   public function getcode()
   {
      return strtoupper($this->code);
   }
   /*
   * 创建图画句柄
   */
   public function getimg()
   {
      $w = $this->width;
      $h = $this->height;
      $img = imagecreatetruecolor($w,$h);
      $bg_color = imagecolorallocate($img,hexdec(substr($bg_color,1,2)),hexdec(substr($img,3,2)),hexdec(substr($img,5,2)));
      imagefill($img,0,0,$bg_color);
      $this->img = $img;
      $this->create_font();
      $this->create_pix();
      $this->show_code();
   }
   /*
   *创建字体
   */
   public function create_font()
   {
       $this->create_code();
        $color= $this->font_color;
        $font_color = imagecolorallocate($this->img, hexdec(substr($color, 1,2)), hexdec(substr($color, 3,2)), hexdec(substr($color, 5,2)));
        $x = $this->width/$this->code_len;
        for($i=0;$i<$this->code_len;$i  ){
          imagettftext($this->img, $this->font_size, mt_rand(-30, 30), $x*$i mt_rand(3,6), mt_rand($this->height/1.2,$this->height-5), $font_color, $this->font, $this->code[$i]);
        }
      $this->font_color = $font_color;
   }
   /*
   *写人干扰
   */
   private function create_pix()
   {
     $pix_color = $this->font_color;
     for($i=0;$i<100;$i  )
      {
        imagesetpixel($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),$pix_color);
     }
     for($j=0;$j<2;$j  )
     {
        imagesetthickness($this->img,mt_rand(2,4));
        imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$pix_color);
     }
   }
   /*
   *显示代码
   */
    private function show_code(){
        header("Content-type:image/png");
        imagepng($this->img);
        imagedestroy($this->img);
    }
}
?>

PHP代码是在服务器端被执行的。用户访问一个包含PHP代码的网页时,发送Request到服务器,其中包含网页的文件名。服务器收到Request后,找到文件名指向的文件,发现其中嵌有PHP代码,会调用PHP解释器处理该文件,然后将处理后的结果整理到Response,发送到客户端。PHP代码可以与服务器端的数据库或其他资源进行交互,或者根据用户的操作产生不同的页面。

复制代码 代码如下:

因此,PHP脚本的触发是在服务器收到客户端的Request。收到一个Request后,服务器触发一个PHP脚本;处理完脚本后,返回结果到客户端,等待下一个Request。当收到下一个Request后,服务器触发另一个(或同一个)PHP脚本。两次PHP脚本的运行是相互独立的,第二次脚本的运行几乎不受前一次脚本运行的影响。

<?
if(){
......
}
?>

JavaScript代码一般是在客户端被执行的,即被浏览器所处理。客户端从服务器端获取的是JavaScript代码,而不是代码被执行后的结果,然后调用解释器执行该代码。

或者

PHP的代码块 PHP代码是可以嵌入到HTML文件中的,经常可以在HTML文件中看到散落在各处的PHP代码块。我也一直困惑在同一个HMTL文件中,不同的PHP代码块之间是怎样的关系。原来PHP是会忽略两个PHP代码块之间HTML代码的。

复制代码 代码如下:

<head>
  <title>Test PHP Multiple Blocks</title>
</head>
<body>
  <p>This is HTML code.</p>

  <?php
    $var = 1;
    echo "<p>This is PHP code block 1. <br/> $var=$var </p>";
  ?>

  <p>This is HTML code too.</p>

  <?php
    $var  = 1;
    echo "<p>This is PHP code block 2. <br/> $var=$var</p>" 
  ?>

</body>

<?
if()
{
......
}
?>

代码中有两个PHP代码块,它们被HTML代码隔开了。第1个PHP代码块声明了1个变量$var;第2个代码块引用$var,进行改变了它的值。用PHP执行上述代码,得到的输出如下。

5、命名变量名或者函数名时注意代码书写规范,可以使用拼音、英语单词、缩写等形式,推荐以英语单词作为PHP代码命名规范,对于两个单词以上的以下划线连接或者其中一个单词首字母大写的形式,即

<head>
  <title>Test PHP Multiple Blocks</title>
</head>
<body>
  <p>This is HTML code.</p>

  <p>This is PHP code block 1. <br/> $var=1 </p>
  <p>This is HTML code too.</p>

  <p>This is PHP code block 2. <br/> $var=2</p>
</body>

复制代码 代码如下:

第2个代码块是可以引用$var的。虽然被HTML代码隔开了,但是两段代码的执行完全忽略了HTML部分。PHP的输出与下面没有被HTML隔开的PHP代码是一样的,前者只是在PHP输出结果之间插入了相应的HTML代码。

<?
$web_name = "PHP网站开发教程网";
$webUrl = "//www.jb51.net";
function userLogin()
{
}
?>

  <?php
    $var = 1;
    echo "<p>This is PHP code block 1. <br/> $var=$var </p>";

    $var  = 1;
    echo "<p>This is PHP code block 2. <br/> $var=$var</p>" 
  ?>

以上就是基础的PHP代码规范,对于PHP初学者学习PHP会有所帮助。养成良好的PHP代码规范会让开发者受益一生。
  至此,PHP开发规范手册之PHP代码规范就介绍完了,良好的网站框架目录构建能力、PHP文件命名规范和PHP代码书写规范需要自己在不断的开发中积累和养成,同时这些开发规范也有助于伙伴之间的合作,有助于PHP入门学习者学习你的PHP代码。

您可能感兴趣的文章:

  • php运行出现Call to undefined function curl_init()的解决方法
  • Windows下Apache MySQL PHP运行环境的安装图文方法
  • PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
  • 在命令行下运行PHP脚本[带参数]的方法
  • CentOS 5.5使用yum来安装LAMP(php运行环境)
  • Win2012 R2 IIS8.5 PHP(FastCGI) MySQL运行环境搭建教程
  • IIS 7.x FastCGI 运行 PHP的配置方法
  • 简单解析PHP程序的运行流程,PHP开发规范手册之PHP代码规范详解。Window下PHP三种运行方式图文详解
  • win2008 php运行环境搭建图文教程
  • Windows server 2008搭建php运行环境图文详解(php5.3)
  • cmd下运行php脚本

您可能感兴趣的文章:

  • thinkPHP5.0框架开发规范简介
  • 浅析php与数据库代码开发规范
  • 浅析PHP开发规范

本文由澳门新萄京发布于www.澳门新萄京赌场,转载请注明出处:简单解析PHP程序的运行流程,PHP开发规范手册之

上一篇:澳门新萄京:Ruby 使用 Net::Telnet 连接到 TCP 服务器 下一篇:没有了
猜你喜欢
热门排行
精彩图文