仓酷云

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

[学习教程] PHP编程:PHP网页计数器的道理

[复制链接]
活着的死人 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:54:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我的这套线路可能跟许多学习PHP的爱好者不谋而合,这也算是一个循序渐进的学习过程,不过新手不要看到上面的概括就以为学习蛮简单的,默默在此不得不对您稍微泼一下冷水,任何东西其实都不简单。计数器|网页     访客计数器是让 Web 访客晓得该网页或网站的人气指数最直接的办法。特别是想使用网页赚钱的人,访主人数是找告白商最好的说词。固然可以将网站来访人数写成统计报表,但老是感到直接看到对照真实,究竟目击为凭。


在上图中,访客计数器的流程以下

1.. 第一名利用者阅读某页。
2.. 伺服器程式从材料库或档案中读取该页被阅读次数。
3.. 将次数加一贮存,并将它送回第一名利用者。
4.. 第二位利用者阅读某页。
5.. 伺服器程式从材料库或档案中读取该页被阅读次数。
6.. 将次数再加一贮存,并将它送回第二位利用者。
PHP 在没有特别的访客计数器函式,然而咱们可以用 PHP 的壮大功效自已写一个访客计数器函式。

以下的函式是访客计数器的原型,是由 David W. Bettis 所供应,并经由作者少量修正。


<html>
<head>
<title>访客计数器 原型</title>
</head>
<body>
<?php
/*
simple access counter for php3
(c)1998 David W. Bettis
dbettis@eyeintegrated.com
medify by Wilson Peng
*/

$counterFile = "/tmp/counter.txt";

function displayCounter($counterFile) {
$fp = fopen($counterFile,"rw");
$num = fgets($fp,5);
$num += 1;
print "您是第 "."$num"." 位无聊分子";
exec( "rm -rf $counterFile");
exec( "echo $num > $counterFile");
}

if (!file_exists($counterFile)) {
exec( "echo 0 > $counterFile");
}

displayCounter($counterFile);

?>
</body>
</html>


Copyright ? 1998 David W. Bettis

在读取到本页时,PHP 程式先找寻 /tmp/counter.txt 档案是不是存在,若不存在,则创立一个 counter.txt 档案,然后将 0 写入档案。然后读取 counter.txt 档案的内容,也就是纯文字档,再将内文的数字存入 $num 变数中。在 $num 的变数呈现在阅读器前,还有经由加一的举措,让利用者可以增添。固然,假如想灌水,就在加一举措时加二或加三,不外自欺是无用的。最初将访主人数再回存 /tmp/counter.txt
就一切 OK。

固然,每页都要如许写,岂不费事到了顶点。这时候,咱们可以使用 PHP 供应的 require() 功效,将计数器收拾整顿成一个函式,酱子在利用上就便利多多了。

起首要先将 Apache 的设定档 (httpd.conf) 到场 PHP include 档案的途径。例如要设一切的 include 档都在 http://abcdefghijk.com.tw/include 中,可以在httpd.conf 到场上面的例子

php3_include_path .:./include:../include

别忘了从头启动 Apache 伺服器,新增的 include 途径才无效。

./apachectl restart

再来就在伺服器的 .../include 目次中放入以下的档案,档名存成
counter.inc

上面就是 MyCounter() 函式。为了让读者便利懂得,程式中的变数
$counterFile、$fp 及 $num 坚持和 David W. Bettis 所设定的计数器中的变数功效不异。


<?php
file://---------------------------
// 访客计数器函式 MyCounter()
// Author: Wilson Peng
// Copyright (C) 1999
file://---------------------------
function MyCounter() {
$counterFile="/tmp".$GLOBALS["PHP_SELF"];
if (!file_exists($counterFile)) {
if (!file_exists(dirname($counterFile))) {
mkdir(dirname($counterFile), 0700);
}
exec("echo 0 > $counterFile");
}
$fp = fopen($counterFile,"rw");
$num = fgets($fp,5);
$num += 1;
print "$num";
echo $counterFile;
exec("rm -rf $counterFile");
exec("echo $num > $counterFile");
}
?>


