仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 895|回复: 19
打印 上一主题 下一主题

[学习教程] PHP网页编程之一个复杂的PHP入门源法式

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:14:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
最近陆续的有人问我学习php的心得,现在整理为下面,希望可以对大家有些帮助。法式   援用“星空荡子”php中文文档的例子:



聊天室,是 Web 站上打发无聊人士的奥密兵器。同时,站长或其它人员也能够在这儿杀工夫。乃至产生一段大张旗鼓的网路爱情呢,就算没有,最少可以增添打字的速度。

聊天室,其实就是多人配合利用的 CGI 程式。程式将每一个人输出的字串,依体系吸收完成的工夫收拾整顿事后,再送给各个利用者。而 Web 聊天室和 BBS 的聊天室分歧的中央是 BBS 聊天室可以每收到一句话,就即刻分送给每位在聊天室的网路利用者;Web 因为 CGI 程式不克不及像 BBS 的 telnet 一向连线,Web CGI 必需以最快的速度将新闻送出,然后停止连线。会构成这类情况,就是由于 Web 聊天室仍是利用 HTTP 传输协议,在 HTTP 实作的版本,不管是 0.9、1.0 或是 1.1 版都不克不及临时占有网路连线的 Port。



为懂得决材料没法即刻传输的成绩,及更新讯息的成绩,Netscape 在 3.0 版阅读器以后利用了新的手艺,而 Internet Explorer 也实作了这些 Netscape 研收回来的手艺。Netscape 将它分红 Server Push 及 Client Pull 二种手艺。Server Push 由 Web 伺服器将材料以多重 MIME 编码,送给利用者端,今朝较少网站利用这类体例;而 Client Pull 则使用了 HTML 的 meta 标签,并使用 http-equiv="Refresh" 的属性,暗示材料要从头载入,至于载入工夫,则使用 content 属性来告竣。



<meta> 标签凡是都放在 <head>..</head> 的区段中,以便让阅读器可以仅早筹办更新利用者真个网页。上面为 meta 和 PHP 适用的例子,设定为每十五秒从头载入一次。



<meta http-equiv="Refresh" content="15; url=<? echo $PHP_SELF; ?>">



假如不必 Server Push 或是 Client Pull 来做聊天室,是不是有其它的办法,让 Web 的阅读器能聊天呢?谜底是一定的。可使用 Java 或是 ActiveX (限 IE4、5) 来做乃至自行开辟专属的 Browser Plug-in 程式 (如奇摩的聊天室),不外这就和 PHP 没有关系了,不是咱们要的重点。



除此以外,因为按期更新一切网友的留言,为了怕写了一半由于 refresh 而被清失落还没有写好的字串,因而将聊天室以 frame 的页框手艺来做是有需要的。下例就是聊天室的主程式。





<html>

<head>

<title>聊天室</title>

</head>

<frameset rows="*,40" border=1>

<frame src="list.php" name=list scrolling=auto>

<frame src="post.php" name=post scrolling=no>

<noframes>

<body>

本聊天室需利用页框,您的阅读器没法利用

</body>

</noframes>

</frameset>

</html>









程式中以 frame 带出二支 PHP 程式,建议将它们放在统一目次当中,例如 /chatroom,以便往后保护。别的,为了 list.php 及 post.php 可使用不异的变数,下例将共通的变路途径放在 env.inc 中,可以将它放在 /chatroom 或是 Web 伺服器 (如 Apache) 的 PHP include 设定途径中。





<?php

// 档名: env.inc

$tempdir="/tmp/";

$chatfile="/tmp/abc";

?>





聊天室的后端可以设计的很复杂,纯真的利用档案来做,也能够弄个材料库,将聊天的内容丢入,若是真的很在乎体系效力,也许可以思索利用 UNIX 的行程通信 IPC 了。



本节行将利用者留言的内容放入档案中,在这儿的例子大部分都利用 UNIX/Linux 的内部指令。若体系无该指令 (或称程式),请自行装置相干程式。



实践大将材料丢入档案中会比利用材料库还快,若还很在意速度,可以在 UNIX 机械中装上 RAM Disk,再将档案的存取途径都设在该 RAM Disk 上,包管存取速度能知足严苛的请求。在有些以高速度搜索引擎为召唤的网站,乃至将全部材料库材料都放到 RAM Disk 中,即刻让体系速度进步十倍百倍,并且 RAM 的价钱和其它处理计划比拟的话还算很廉价。若利用 Windows NT,那就没举措了,看微软甚么时分供应,或用 Third Party 的产物了。



有些利用者能够对 UNIX 还不是很熟,在这儿先简介会用到的指令:



touch: 创立新档案,或修正旧档的最初更新日期。



echo 加上二个大于符号: 将字串显示转向到指定的中央。



tail: 显示档案最初数行的材料,内定值为十行,可以使用减号加数字,修正欲显示的行数。



上面为送出及处置留言字串的程式,程式用到 env.inc 的档案。





<?php

// 档名: post.php

require("env.inc");

if (($chatuser!="") and ($chattext!="")) {

$chatstr="<font color=8080ff>".date("h:i:s")."</font>-<font color=ff8080>".$chatuser."</font>: ".$chattext;

$cmdstr="echo \"".$chatstr."\" >> ".$chatfile;

if (!file_exists($chatfile)) passthru("touch ".$chatfile);

passthru($cmdstr);

}

