学习笔记1(将访问记录写入到列表并且显示在浏览器)

mysql出现登陆不进去的问题可以重启试试

TP报错storage_write_error
solution:chmod -R 777 usr/share/ngnix
case1:将访问记录写入到列表并且显示在浏览器
Log.class.php

<?php 
/*
 * 日志记录
 * 每天生成一个日志文件,当文件超过指定大小则备份日志文件并重新生成新的日志文件
 *
*/
class Log {

    private $maxsize = 1024000; //最大文件大小1M

    //写入日志
    public function writeLog($filename,$msg){
        $res = array();
        $res['msg'] = $msg;
        $res['logtime'] = date("Y-m-d H:i:s",time());

        //如果日志文件超过了指定大小则备份日志文件
        if(file_exists($filename) && (abs(filesize($filename)) > $this->maxsize)){

            $newfilename = dirname($filename).'/'.time().'-'.basename($filename);
            rename($filename, $newfilename);
        }

        //如果是新建的日志文件,去掉内容中的第一个字符逗号
        if(file_exists($filename) && abs(filesize($filename))>0){

            $content = ",".json_encode($res);
        }else{

            $content = json_encode($res);

        }

        //往日志文件内容后面追加日志内容
     file_put_contents($filename, $content, FILE_APPEND);


    }


    //读取日志
    public function readLog($filename){
        if(file_exists($filename)){
            $content = file_get_contents($filename);
            $json = json_decode('['.$content.']',true);
        }else{
            $json = '{"msg":"The file does not exist."}';
        }
        return $json;
    }
}
 ?>

index.php文件

<?php
require_once('Log.class.php');

$filename = "logs/log_" . date("Ymd", time()) . ".txt";

$msg = array(
    'ip' => $_SERVER["REMOTE_ADDR"],
    'user' => getBrowser()
);
$Log = new Log();
$Log->writeLog($filename, $msg);
$loglist = $Log->readLog($filename);

//获取浏览器类型
function getBrowser() {
    $user_OSagent = $_SERVER['HTTP_USER_AGENT'];

    if (strpos($user_OSagent, "Maxthon") && strpos($user_OSagent, "MSIE")) {
        $visitor_browser = "Maxthon(Microsoft IE)";
    } elseif (strpos($user_OSagent, "Maxthon 2.0")) {
        $visitor_browser = "Maxthon 2.0";
    } elseif (strpos($user_OSagent, "Maxthon")) {
        $visitor_browser = "Maxthon";
    } elseif (strpos($user_OSagent, "Edge")) {
        $visitor_browser = "Edge";
    } elseif (strpos($user_OSagent, "Trident")) {
        $visitor_browser = "IE";
    } elseif (strpos($user_OSagent, "MSIE")) {
        $visitor_browser = "IE";
    } elseif (strpos($user_OSagent, "MSIE")) {
        $visitor_browser = "MSIE 较高版本";
    } elseif (strpos($user_OSagent, "NetCaptor")) {
        $visitor_browser = "NetCaptor";
    } elseif (strpos($user_OSagent, "Netscape")) {
        $visitor_browser = "Netscape";
    } elseif (strpos($user_OSagent, "Chrome")) {
        $visitor_browser = "Chrome";
    } elseif (strpos($user_OSagent, "Lynx")) {
        $visitor_browser = "Lynx";
    } elseif (strpos($user_OSagent, "Opera")) {
        $visitor_browser = "Opera";
    } elseif (strpos($user_OSagent, "MicroMessenger")) {
        $visitor_browser = "微信浏览器";
    } elseif (strpos($user_OSagent, "Konqueror")) {
        $visitor_browser = "Konqueror";
    } elseif (strpos($user_OSagent, "Mozilla/5.0")) {
        $visitor_browser = "Mozilla";
    } elseif (strpos($user_OSagent, "Firefox")) {
        $visitor_browser = "Firefox";
    } elseif (strpos($user_OSagent, "U")) {
        $visitor_browser = "Firefox";
    } else {
        $visitor_browser = "其它";
    } 
    return $visitor_browser;

}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
        <title>PHP添加日志到txt文件并在表格上读取日志</title>
        <meta name="keywords" content="PHP添加日志函数,PHP日志类演示,PHP如何记录项目日志"/>
        <meta name="description" content="我们在调试过程中,经常遇到日志打印,有的时候我们直接打印是看不到的,比如app接口传参,在线支付调试等。本文中的添加日志函数,可以解决这样的问题。"/>

        <link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css"/>
    </head>
    <body>
        <div style="width:800px;margin:auto">
            <table class="table table-hover">
                <thead>
                    <tr>
                        <th>#</th>
                        <th>时间</th>
                        <th>IP</th>
                        <th>浏览器</th>
                    </tr>
                </thead>
                <tbody>
                    <?php
                    $i = 1;

                    foreach ($loglist as & $val) {

                        ?>
                        <tr>
                            <th scope="row"><?php echo $i; ?></th>
                             <td><?php echo $val['logtime']; ?></td>
                            <td><?php echo $val['msg']['ip']; ?></td>
                            <td><?php echo $val['msg']['user']; ?></td>
                        </tr>
                        <?php $i++;
                    } ?>
                </tbody>
            </table>
        </div>

    </body>
</html>


