若相依 发表于 2015-2-4 00:08:00

PHP编程:从实例入手下手

理解网站这一概念之后不难看出,任何网站都是由网页组成的,也就是说想完成网站,必须先学会做网页,因此必须要掌握了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而举出的一个例子罢了。幻想的情形是你应当创立一个包括关头字的数据库然落后行搜刮。

把例子全部敲进去试验,完成一遍以后就会有心得了,因为你会发现为啥我的程序和书上的一模一样就是结果不正确。新手学习的时候必须承认,不容易,因为我也是过来人,你会发现原来有那么多常用的语句,函数都要记。

若相依 发表于 2015-2-4 09:14:24

写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。

蒙在股里 发表于 2015-2-5 14:18:48

爱上php,他也会爱上你。

深爱那片海 发表于 2015-2-7 19:45:24

,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。

admin 发表于 2015-2-10 03:50:06

Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81

活着的死人 发表于 2015-2-21 00:34:46

我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。

小女巫 发表于 2015-3-6 19:26:13

首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。

冷月葬花魂 发表于 2015-3-7 12:48:33

Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81

变相怪杰 发表于 2015-3-11 05:05:22

我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。

第二个灵魂 发表于 2015-3-17 01:09:06

使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。

精灵巫婆 发表于 2015-3-17 21:09:42

其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎

飘灵儿 发表于 2015-3-20 16:10:31

因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax

再现理想 发表于 2015-3-30 02:20:17

有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。

飘飘悠悠 发表于 2015-3-30 05:18:01

作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。

愤怒的大鸟 发表于 2015-3-30 19:35:13

基础有没有对学习php没有太大区别,关键是兴趣。

乐观 发表于 2015-4-1 04:10:24

至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。

分手快乐 发表于 2015-4-6 01:08:36

如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,

简单生活 发表于 2015-4-12 02:53:05

当然这种网站的会员费就几十块钱。

灵魂腐蚀 发表于 2015-4-12 19:04:52

学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
页: [1]
查看完整版本: PHP编程:从实例入手下手