PHP教程之用静态网页手艺PHP打造团体网站全攻略
可以在书上很方便地做标记,及时记下自己的心得体会。 这里和人人交换一下用静态网页手艺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.webjx.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);
}
--------假如你是一个老手,那末应当找一本html入门的书来看看。不然是很难成为一个PHP高手的。这些你入手下手看起来 十分复杂的处置字符串的函数,经由你的奇妙应用,是能做良多大度的事的。下一讲,咱们就能够看到咱们筹办了泰半天的功效了,呵呵。
三 首页旧事宣布,让你更新更轻松(中)
前次咱们做了一个文件头(至于文件尾,请人人本人做,假定为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?)需求用暗码才干进入(假设你还爱护本人的网站的话,这是有需要的,最好连文件名都不要让他人晓得,呵呵)。上面是一段各处可见的文件上载的代码:
<?
if(isset($upfile))
{
?>
已上载的文件信息以下:
文件寄存途径: <?echo $upfile;?>
原始文件名 : <?echo $upfile_name;?>
文件巨细(字节): <?echo $upfile_size;?>
文件类型 : <?echo $upfile_type;?>
<?
}
else
{
?>
<html>
<head><title>旧事上传</title></head><body>
<form enctype="multipart/form-data" method="post" action="<?echo $PHP_SELF;?>">
<input type="hidden" name="MAX_FILE_SIZE" value="50000">
请选择或输出上传文件名: <input name="upfile" type="file">
<input type="submit" value="上传" name="submit">
</form>
</body></html>
<?
}
?>
-----这里咱们又见到了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>";
}
?>
-----至此,首页旧事宣布的完成已可以告一段落了。 咱们可以发明,任何一个功效(对照)壮大的陈程式都是由一些复杂的功效组合而成的。第三局部功效的全部完美进程利用叠加加强的办法,和软件工程的自顶向下,逐层剖析的开辟办法是纷歧样的。这是一个合用于进修的办法,本人写写习作仍是挺管用的,呵呵。
从刚开始练习的PHP基础语法练习,到PHP语言在WEB中的应用,再到实际的项目开发,如留言版,相册系统,中小型公司网站系统,以及期间做过的有关团队合作的小游戏,让我受益匪浅,学到了很多。 学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql 如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了, 说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。 刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。 当然这种网站的会员费就几十块钱。 Ps:以上纯属原创,如有雷同,纯属巧合 你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。 写的比较杂,因为我也是个新手,不当至于大家多多指正。 遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。 兴趣是最好的老师,百度是最好的词典。 首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。 最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。 真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎, 在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。 为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。 首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。 在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。 为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
页:
[1]