PHP生成静态页面类

 更新时间:2016年11月25日 16:10  点击:2110

<?php
date_default_timezone_set( "Asia/Shanghai");

class TCreateHTML{
var $HTemplate; //模板的文件
var $FileName; //新文件名称
var $HTFilePath;//产生文件的路径
var $ModiString;
var $ReTextArray;//替换信息数组
var $strText=""; //文本内容
var $CrType="1"; //产生文件名称的类型 默认为日期+4位 随机数
var $errorStr; //错误信息!

//********接口函数
//构造模板
function TCreateHTML(){}

//创建文件
function CreatrHtml()
{
 //检查模板路径是否合法
 if(!$this->CheckPath($this->HTemplate,"0"))
 {
  return false;
 }

 //检查新生文件路径是否合法
 if(!$this->CheckPath($this->HTFilePath,"1"))
 {
  return false;
 }
   
 
 $fp=fopen($this->HTemplate,"r"); //只读打开模板
 $this->strText=fread($fp,filesize($this->HTemplate));//读取模板中内容
    fclose($fp);
 

    //替换文件
 $this->ReplaceText();
 //生成文件名称
 $this->CreateName();

 
 $handle=fopen($this->FileName,"w"); //写入方式打开新闻路径
 fwrite($handle,$this->strText); //把刚才替换的内容写进生成的HTML文件
 fclose($handle);

 return true;
}

function  CheckPath($pStr,$type)
 {
   if($type=="0")
  {
      if(!file_exists($pStr))
   {
     $this->errorStr="文件夹路径有误!";
     return false;
   }
  }else
  {
   $arrPath = explode ("/", $pStr);
   $s_Path="";
            foreach ($arrPath as $tag) {
    if($s_Path=="")
    {
        $s_Path .= $tag;
    }else
    {
      $s_Path .="/".$tag;
    }




以下是侯捷老师个人陆续收集整理的有关於我所涉猎的领域的术语对照(英中繁简)。
欢迎所有朋友给我意见(任何意见)。谢谢。

新书写作,或发表文章时,我会以此表为叁考。

本表所列,并不表示我在写译书籍时一定会采用表内的中文术语。
我也可能采用英文术语。


一群性质相近同的「东西」,如果译名一贯,阅读的感觉就很好。
一贯性的术语,扩充性高,延伸性高,系统化高。
● 我喜欢「式」:
constructor 建构式
declaration 宣告式
definition  定义式
destructor  解构式
expression  算式(运算式)
function    函式
pattern     范式、模式、样式
program     程式
signature   标记式(签名式/署名式)

● 我喜欢「件」:(这是个弹性非常大的可组合字)
assembly (装)配件
component 组件
construct 构件
control   控件
event     事件
hardware  硬件
object    物件
part      零件、部件
singleton 单件
software  软件
work      工件、机件

● 我喜欢「器」:
adapter   配接器
allocator 配置器
compiler  编译器
container 容器
iterator  迭代器
linker    连结器
listener  监听器
interpreter 直译器
translator 转译器/翻译器

● 我喜欢「别」:
class 类别
type  型别

● 我喜欢「化」:
generalized    泛化
specialized    特化
overloaded     多载化(重载)

● 我喜欢「型」:
polymorphism  多型
genericity    泛型

● 我喜欢「程」:
process     行程/进程(大陆用语)
thread      绪程/线程(大陆用语)
programming 编程


●英中繁简编程术语对照

英文                    繁体译词
                      (有些是侯捷个人喜好,普及与否难说)      大陆惯用术语
---------------------------------------------------------------------------------------
#define                 定义                              &nb


在这里,我节录了一些关于PHP和Python比较的文章和讨论,让我们能从另外一个 角度来看待PHP的优点和缺点。
同样作为一种脚本语言,底层同样是由C语言来开发的,Python是OO的,现在PHP也OO了。Python是多用途的(可用于桌面应用和web应用),PHP是专长于web应用的。当PHP还在苦恼如何整合进去大程序时,Python早就可与Java,。NET相连了。。。。

    * Python的可读性,可维护性比PHP好;
    * PHP的发展存在一个向后兼容性的问题,Python不存在;
    * PHP的入门门槛底,Python比较高(其实Python语言是挺简单的,难在要有OO的思想,PHP在OO化后,面临同样的问题);
    * 到目前为止,支持PHP的服务器多,支持Python的少 (随着硬件成本的降低,估计状况很快会改变)。


曾经有人说过,PHP的底层架构不适合用OO,那Python为什么OO用的那么好?
曾经有人说过,PHP用OO速度慢,那用Python的人,为什么并不觉得慢?

PHP用OO个人觉得是件好事,但看过Python以后,感觉PHP现在实现OO的功能与方法比Python还多,是好还是坏?作为一种脚本语言是否能很好的承载得起呢?

感觉PHP有点像当年的C++,既要面向OO,又要兼容C,搞得倍复杂。而Python有点像当年的Java,从开始就是面向OO的,并立足于脚本语言,对OO的功能与方法作了相当的简化,做自己力所能做的事情。

PHP以简单易学而名,现在为了企业化应用,如果搞得像C++一样既要顾及兼容性,又几乎全盘copy Java的OO功能,难免会变得复杂,之后会不会被其他语言所代替呢?

他山之石,可以攻玉。我们是否应该学习一下Python,从中得到一些启发呢?

现在当大家都一致看好PHP时,结合种种迹绍,我似乎感到了背后的一丝寒风,。。。希望只是己人忧天。

从PHP发展的角度,为今之计,我想最好的办法,就是大力普及推广PHP在中国的应用,先占领市场再说,因此写了个建议 (连接),可惜看来也是胎死腹中了。。。

==========================================================================
第一部分:介绍Python
What is Python?

(PYTHON的中文解释 :http://www.okpython.com/bbs/thread-73-1-1.html)

Python is a programming language that is freely available and that makes solving a computer problem almost as easy as writing out one''s thoughts about the solution. It can be written once and run on almost any computer without needing to change the program. In this section, you can learn more about what Python is, how it is used, and how it compares to other programming languages. Use the menu below to browse the various sections of this article.
Python was first created by Guido von Rossum in 1990 and was named after the Brit-com Monty Python''s Flying Circus. It has since been developed by a large team of volunteers and is freely available from the Python Software Foundation. The most recent version of Python, 2.5, was released in September, 2006.

Python is now found in many incarnations. At the website of the Python Software Foundation, Python is written in C. Other incarnations exist. A Java-based version of Python exists in Jython and may be used to work with Java c


最近在看.net的新功能Linq,第一感觉,功能非常实用.
数组,字符串都可以用我们熟悉的 SQL 方式来查询,太方便啦!

就想看看PHP在这方面有没有这样的类库.

不查不知道,一查吓一跳,还真的有类似的类库,命名为PHPLinq.

PHPLinq的首页:
http://www.codeplex.com/PHPLinq

Examples

Examples can be found in the test package in the latest release.

A basic example

Let''s say we have an array of strings and want to select only the strings whose length is < 5. The PHPLinq way of achieving this would be the following:

// Create data source
$names = array("John", "Peter", "Joe", "Patrick", "Donald", "Eric");

$result = from(''$name'')->in($names)
->where(''$name => strlen($name) < 5'')
->select(''$name'');


Feels familiar to SQL? Yes indeed! No more writing a loop over this array, checking the string''s length, and adding it to a temporary variable.

You may have noticed something strange... What''s that $name => strlen($name) < 5 doing? This piece of code is compiled to an anonymous function or Lambda expression under the covers. This function accepts a parameter $name, and returns a boolean value based on the expression strlen($name) < 5.

An advanced example

There are lots of other examples available in the PHPLinq download, but here''s an advanced one... Let''s say we have an array of Employee objects. This array should be sorted by Employee name, then Employee age. We want only Employees whose name has a length of 4 characters. Next thing: we do not want an Employee instance in our result. Instead, the returning array should contain objects containing an e-mail address and a domain name.

First of all, let''s define our data source:

class Employee {
public $Name;
public $Email;
public $Age;

public function __construct($name, $email, $age) {
$this->Name = $name;
$this->Email = $email;
$this->Age = $age;



在现在各种黑客横行的时候,如何实现自己php代码安全,保证程序和服务器的安全是一个很重要的问题,我随便看了下关于php安全的资料,并不是很多,至少比asp少多了,呵呵,于是就想写点东西,来防止这些可能出现的情况。这里没有太深的技术含量,我只是比较简单的谈了谈。(以下操作如无具体说明,都是基于PHP+MySQL+Apache的情况)

先来说说安全问题,我们首先看一下两篇文章:
http://www.xfocus.net/articles/200107/227.html   
http://www.xfocus.net/articles/200107/228.html

上面文章是安全焦点上的关于PHP安全的文章,基本上比较全面的介绍了关于PHP的一些安全问题。

在PHP编码的时候,如果考虑到一些比较基本的安全问题,首先一点:
1. 初始化你的变量

为什么这么说呢?我们看下面的代码:
if ($admin)
{
    echo ''登陆成功!'';
    include(''admin.php'');
}
else
{
    echo ''你不是管理员,无法进行管理!'';
}

好,我们看上面的代码好像是能正常运行,没有问题,那么加入我提交一个非法的参数过去呢,那么效果会如何呢?比如我们的这个页是 http://www.traget.com/login.php,那么我们提交:http://www.target.com/login.php?admin=1,呵呵,你想一些,我们是不是直接就是管理员了,直接进行管理。
当然,可能我们不会犯这么简单错的错误,那么一些很隐秘的错误也可能导致这个问题,比如最近暴出来的phpwind 1.3.6论坛有个漏洞,导致能够直接拿到管理员权限,就是因为有个$skin变量没有初始化,导致了后面一系列问题。

那么我们如何避免上面的问题呢?首先,从php.ini入手,把php.ini里面的register_global = off,就是不是所有的注册变量为全局,那么就能避免了。但是,我们不是服务器管理员,只能从代码上改进了,那么我们如何改进上面的代码呢?我们改写如下:
$admin = 0;      // 初始化变量
if ($_POST[''admin_user''] && $_POST[''admin_pass''])
{
    // 判断提交的管理员用户名和密码是不是对的相应的处理代码
    // ...
    $admin = 1;
}
else
{
    $admin = 0;
}

if ($admin)
{
    echo ''登陆成功!'';
    include(''admin.php'');
}
else
{
    echo ''你不是管理员,无法进行管理!'';
}

那么这时候你再提交 http://www.target.com/login.php?admin=1 就不好使了,因为我们在一开始就把变量初始化为 $admin = 0 了,那么你就无法通过这个漏洞获取管理员权限。


2. 防止SQL Injection (sql注射)

SQL 注射应该是目前程序危害最大的了,包括最早从asp到php,基本上都是国内这两年流行的技术,基本原理就是通过对提交变量的不过滤形成注入点然后使恶意用户能够提交一些sql查询语句,导致重要数据被窃取、数据丢失或者损坏,或者被入侵到后台管理。
基本原理我就不说了,我们看看下面两篇文章就很明白了:
http://www.4ngel.net/article/36.htm
http://www.4ngel.net/article/30.htm

那么我们既然了解了基本的注射入侵的方式,那么我们如何去防范呢?这个就应该我们从代码去入手了。

我们知道Web上提交数据有两种方式,一种是get、一种是post,那么很多常见的sql注射就是从get方式入手的,而且注射的语句里面一定是包含一些sql语句的,因为没有sql语句,那么如何进行,sql语句有四大句:
select 、update、delete、insert,那么我们如果在我们提交的数据中进行过滤是不是能够避免这些问题呢
[!--infotagslink--]

相关文章

  • php二维码生成

    本文介绍两种使用 php 生成二维码的方法。 (1)利用google生成二维码的开放接口,代码如下: /** * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param strin...2015-10-21
  • Java生成随机姓名、性别和年龄的实现示例

    这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
  • C#生成随机数功能示例

    这篇文章主要介绍了C#生成随机数功能,涉及C#数学运算与字符串操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • php生成唯一数字id的方法汇总

    关于生成唯一数字ID的问题,是不是需要使用rand生成一个随机数,然后去数据库查询是否有这个数呢?感觉这样的话有点费时间,有没有其他方法呢?当然不是,其实有两种方法可以解决。 1. 如果你只用php而不用数据库的话,那时间戳+随...2015-11-24
  • jQuery为动态生成的select元素添加事件的方法

    下面小编就为大家带来一篇jQuery为动态生成的select元素添加事件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-09-01
  • PHP自动生成后台导航网址的最佳方法

    经常制作开发不同的网站的后台,写过很多种不同的后台导航写法。 最终积累了这种最写法,算是最好的吧...2013-09-29
  • js生成随机数的方法实例

    js生成随机数主要用到了内置的Math对象的random()方法。用法如:Math.random()。它返回的是一个 0 ~ 1 之间的随机数。有了这么一个方法,那生成任意随机数就好理解了。比如实际中我们可能会有如下的需要: (1)生成一个 0 - 1...2015-10-21
  • PHP验证码生成与验证例子

    验证码是一个现在WEB2.0中常见的一个功能了,像注册、登录又或者是留言页面,都需要注册码来验证当前操作者的合法性,我们会看到有些网站没有验证码,但那是更高级的验证了,...2016-11-25
  • PHP生成不同颜色、不同大小的tag标签函数

    复制代码 代码如下:function getTagStyle(){ $minFontSize=8; //最小字体大小,可根据需要自行更改 $maxFontSize=18; //最大字体大小,可根据需要自行更改 return 'font-size:'.($minFontSize+lcg_value()*(abs($maxFo...2013-10-04
  • JS生成某个范围的随机数【四种情况详解】

    下面小编就为大家带来一篇JS生成某个范围的随机数【四种情况详解】。小编觉得挺不错的,现在分享给大家,也给大家做个参考,一起跟随小编过来看看吧...2016-04-22
  • php中利用str_pad函数生成数字递增形式的产品编号

    解决办法:$str=”QB”.str_pad(($maxid[0]["max(id)"]+1),5,”0″,STR_PAD_LEFT ); 其中$maxid[0]["max(id)"]+1) 是利用max函数从数据库中找也ID最大的一个值, ID为主键,不会重复。 str_pad() 函数把字符串填充为指...2013-10-04
  • C#中静态的深入理解

    这篇文章详细的介绍了C#中的静态,有需要的朋友可以参考一下...2020-06-25
  • C#生成Word文档代码示例

    这篇文章主要介绍了C#生成Word文档代码示例,本文直接给出代码实例,需要的朋友可以参考下...2020-06-25
  • Vue组件文档生成工具库的方法

    本文主要介绍了Vue组件文档生成工具库的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-11
  • 浅析C#中静态方法和非静态方法的区别

    C#静态方法与非静态方法的区别不仅仅是概念上的,那么他们有什么具体的区别呢?让我们通过本文向大家介绍下C#中静态方法和非静态方法的区别,一起看看吧...2020-06-25
  • PHP简单实现生成txt文件到指定目录的方法

    这篇文章主要介绍了PHP简单实现生成txt文件到指定目录的方法,简单对比分析了PHP中fwrite及file_put_contents等函数的使用方法,需要的朋友可以参考下...2016-04-28
  • 西部数码空间伪静态配置方法图解

    今天在使用西部数码空间时发现里面有很多定义好的伪静态规则了,下面我来给大家介绍一下在后面主机面板中配置使用伪静态功能吧,希望文章对各位会带来帮助。...2016-10-10
  • 史上最简洁C# 生成条形码图片思路及示例分享

    这篇文章主要介绍了史上最简洁C# 生成条形码图片思路及示例分享,需要的朋友可以参考下...2020-06-25
  • 简单入门级php 生成xml文档代码

    $doc = new domdocument('1.0'); // we want a nice output $doc->formatoutput = true; 代码如下 复制代码 $root = $doc->createelement('bo...2016-11-25
  • 解决PHPWord导出生成Word中文乱码问题

    PHPWord是一个可以把相关文件生成word文档的插件了,但由于是老外开发的对于gbk支持不好,所以我们在导出带有中文的word时会出现乱码问题,下面本文就PHPWord中文乱码问题...2016-11-25