|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
理解网站这一概念之后不难看出,任何网站都是由网页组成的,也就是说想完成网站,必须先学会做网页,因此必须要掌握了HTML,才能为今后制作网站打下基础。 3 PHP理论
PHP的很多特色与其他软件或东西有关。使用迄今为止咱们所学到的PHP常识,咱们可以试着创立一个复杂交互的网站。使用这一进程咱们又可以学到很多器材。好吧,咱们如今入手下手专注于一个典范团体网站的建立。
3.1 企图一个站点
普通一个团体站点包含一个接待页面、一个留言本页面、一个书签链接页面、一个计数器、接洽信息,乃至还有照片集和一些音乐文件等等。让咱们从一个题目页面、一个接洽信息页面和一个简历页面入手下手。咱们一样需求尺度的通用的页面头部和底部。
题目页面--front.html
这里咱们有一个十分复杂的html文件:
<HTML>
<HEAD>
<TITLE>
我的团体主页--接待
</TITLE>
</HEAD>
<BODY>
<H1>
我的团体主页
</H1>
<H2>
接待
</H2>
<HR>
<P>
接待来我的舍下,固然这里如今临时还没有甚么。
</P>
<P>
不外我但愿即刻就能够多起来。
</P>
<HR>
<P ALIGN="CENTER">
<SMALL> <I>
Copyright ? 我本人,1999
</I> </SMALL>
</P>
</BODY>
</HTML>
接洽信息页面--count.html
一样咱们又有了一个复杂页面:
<HTML>
<HEAD>
<TITLE>
我的团体主页--接洽信息
</TITLE>
</HEAD>
<BODY>
<H1>
我的团体主页
</H1>
<H2>
接洽信息
</H2>
<HR>
<P>
你可以经由过程1-800-PHP-INFO接洽我
</P>
<HR>
<P ALIGN="CENTER">
<SMALL> <I>
Copyright ? 我本人,1999
</I> </SMALL>
</P>
</BODY>
</HTML>
3.2 HTML到PHP
从下面你可以看出,每一个页面有不异的头部和底部。像下面那样每一个页面都写入不异的信息在任务量少的时分还可以,然而想象一下当有100多页面且你需求全体更改其头部或底部时你要消费多大精神?一页一页的手工更改是一件何等冗杂无趣的工作啊!所以咱们应当为这些页面编写PHP的头部和底部文件,以后咱们只需在每一个HTML页面中援用它们就好了。咱们将把这些include文件放在一个叫include的子目次下。上面咱们就把这些站点的通用内容写进文件中。
全站通用变量设定:common.inc
<?
// 全站通用变量
$MyEmail = "phptalk@tnc.org";
$MyEmailLink = "<a href=\"mailto:$MyEmail\">$MyEmail</a>";
$MyName = "PHP Talk";
$MySiteName = $MyName."'s Home Page";
?>
通用页面头部:header.inc
<?
// 界说通用页面头部
?>
<HTML>
<HEAD>
<TITLE>
<? echo "$MySiteName - $title"; ?>
</TITLE>
</HEAD>
<BODY>
<H1>
<? echo "$MySiteName"; ?>
</H1>
<H2>
<? echo "$title"; ?>
</H2>
<HR>
通用页面底部:footer.inc
<?
// 通用页面底部
?>
<HR>
<P ALIGN="CENTER">
<SMALL> <I>
Copyright ? by
<? echo "$MyName ($MyEmailLink)"; ?>
, 1999
</I> </SMALL>
</P>
</BODY>
</HTML>
新的页面front.php3:
<?
include("include/common.inc");
$title = "Welcome";
include("include/header.inc");
?>
<P>
接待来我的舍下,固然这里如今临时还没有甚么。
</P>
<P>
不外我但愿即刻就能够多起来。
</P>
<?
include("include/footer.inc");
?>
新的cont.php3:
<?
include("include/common.inc");
$title = "Contact Information";
include("include/header.inc");
?>
<P>
你可以经由过程1-800-PHP-INFO接洽我
</P>
<?
include("include/footer.inc");
?>
如今你就能够猜出如许布置的优点了。假如你想修改页面的头部或底部,你只需求修改响应的文件就能够了。假如你要修正你的e-mail地址乃至你的名字,只需修正common.inc文件就好了。别的值得注重的是你可以把具有任何文件名或文件扩大名的文件包括进你的文件中,你乃至可以包括其他站点上的文件。
3.3 计数器
让咱们在首页上加上一个计数器。这个例子已被讲过量次了,然而仍是有益于演示如何读写文件和创立本人的函数。counter.inc包括以下代码:
<?
/*
|| 一个复杂的计数器
*/
function get_hitcount($counter_file)
{
/* 将计数器归零
如许假如计数器还未被利用,初始值将是1
你固然也能够把初始值设成20000来哄人咯
*/
$count=0;
// 假如寄存计数器文件已存在,读取个中的内容
if ( file_exists($counter_file) )
{
$fp=fopen($counter_file,"r");
// 咱们只取了前20位,但愿你的站点不要太受接待啊
$count=0+fgets($fp,20);
// 因为函数fgets()前往字符串,咱们可以经由过程加0的办法将其主动转换为整数
fclose($fp);
// 对文件操作终了
}
// 增添一次计数值
$count++;
// 将新的计数值写入文件
$fp=fopen($counter_file,"w");
fputs($fp,$count);
fclose($fp);
# 前往计数值
return ($count);
}
?>
然后咱们更改front.php3文件以显示这个计数器:
<?
include("include/counter.inc");
// 我把计数值放在文件counter.txt中,读出并输入
printf ("<CENTER><B>%06d</B></CENTER> <BR> \n",
get_hitcount("counter.txt"));
include("include/footer.inc");
?>
看看咱们的新front.php3
3.4 反应表单
让咱们再添加一个反应表单以便你的阅读者填写并e-mail给你。举例来讲咱们用一种很复杂的办法完成它,咱们只需求两个页面:一个为阅读者供应输出表单;一个取得表双数据并处置、mail给你。
PHP中获得表双数据是很复杂的。当一个表单被发送后,表单中所包括的各个元素被赋上了响应的值,而如许就能够像援用普通变量一样利用了。
<FORM name="myform" ACTION="process_form.php3" METHOD="POST">
<INPUT TYPE="TEXT" NAME="mytext" VALUE="Some Value">
</FORM>
在process_form.php3中,变量$mytext就被付与了输出的值--十分复杂!一样的,你可以从列表框、多选框、单选框、按钮等表单位素中获得变量值。你独一要做的就是为表单中的每个元素取名以便未来可以援用。
依据这个办法,咱们可以生成一个复杂的包括三个元素的表单:姓名、e-mail地址和留言。当阅读者发送表单后,处置该表单的PHP页面(sendfdbk.php3)读取数据,反省姓名是不是为空,最初将数据mail给你。
表单:form.php3
<?
include("include/common.inc");
$title = "Feedback";
include("include/header.inc");
?>
<P>
<FORM ACTION="sendfdbk.php3" METHOD="POST">
<INPUT TYPE="text" NAME="name" value="Your name" SIZE="20" MAXLENGTH="30">
<INPUT TYPE="text" MAXLENGTH="40" WIDTH="20" value="Your Email" NAME="email">
<BR>
<TEXTAREA ROWS="7" COLS="40" NAME="comment">
Your feedback on my home page.
</TEXTAREA>
<BR>
<INPUT TYPE="submit" VALUE="Send Feedback!">
</FORM>
</P>
<?
include("include/footer.inc");
?>
处置表单:sendfdbk.php3
<?
include("include/common.inc");
$title = "Feedback";
include("include/header.inc");
if ( $name == "" )
{
// 如今我很厌恶匿名的留言!
echo "Duh ? How come you are anonymous?";
}
elseif ($name == "Your name")
{
// 这个阅读者真是不想泄漏姓名啊!
echo "Hello ? <B>Your name</B> is supposed to be replaced with
your actual name!</B>";
}
else
{
// 输入一段礼貌的感激语
echo "
Hello, $name.
<BR>
Thank you for your feedback. It is greatly appreciated.
<BR>
Thanking you
<BR>
$MyName <BR>
$MyEmailLink
";
// 最初mail出去
mail($MyEmail, "Feedback.","
Name : $name
E-mail : $email
Comment : $comment
");
}
include("include/footer.inc");
?>
3.5 复杂的站内搜刮引擎
PHP可以挪用内部法式。在Unix情况下咱们可以使用法式grep完成一个复杂的搜刮引擎。咱们可以做的略微庞杂一些:利用一个页面既输入一个表单供用户输出搜刮字串又输入查询了局。
<?
include("include/common.inc");
$title = "Search";
include("include/header.inc");
?>
<P>
<FORM ACTION="<? echo "$PHP_SELF"; ?>" METHOD="POST">
<INPUT TYPE="text" NAME="searchstr" value="<? echo "$searchstr"; ?>"
SIZE="20" MAXLENGTH="30">
<INPUT TYPE="submit" VALUE="Search!">
</FORM>
</P>
<?
if ( ! empty($searchstr) )
{
// empty()用来反省查询字串是不是为空
// 假如不为空,挪用grep查询
echo "<HR>\n";
// 挪用grep对一切文件停止巨细写非敏感形式的查询
$cmdstr = "grep -i $searchstr *";
$fp = popen( $cmdstr, "r" ); // 履行号令并输入管道
$myresult = array(); // 存储查询了局
while( $buffer = fgetss ($fp, 4096))
{
// grep前往如许格局: 文件名:婚配字串呈现行数
// 因而咱们使用函数split()分别处置数据
list($fname, $fline) = split(":",$buffer, 2);
// 咱们只输入第一次婚配的了局
if ( !defined($myresult[$fname]))
$myresult[$fname] = $fline;
}
// 如今咱们将了局存储在数组中,上面就能够处置并输入了
if ( count($myresult) )
{
echo "<OL>\n";
while(list($fname,$fline) = each($myresult))
echo "<LI>
<A HREF=\"$fname\">$fname</A> : $fline </LI>\n";
echo "</OL>\n";
}
else
{
// 假如没有查询了局
echo "Sorry. Search on <B>$searchstr</B>
returned no results.<BR>\n";
}
pclose($fp);
}
?>
<?
include("include/footer.inc");
?>
正文:
PHP_SELF是PHP内建的变量。包括以后文件名。
fgets()按行读取文件,最多4096(指定)字符长度。
fgetss()与fgets()类似,只是解析输入的HTML标志。
split()有一个参数是2,由于咱们只需求把输入分红两局部。别的需求省略":"。
each()是一个数组操作函数,用来更便利的遍历全部数组。
popen()、pclose()与fopen()、fclose()的功效很类似,只是增添了管道处置。
请注重以上的代码并非完成一个搜刮引擎的好举措。这只是有助于咱们更勤学习PHP而举出的一个例子罢了。幻想的情形是你应当创立一个包括关头字的数据库然落后行搜刮。
把例子全部敲进去试验,完成一遍以后就会有心得了,因为你会发现为啥我的程序和书上的一模一样就是结果不正确。新手学习的时候必须承认,不容易,因为我也是过来人,你会发现原来有那么多常用的语句,函数都要记。 |
|