|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
培训的第二阶段,开始了PHP语言语法结构和应用的学习。统计|在线|在耳目数 第一种办法:使用AltaVista搜刮引擎来完成
这类办法是反省与你的站点链接的数量。这里用AltaVista搜刮引擎来完成。在这里,咱们用以下搜刮引擎:
http://www.altavista.com/cgi-bin/query?kl=XX&pg=q&text=yes&q=link%3A&search=Search。
这是AltaVista的一个文本版本。如许可以节俭咱们大批的需求解析HTML的代码。接着,咱们利用rawurlencode()来处置咱们切实的URL包管Altavista可以准确地处置它。处置以下:
$url = "http://www.oso.com.cn";
$url_encoded = rawurlencode($url);
$url_to_check = "http://www.altavista.com/cgi-bin/query?
kl=XX&pg=q&text=yes&q=link%3A$url_encoded&search=Search";
如许,咱们可以经由过程file()函数回取URL了。
$num_searched = file($url_to_check);
如今咱们所取回的文件已寄存在数组$num_searched中。如今要在数组中查找咱们想要的文本"About (.*)
pages found. "。(.*)暗示在任何器材。并且,假如没有人链接咱们的URL,AltaVista将显示"AltaVista found
no document matching your query."。由于咱们想晓得几何团体正在与咱们的URL停止着链接,那段文本将被看
作0团体链接。
$url = "http://www.oso.com.cn";
$url_encoded = rawurlencode($url);
$url_to_check =
"http://www.altavista.com/cgi-bin/query?kl=XX&pg=q&text=yes&q=link%3A$url_encoded&search=Search";
$num_searched = file($url_to_check);
for ($i = 0; $i < count($num_searched); $i++) {
if(eregi( "About (.*) pages found.", $num_searched[$i])){
$total_links = eregi_replace( "
About (.*) pages found.", "1", $num_searched[$i]);
}
elseif(eregi( "AltaVista found no document matching your query.",$num_searched[$i])){
$total_links = "0";
}
}
如许,咱们可以经由过程打印语句失掉咱们的查找了局了:
print("$total_links people are linking to $url");
第二种办法:使用MYSQL数据库以下是我转贴的一篇文章,来自于PHP中文用户,起体例是使用一时数据表处置以后毗连,详细内容以下:
***************************************************************
起首,用MySQL的东西建一个表:
CREATE TABLE ccol(
id integer not null auto_increment, #纪录的ID
ip char(15) not null, #会见者的IP地址
dtstamp datetime not null, #最初会见工夫
uri char(255), #会见者恳求的URI
primary key (id)
);
然后,写一段PHP代码:
/*
文件:ccol.php - ConCurrent OnLine statistics
目标:统计同时在线阅读的人数
作者:Hunte, hunte@phpuser.com
修正:2000-4-25
*/
$duration=1800;
require "db.php";
//包括DBSQL,概况可以参考我的另外一篇文章
$ccol=new dbSQL;
$ccol->connect();
$ccol->query("DELETE FROM ccol WHERE
(UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(dtstamp))>$duration");
//删除超越半小时的纪录
$ccol->query("SELECT * FROM ccol WHERE ip="$REMOTE_ADDR"");
//判别以后的IP是不是在该表中存在
if ($ccol->nf())//有?
{
$ccol->next_record();//下移找到的纪录数组的指针
$id=$ccol->f("id");
$ccol->query("UPDATE ccol SET dtstamp=now(), uri="$REQUEST_URI" WHERE id=$id");
//设置最初会见工夫和会见页面
}
else//没有
{
$ccol->query("INSERT INTO ccol VALUES (0, "$REMOTE_ADDR", now(), "$REQUEST_URI")");
}
$ccol->query("SELECT COUNT(*) AS ccol FROM ccol WHERE
(UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(dtstamp))<=$duration");
//找出在半个小时内的纪录,前面的WHERE子句无关紧要--超越工夫的已被删除
$ccol->next_record()
echo "在耳目数:", $ccol->f("ccol");
$ccol->free_result();
怎样用呢?在站点的每一个页面的下面挪用这个法式.
固然,这段代码还有改善的余地。例如,在每次挪用是都要删除半小时前的纪录,这是没有需要并且会下降效力。
可以一个甚么举措过更长的工夫再做,好比6小时。人人自各儿想一想吧,我就不说了。
这类办法只需稍做修正,就能够派上其余用途,如SESSION的办理、网站的会见统计剖析等。
对我一点用处没有啊,我知道该怎么学,但是我想如何才能更快的学,一周速成,啊不,24小时速成那种,皮皮你有没? |
|