用动态网页技术PHP打造个人网站全攻略_PHP教程
推荐:论Web 2.0 时代PHP的地位随着所谓WEB2.0时代来临,程序员从来没有时代象今天那样受人注意,很多程序员对于语言的争论也从来没有象今天这样剧烈,JAVA、C 、PHP、ASP等等,最近又出来一个Ruby,加上Python。无数的FANS
这里和大家交流一下用动态网页技术PHP来架设个人网站的经验。不妥之处,敬请指正!
一 编辑调试环境
win98本地编辑调试,爽不爽?先下一个Omnihttpd Proffesinal V2.06 ,装上就有PHP4beta3可以用了。如果你较懂HTML,推荐用EditPlus,相当好哦!否则只好用DreamWeaver先了。还要连数据库?幸好MySQL还有For WIN32的版本。
二 先来一个计数器
自己的计数器总比外来的好,敝帚自珍嘛!时下介绍的计数器源代码总是那种刷新一下就长,不免有些自欺欺人,呵呵。不过我们还是先分析一下它的工作原理吧,下面是一个简单计数器的示例:
以下为引用的内容: <php $countfile="count.txt"; if(file_exists($countfile)) { $fp=fopen($countfile,"r "); $count=fgets($fp,5); $count =1; rewind($fp); fputs($fp,$count,5); fclose($fp); } else { $fp=fopen($countfile,"w"); $count="1"; fputs($fp,$count,5); fclose($fp); }; ?> |
这个计数器有个外号,叫一刷就长^_^。那么,怎么才能使计数器更真实一点呢?PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。一进页面,先检验SESSION中COUNT是否存在并等于你想要的值,不等于则使等于先,然后调用计数过程,会话结束后,就可以对COUNT说:ByeBye了您呐!
但是如果不是PHP4又该怎么办?不知道你还记得cookie否?我们可以假设某人在15分钟以内(或别的时间段内)对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。比较一下,若差别大于十五分钟则计数,否则将时间刷新。(你不会连cookie怎么用都不知道吧?呵呵,推荐一本书《PHP核心编程》,清华版的,查函数还够用,每个函数都有使用示例:-D)
不过,刚才的计数器毫无美观可言,估计你是肯定不满意了,换个图形的吧。做一套0.jpg,1.jpg……9.jpg。刚才不是读入一个字串吗?先查查串长,输入你期望的长度(如5)减去串长(去掉空格后的)个零,然后从头一个一个截数字(其实还是字符),与“.jpg”组合后输出,图形计数器不就出来了吗?
好了,一个个人用的计数器就已经比较完美了.
三 首页新闻发布,让你更新更轻松(上)
每次在首页中增加一条消息,加两句话,就得整个页面都上传一遍,真是不值!于是象蓝风这种懒汉就想了一个一劳永逸的办法,真正的动态实时,远程管理编辑,自动维护功能。也可以用来做虚拟社区的公告板。(如果改吧改吧,就可以把你的新闻中心的新闻在首页自动生成提要了,呵呵。)这么多功能,大家多多原谅,嘿嘿。
先插几句题外话,我们做网站时,是用html中间点缀PHP呢,还是用PHP来生成html?专业的站点可以把一个功能集中在一页,通过这一页调用不同的模块来实现各个子功能(这样客户端是不是就只有一页了呢?我没有试过)。不管怎样,功能模块化的软件复用是高效率开发的一个重要方法(也能节省你的主机空间哦^_^)。
好了,下面我们就一起来把功能模块化吧。初学者请仔细阅读代码,尤其要注意基本函数的用法。高手就可以略过这一段了,呵呵(这么认真干吗?都看得人家不好意思了9-。
以下为引用的内容: <?php /*head.php 为了避免被别人直接键入head.inc下载你的源代码,最好用php做后缀,这样,你的服务器才会先截获它进行处理,呵呵*/ echo "<html><head><title>" echo ""//如果标题常变,可做一个函数。 echo "</title></head>" ?> 这是一个写html头的一功能块。 <?php /*makestr.php 定义一个公用处理文本中超链接的函数,假定文本中链接形式为${http://www.mb5u.com|}*/ function makestr($text) { $str=$text; $a=strstr($s,'$}');//切除在$s中‘${'之前的子串 if($a){ $b=strstr($a,'}'); if($b){ $la=strlen($a);$ls=strlen($s);//取串长 $s=substr($a,0,$ls-$la);//取子串,第二个参数为起点,第三个参数为取字符的个数 $a=substr($a,2);//去掉'${' $lb=strlen($b);$la=strlen($a); $a=substr($a,0,$la-$lb);//取出超链接部分 $b=substr($b,1);//去掉'}' $ta=strstr($a,"|");//寻找是否存在需要做链接的文字 if($ta){ $la=strlen($a);$lt=(strlen($ta); $linktext=substr($a,$la-$lt 1); $a=substr($a,0,$la-$lt); } else{ $linktext=$a; } $s=$s."<a herf="".$a."">.$linktext."</a>.$b;//准备返回字串 } } return($s); } |
三 首页新闻发布,让你更新更轻松(中)
上次我们做了一个文件头(至于文件尾,请大家自己做,假设为tail.php),一个函数的模块,现在,我们来一个基本功能的实现,也就是动态发布啦
以下为引用的内容: <?php include("makestr.php"; include("head.php"); $newspath="/announce/"; //以文本文件存放的新闻文件的目录 $newsfile=array();//准备新闻数组 $hd=dir($newspath); //目录句柄 while($filename=$hd->read()){ //获取全部文件 $s=strtolower($filename); if(strstr($s,".txt")){ //检测最新的修改日期 $lastchanged=fileatime($newspath.$filename); $newsfile[$filename]=$lastchanged; } } arsort($newsfile); //文件按时间排序 //输出文件 for(reset($newsfile);$key=key($newsfile);next($newsfile)) {$fa=file($newspath.$key); $n=count($fa); echo "<p>".date("d.m.Y-H:i:s".$newsfile[$key])."<br>\n"; for($i=0;$i<$n;$i=$i 1){ $s=chop($fa[$i]);//去除空格 $s=htmlspecialchars($s); print $s."</p>\n"; } } $hd->close(); //释放句柄 include("tail.php"); ?> |
这样,将你的新闻文本传上你根目录的annouce子目录下,就可以方便发布新闻了。但真正的方便还不在于这,比如说,当新闻过时的时候,程序能自动删除它,多好。不用ftp,直接在线写下要新发的公告,多方便。好了,且听下回分解。
三 首页新闻发布,让你更新更轻松(下)
上一讲里,我们已经实现了首页新闻发布的基本功能。在这一讲里,我们再给它添砖加瓦,使它的功能更为强大。(一个好用的软件,其实也就是基本功能加上一批附属功能,这些附属功能主要也是图个方便而已,呵呵)
首先,我们再明确一下我们想获得什么方便。我们不希望几十天以前的东西我们忘了删除,结果还作为新闻发布在首页(很丢脸的哦^&^)。如果我们在基本实现中嵌入一段代码,比如说用filectime($filename),那么在UNIX下,我们就可以得到从1970年1月1日起以秒计到最后一次文件被改动的时间(在WINDOWS下返回的是文件生成的日期时间),而从 1970年1月1日起以秒计到现在的秒数可以用$mynow=mktime()来获得,减法,判断,IF >我们期望的时间,嘿嘿,Sorry,unlink($newspath.$filename)……什么?!您问这段代码应该放在哪儿?您说呢,呵呵。
或许,你并不是常在一台机器上上网,当你获得了一条新的新闻后却不在你的爱机旁,怎么办?最理想的莫过于在主页上上传文件咯。你或许有一个页面(Admin?)需要用密码才能进入(假如你还爱惜自己的网站的话,这是有必要的,最好连文件名都不要让别人知道,呵呵)。下面是一段到处可见的文件上载的代码:
以下为引用的内容: <? <? |
这里我们又见到了PHP和HTML结合的一种形式,可以借鉴。文件上载虽然方便,但总给人一种不安全感。一旦泄密,你的服务器的系统安全就受到了威胁,因为上载的文件可能是一些破坏性的执行文件(也就是病毒或黑客程序啦)稳妥的做法是写一个在线编辑的文件,下面是一个示例:
以下为引用的内容: 〈?php function mywritefile($filename,$contents){ if($fp=fopen($filename,"w")){ fwrite($fp,strpslashes($contents)); fclose($fp); return 1; } else {return 0;}; }; //判断表单返回的变量 if($submitButton=="完成"){ $rs=mywritefile("$page","$test"); echo "<a href ="$page">$page</a><br>"; } elseif($action=="page") //变量action值为"page"的情况 {$contents="$page"; $fp=@fopen($content,"w ")or die('Could not open file!'); $contents=htmlspecialchars($contents); fclose($fp); echo "<form action="admin.php?page=$page" method="POST" wrap=soft>"; echo "$contents"; echo "</textarea>"; echo "<input type="submit" name="submitButton" value="完成">"; echo "</form>"; } else {echo "<form action="basename($PHP_SELF).?action=page" method="POST">";//注意引用程序内变量的方式。 echo "<input type=text size=20 name=page>"; echo "<input type="submit" name="send" value="选定">"; echo "</form>"; } ?> |
至此,首页新闻发布的实现已经可以告一段落了。 我们可以发现,任何一个功能(比较)强大的陈程式都是由一些简单的功能组合而成的。第三部分功能的整个完善过程使用叠加增强的方法,和软件工程的自顶向下,逐层分析的开发方法是不一样的。这是一个适用于学习的方法,自己写写习作还是挺管用的,呵呵。
分享:用javascript php随机显示图片想必你会用javascript随机显示图片。但如果图片的资料(比如链接)是经常变化,或是由用户修改、增加的,怎么办?我这里有个办法。 把图片的资料(如名称、地址、链接等)放在一个TXT文件里(如有MYS
- 相关链接:
- 教程说明:
PHP教程-用动态网页技术PHP打造个人网站全攻略。