<!-- 以下是统计及其他信息,与演示无关,不必理会 -->
<div style="clear:both"></div>
<p class="vad">
    <a href="http://www.sucaihuo.com/" target="_blank">sucaihuo.com</a>
    <a href="http://www.sucaihuo.com/js/903.html" target="_blank">说 明</a>
    <a href="http://www.sucaihuo.com/js/903.html" target="_blank">下 载</a>
</p>
<style type="text/css">
    .vad { margin: 120px 0 5px; font-family: Consolas,arial,宋体,sans-serif; text-align:center;}
    .vad a { display: inline-block; height: 36px; line-height: 36px; margin: 0 5px; padding: 0 50px; font-size: 14px; text-align:center; color:#eee; text-decoration: none; background-color: #222;}
    .vad a:hover { color: #fff; background-color: #000;}
    .thead { width: 728px; height: 90px; margin: 0 auto; border-bottom: 40px solid #fff;}
</style>

1要自己创建logs文件夹否则浏览器的列表显示会一直为空
2列表没有内容可能也是没有写入日志的权限
3file_put_contents 返回存入数据的字节数

流程:
1信息存入数组
2声明日志变量
3信息写入日志
4读出日志内容
5在html显示

安装 MySQL或File DB安装 编辑反.php文件并将设置修改为所需的设置。 编辑mysql_config.php或filedb_config.php(取决于您希望使用的是什么)。 上传所有.php文件和图像文件(如果使用图形计数器)。 放在所有页面的html中。 访问浏览器中的comp.php文件。注意:如果使用filedb,您的计数器将出现。如果使用MySQL,您的计数器将首先安装,然后您可以刷新页面,您的计数器将显示出来。注2:记得删除安装文件夹。 高级用户安装 编辑计数器和配置文件。 如果使用MySQL,则将dbtables.sql加载到数据库中。 PHP-Nuke w/MySQL 将整个计数器文件夹上传到php-nuke根文件夹(其中安装了php-nuke)。 将/extras/PHP-Nuke/blocks/block-EP-Dev_Counter.php上传到PHP-Nuke的/块/文件夹。 进入PHP-Nuke的管理,单击块,然后添加块“EP-Dev计数器”。 (可选)Edit comp.php注意:您的计数器将首先安装,然后您可以刷新页面,您的计数器就会显示出来。 升级 备份数据库或数据文件! Upgrading from 3.x --> 3.x 编辑反.php文件并将设置修改为所需的设置。 编辑mysql_config.php或filedb_config.php(取决于您希望使用的是什么)。 上传所有.php文件和图像文件(如果使用图形计数器)。 (可选:访问新/stats/页面查看旧的统计数据!) Upgrading from 1.x or 2.x --> 3.x 编辑反.php文件并将设置修改为所需的设置。 编辑mysql_config.php或filedb_config.php(取决于您希望使用的是什么)。 上传所有.php文件和图像文件(如果使用图形计数器)。 访问浏览器中的安装/升级-v3.php,并遵循屏幕上的任何说明。注意:您的旧文件数据库文件/表将升级为新格式,不会丢失任何数据。 特征列表 在线访客/每日访客/访客总数/点击数总数 文件数据库和MySQL数据库都支持。 容易编辑计数器显示文件. 自动数据库裁剪(文件和MySQL) 可配置在线时间 可配置TRIM数据库时间 自动存档选项 点击/访问偏移功能 逗号开/关 图形或文本 可配置数长度 IP忽略 IP阻塞 许多其他特性(我无法再跟上它们了) 故障排除 问题:我的统计页面总是显示我有0名在线访问者。我启用了时间偏移。 解决方案:目前还没有解决这个问题的办法。这是脚本检查服务器时间与数据库中的时间值的结果。如果你想在网上查看你的访问者,只需访问你的实际反.php文件;) 问题:计数器告诉我,我的“绝对路径”设置不正确!? 解决方案:您可以在comp.php中找到绝对路径设置。如果您不知道您的绝对路径,您可以访问Web浏览器中的文件/install/abus.php(包括在此计数器中)。php文件将显示计数器所需的绝对路径。 问题:我的柜台没有出现,而是显示为。 解决方案:确保您的页面是php页面(.php),并且您的服务器上有php。 问题:我不知道如何编辑计数器的布局。 解决方案:编辑-display.html文件。包括以下内容以反映不同的统计数据: 在线访问者-!反-ONPAGE! 今天的访客-!反-今天! 游客总数-!回访! 总命中-!反击! 问题:我不知道MySQL数据库是什么,或者我是否有一个数据库!解决方案:MySQL数据库是存储数据的简单方式和位置。您可以询问您的网站主机是否有(如果有,您的用户名、密码和数据库名称是什么)。如果您没有MySQL数据库,则可以将计数器设置为在comp.php文件中使用文件数据库。 问题:我收到“分析错误:解析错误,意外‘,’.行#”。解决方案:您的HITS_偏移量中可能有逗号,请删除它们。 问题:我的柜台没有正确显示访客!它总是保持在1或0。 解决方案:问题的出现与您包含文件的方式有关。这是一个已知的问题,如果您是: (A)通过域链接到脚本 (B)让服务器以其他方式拉出脚本,而不是EP-dev所建议的方式。 修复:只需包含服务器上有绝对路径的浏览器(通常用于CGI脚本)。因此,您的包含看起来类似于:。如果域名是mydomain.com,那么包含的内容可能是这样的:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值