电脑安全

您当前的位置:主页 > 电脑安全 >

PHP生成静态网页的方法-网络编程

来源:[db:来源]标题:   文件    编辑:电脑技术全能网 时间:2019-09-21 18:25

原标题:PHP生成静态网页的方法-网络编程
   PHP天生动态网页的方式  看到许多友人在各个处所发帖问PHP天生动态文章体系的方式,从前曾做过如许一个体系,遂谈些见解,以供列位参考。好了,咱们先回忆一些基础的观点。  一,PHP剧本与静态页面。  PHP剧本是一种效劳器端剧本顺序,可经过嵌入等方式与HTML文件混杂,也能够类,函数封装等情势,以模板的方法对用户恳求停止处置。不管以何种方法,它的基础道理是如许的。由客户端提出恳求,恳求某一页面 -----> WEB效劳器引入指定响应剧本停止处置 -----> 剧本被载入效劳器 -----> 由效劳器指定的PHP剖析器对剧本停止剖析构成HTML言语情势 ----> 将剖析后的HTML语句以包的方法传回给扫瞄器。由此不丢脸出,在页面发送到扫瞄器后,PHP就不存在了,已被转化剖析为HTML语句。客户恳求为一静态文件,现实上并没有真正的文件存在在那边,是PHP剖析而成绝对应的页面,而后发送回扫瞄器。这类页面处置方法被称为“静态页面”。  二,动态页面。  动态页面是指在效劳器端确切存在的仅含HTML以及JS,CSS等客户端运转剧本的页面。它的处置方法是。由客户端提出恳求,恳求某一页面 ----> WEB效劳器确认并载入某一页面 ----> WEB效劳器将该页面以包的情势通报回扫瞄器。由这一进程,咱们对照一下静态页面,便可方现。静态页面需由WEB效劳器的PHP剖析器停止剖析,并且平日还需衔接数据库,停止数据库存取操纵,而后才干构成HTML言语信息包;而动态页面,毋庸剖析,毋庸衔接数据库,间接发送,可大大加重效劳器压力,进步效劳器负载才能,大幅供给页面翻开速率和网站团体翻开速率。但其毛病是,不能静态地对恳求停止处置,效劳器上必需确切存在该文件。  三,模板及模板剖析。  模板即尚未添补内容html文件。比方: temp.html<HTML><TITLE>{title}</TITLE><BODY>thisisa{file}file'stemplets</BODY></HTML>PHP处置: templetest.php<?php$title="http://siyizhu.com测试模板";$file="TwoMaxIntertesttemplet,<br>author:Matrix@Two_Max"; $fp=fopen("temp.html","r");$content=fread($fp,filesize("temp.html"));$content=str_replace("{file}",$file,$content);$content=str_replace("{title}",$title,$content);echo$content;?>模板剖析处置,马上经PHP剧本剖析处置后得出的成果添补(content)进模板的处置进程。平日借助于模板类。现在较风行的模板剖析类有phplib,smarty,fastsmarty等等。模板剖析处置的道理平日为调换。也有些顺序员习气将推断,轮回等处置放进模板文件中,用剖析类处置,典范利用为block观点,简略来讲即为一个轮回处置。由PHP剧本指定轮回次数,怎样轮回代入等,再由模板剖析类详细实行这些操纵。  好了,对照过动态页面与静态页面各自的好坏,当初咱们就来讲说,怎样用PHP天生动态文件。  PHP天生动态页面并不是指PHP的静态剖析,输入HTML页面,而是指用PHP创立HTML页面。同时由于HTML的弗成写性,咱们创立的HTML如有修正,则需删掉从新天生便可。(固然你也能够抉择用正则停止修正,但团体以为那样做倒不如删掉从新天生来得快速,有些得不偿失。)  言归正传。用过PHP文件操纵函数的PHPFANS晓得,PHP中有一个文件操纵函数fopen,即翻开文件。若文件不存在,则实验创立。这等于PHP能够用来创立HTML文件的实践基本。只有用来寄存HTML文件的文件夹有写权限(即权限制义0777),便可创立文件。(针对UNIX体系而言,Win体系毋庸斟酌。)仍以上例为例,若咱们修正最初一句,并指定在test名目下天生一个名为test.html的动态文件:<?php$title="http://siyizhu.com测试模板";$file="TwoMaxIntertesttemplet,<br>author:Matrix@Two_Max"; $fp=fopen("temp.html","r");$content=fread($fp,filesize("temp.html"));$content=str_replace("{file}",$file,$content);$content=str_replace("{title}",$title,$content);//echo$content;$filename="test/test.html";$handle=fopen($filename,"w");//翻开文件指针,创立文件/* 检讨文件能否被创立且可写*/if(!is_writable($filename)){die("文件:".$filename."弗成写,请检讨其属性后重试!");}if(!fwrite($handle,$content)){//将信息写入文件die("天生文件".$filename."失利!");}fclose($handle);//封闭指针die("创立文件".$filename."胜利!");?>现实利用中罕见成绩处理计划参考:  一,文章列表成绩:    在数据库中创立字段,记载文件名,每天生一个文件,将主动天生的文件名存入数据库,关于推举文章,只要指向寄存动态文件的指定文件夹中的该页面便可。应用PHP操纵处置文章列表,存为字符串,天生页面时调换此字符串便可。如,在页面中安排文章列表的表格参加标志{articletable},而在PHP处置文件中:<?php$title="http://siyizhu.com测试模板";$file="TwoMaxIntertesttemplet,<br>author:Matrix@Two_Max";$fp=fopen("temp.html","r");$content=fread($fp,filesize("temp.html"));$content=str_replace("{file}",$file,$content);$content=str_replace("{title}",$title,$content);//天生列表开端$list='';$sql="selectid,title,filenamefromarticle";$query=mysql_query($sql);while($result=mysql_fetch_array($query)){$list.='<ahref='.$root.$result['filename'].'target=_blank>'.$result['title'].'</a><br>';}$content.=str_replace("{articletable}",$list,$content);//天生列表停止//echo$content;$filename="test/test.html";$handle=fopen($filename,"w");//翻开文件指针,创立文件/* 检讨文件能否被创立且可写*/if(!is_writable($filename)){die("文件:".$filename."弗成写,请检讨其属性后重试!");}if(!fwrite($handle,$content)){//将信息写入文件die("天生文件".$filename."失利!");}fclose($handle);//封闭指针die("创立文件".$filename."胜利!");?>二,分页成绩。  如咱们指定分页时,每页20篇。某子频道列表内文章经数据库查问为45条,则,起首咱们经过查问失掉以下参数:1,总页数;2,每页篇数。第二步,for($i=0;$i<allpages;$i++),页面元素猎取,剖析,文章天生,都在此轮回中履行。差别的是,die("创立文件".$filename."胜利!";这句去掉,放到轮回后的表现,由于该语句将中断顺序履行。例:<?php$fp=fopen("temp.html","r");$content=fread($fp,filesize("temp.html"));$onepage='20';$sql="selectidfromarticlewherechannel='$channelid'";$query=mysql_query($sql);$num=mysql_num_rows($query);$allpages=ceil($num/$onepage);for($i=0;$i<$allpages;$i++){if($i==0){$indexpath="index.html";}else{$indexpath="index_".$i."html";}$start=$i*$onepage;$list='';$sql_for_page="selectname,filename,titlefromarticlewherechannel='$channelid'limit$start,$onepage";$query_for_page=mysql_query($sql_for_page);while($result=$query_for_page){$list.='<ahref='.$root.$result['filename'].'target=_blank>'.$title.'</a><br>';}$content=str_replace("{articletable}",$list,$content);if(is_file($indexpath)){@unlink($indexpath);//若文件已存在,则删除}$handle=fopen($indexpath,"w");//翻开文件指针,创立文件/* 检讨文件能否被创立且可写*/if(!is_writable($indexpath)){echo"文件:".$indexpath."弗成写,请检讨其属性后重试!";//修正为echo}if(!fwrite($handle,$content)){//将信息写入文件echo"天生文件".$indexpath."失利!";//修正为echo}fclose($handle);//封闭指针}fclose($fp);die("天生分页文件实现,如天生不完整,请检讨文件权限体系后从新天生!");?>大抵思绪如斯,此中如别的数据天生,数据输出输入检讨,分页内容指向等可酌情在页面中参加。  在现实文章体系处置进程傍边,另有很多成绩有待斟酌,与静态页面差别之处,需留神的处所另有许多。但大抵思绪等于如斯,别的方面可举一反三而得。