Copyright ? 1999, Wilson Peng

固然,要用的话要加 Homepage 中嵌入 MyCounter() 函式,就能够利用了。


<?php
require("counter.inc");
?>
<html>
<head>
<title>访客计数器 终究版</title>
</head>
<body>
您是第 <? MyCounter(); ?> 位观赏者
</body>
</html>


Copyright ? 1999, Wilson Peng

要用这个 MyCounter() 函式,先在 Homepage 的开首处到场 require() 函式,引入 MyCounter() 函式成为该 Homepage 的一部分。以后再将 <? MyCounter(); ?>字串放在需求计数器的中央就能够了。

function MyCounter() {
:
:

}
在创立函式时,需求用下面的格局。在自订函式称号前到场 function 字串。

每页有效到 MyCounter() 的 Homepage 城市在 /tmp 以后到场该页的途径,这可以用 $PHP_SELF 变数告竣。

$counterFile="/tmp".$GLOBALS["PHP_SELF"];

固然,若您要将 /tmp 改成其余目次也能够,否则在 SUN 等伺服器,如果reboot,/tmp 中的器材都没了,要从头入手下手再计数了。若您不知要利用甚么目次,建议利用 /var/log/counter 这个目次,和其它的 log 等变化材料放在一同。

if (!file_exists($counterFile)) {
if (!file_exists(dirname($counterFile))) {
mkdir(dirname($counterFile), 0700);
}
exec("echo 0 > $counterFile");
}

这五行次要是反省 $counterFile 是不是存在,若档案不存在则看目次是不是存在,决意要不要创立目次。以后就创立档案,并写入 0。

$fp = fopen($counterFile,"rw");
$num = fgets($fp,5);
$num += 1;
print "$num";
echo $counterFile;

这五行就是翻开计数器寄存的档案,并将它累加后的了局送到阅读器端。

exec("rm -rf $counterFile");
exec("echo $num > $counterFile");

最初将计数器档案删除,再从头创立一个。就完成了这个以档案为基本的纯文字计数器。基础这个东西,有人问学php需要任何基础不?
莫相离 该用户已被删除
沙发
发表于 2015-2-4 06:59:53 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
谁可相欹 该用户已被删除
板凳
发表于 2015-2-5 22:55:45 | 只看该作者
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
活着的死人 该用户已被删除
地板
 楼主| 发表于 2015-2-7 10:01:37 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
小魔女 该用户已被删除
5#
发表于 2015-2-10 06:30:12 | 只看该作者
做为1门年轻的语言,php一直很努力。
山那边是海 该用户已被删除
6#
发表于 2015-2-28 23:26:01 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
海妖 该用户已被删除
7#
发表于 2015-3-10 10:29:18 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
乐观 该用户已被删除
8#
发表于 2015-3-11 06:23:31 | 只看该作者
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
透明 该用户已被删除
9#
发表于 2015-3-11 18:47:20 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
愤怒的大鸟 该用户已被删除
10#
发表于 2015-3-19 07:36:31 | 只看该作者
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
变相怪杰 该用户已被删除
11#
发表于 2015-3-19 18:58:25 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
小女巫 该用户已被删除
12#
发表于 2015-3-22 02:10:32 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
若天明 该用户已被删除
13#
发表于 2015-3-28 23:45:50 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
蒙在股里 该用户已被删除
14#
发表于 2015-4-1 13:07:43 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
若相依 该用户已被删除
15#
发表于 2015-4-6 21:08:56 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
简单生活 该用户已被删除
16#
发表于 2015-4-6 22:10:08 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
只想知道 该用户已被删除
17#
发表于 2015-4-19 10:46:53 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
飘飘悠悠 该用户已被删除
18#
发表于 2015-4-21 13:22:08 | 只看该作者
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
因胸联盟 该用户已被删除
19#
发表于 2015-4-26 02:11:33 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
爱飞 该用户已被删除
20#
发表于 2015-4-26 09:18:34 | 只看该作者
基础有没有对学习php没有太大区别,关键是兴趣。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-24 01:25

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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