仓酷云
标题:
PHP网页编程之一个复杂的PHP入门源法式
[打印本页]
作者:
海妖
时间:
2015-2-4 00:14
标题:
PHP网页编程之一个复杂的PHP入门源法式
最近陆续的有人问我学习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
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
作者:
若相依
时间:
2015-2-6 00:00
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
作者:
愤怒的大鸟
时间:
2015-2-6 16:10
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
作者:
仓酷云
时间:
2015-2-14 19:50
做为1门年轻的语言,php一直很努力。
作者:
若天明
时间:
2015-3-4 10:01
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
作者:
不帅
时间:
2015-3-11 18:11
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
作者:
兰色精灵
时间:
2015-3-13 01:08
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
作者:
小妖女
时间:
2015-3-16 01:50
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
作者:
柔情似水
时间:
2015-3-22 18:32
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
作者:
冷月葬花魂
时间:
2015-3-25 08:16
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
作者:
因胸联盟
时间:
2015-3-27 21:09
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
作者:
灵魂腐蚀
时间:
2015-4-1 10:10
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox 支持的不是很好,所以能少用还是少用的好。
作者:
小魔女
时间:
2015-4-10 18:32
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
作者:
谁可相欹
时间:
2015-4-12 06:43
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
作者:
乐观
时间:
2015-4-15 07:12
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
作者:
莫相离
时间:
2015-4-21 16:28
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
作者:
再见西城
时间:
2015-5-1 20:11
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
作者:
小女巫
时间:
2015-6-27 02:28
兴趣是最好的老师,百度是最好的词典。
作者:
海妖
时间:
2015-7-3 22:51
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
欢迎光临 仓酷云 (http://www.ckuyun.com/)
Powered by Discuz! X3.2