?><html>

<body bgcolor=ffffff leftmargin=0 topmargin=0 marginheight=0 marginwidth=0>

<form action=<? echo $PHP_SELF; ?> method=post>

<table border=0 width=100%><tr>

<td align=right>匿称:</td>

<td><input type=text name=chatuser size=8 value="<? echo $chatuser; ?>"></td>

<td align=right>讲话:</td>

<td><input type=text name=chattext size=30 maxlength=500></td>

<td><div align=right><input type=submit value="送出"></td>

</tr></table>

</form>

</body>

</html>





程式先反省是不是有输出字串,若无匿名及讲话内容字串则显示讲话的表单 (Form),如有材料则将字串及事先工夫存入档案中 (使用 UNIX 的转向指令)。固然,为了避免毛病,先反省是不是有档案可存档,若没有则先 touch 该档,例中的档案就是 /tmp/abc。





<html>

<meta http-equiv="Refresh" content="5; url=<? echo $PHP_SELF; ?>">

<meta content="text/html; charset=gb2312" http-equiv=Content-Type>

<body bgcolor=ffffff leftmargin=0 topmargin=0 marginheight=0 marginwidth=0>

<?

// 档名: list.php

require("env.inc");



if (!file_exists($chatfile)) {

echo "还没有倒闭</body></html>";

exit;

}



$uniqfile=$tempdir.uniqid(rand());

$shellcmd="/usr/bin/tail -50 ".$chatfile. " > ".$uniqfile;

passthru($shellcmd);

$chatfilearray=file($uniqfile);

$j=count($chatfilearray);

for ($i=1; $i<=$j; $i++) {

echo $chatfilearray[$j-$i]."
\n";

}

unlink($uniqfile);

?>

</body>

</html>





下面的程式就是利用 Client Pull 的手艺,每五秒就从头更新一次。一样地,它也 require 共用的 env.inc 档,要改动个中的变数时,即刻就能够让一切的程式用到,这对开辟网站来讲,是蛮主要的办法,可以将网页程式中城市呈现的中央。例如 Copyright (C) 1996-2000 的字串,放在一个档案上,到了新的一年,只需改一个档,全部站都改了。



if (!file_exists($chatfile)) {

echo "还没有倒闭</body></html>";

exit;

}



$uniqfile=$tempdir.uniqid(rand());

$shellcmd="/usr/bin/tail -50 ".$chatfile. " > ".$uniqfile;

passthru($shellcmd);



程式先反省有无利用者发送聊天内容的档案 /tmp/abc,若没有就显示还没有倒闭,等利用者送聊天内容。若已有聊天材料,就抓出最初五十笔,在在别的的档案中筹办显示。



$chatfilearray=file($uniqfile);

$j=count($chatfilearray);

for ($i=1; $i<=$j; $i++) {

echo $chatfilearray[$j-$i]."
\n";

}

unlink($uniqfile);



将档案读入阵列变数 $chatfilearray 中,并以最初的材料最早显示的体例送给阅读器端,固然可使用对阵列排序的办法,但肯定必定时最初存入的材料在最初面,将它排序其实很华侈 CPU 工夫,因而就从最初 echo 到最后面的材料。利用完成还要用 unlink() 指令,将一时档杀失落。  在学习PHP这六个月里,每看到一个优秀的php脚本,就会兴奋的手舞足蹈,嘴里还不停的说:太酷了,太酷了。呵呵,很幼稚吧,但这可能就是兴趣。
活着的死人 该用户已被删除
沙发
发表于 2015-2-4 10:08:30 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
若相依 该用户已被删除
板凳
发表于 2015-2-6 00:00:39 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
愤怒的大鸟 该用户已被删除
地板
发表于 2015-2-6 16:10:04 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
5#
发表于 2015-2-14 19:50:36 | 只看该作者
做为1门年轻的语言,php一直很努力。
若天明 该用户已被删除
6#
发表于 2015-3-4 10:01:36 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
不帅 该用户已被删除
7#
发表于 2015-3-11 18:11:04 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
兰色精灵 该用户已被删除
8#
发表于 2015-3-13 01:08:27 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
小妖女 该用户已被删除
9#
发表于 2015-3-16 01:50:19 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
柔情似水 该用户已被删除
10#
发表于 2015-3-22 18:32:21 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
冷月葬花魂 该用户已被删除
11#
发表于 2015-3-25 08:16:29 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
因胸联盟 该用户已被删除
12#
发表于 2015-3-27 21:09:59 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
灵魂腐蚀 该用户已被删除
13#
发表于 2015-4-1 10:10:16 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
小魔女 该用户已被删除
14#
发表于 2015-4-10 18:32:50 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
谁可相欹 该用户已被删除
15#
发表于 2015-4-12 06:43:45 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
乐观 该用户已被删除
16#
发表于 2015-4-15 07:12:39 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
莫相离 该用户已被删除
17#
发表于 2015-4-21 16:28:29 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
再见西城 该用户已被删除
18#
发表于 2015-5-1 20:11:41 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
小女巫 该用户已被删除
19#
发表于 2015-6-27 02:28:51 | 只看该作者
兴趣是最好的老师,百度是最好的词典。
海妖 该用户已被删除
20#
 楼主| 发表于 2015-7-3 22:51:57 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 03:10

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表