• MYSQL基础笔记(五)- 练习作业:站点统计练习


    作业:站点统计

      1、将用户的访问信息记录到文件中,独占一行,记录IP地址

    1 <?php
    2 //站点统计
    3     header('Content-type:text/html;charset=utf-8');
    4 
    5 //获取用户信息
    6     $ip = $_SERVER['REMOTE_ADDR'];
    7 
    8 //写入文件(追加)
    9     file_put_contents('record.text',$ip."
    ",FILE_APPEND);

      2、所有信息都是通过文件中记录的内容来计算的,读取整个文件,一行代表访问一次,使用file函数读取。

    1 //读取数据 ,以行为单位
    2     $info = file('record.text');

      3、总的访问次数等于总行数,就是读取的数组的总记录数。

    1 //求出网站的总访问量
    2     $visits = count($info);

      4、求出当前用的访问次数,当前用户的IP在数组中出现的次数

    1 //求出当前用户(IP)出现的次数
    2     $ip_visits = 0;
    3     foreach($info as $each_ip)
    4     {   //比较
    5         if($each_ip == $ip)
    6             $ip_visits++;
    7     }

      5、总共有多少个用户访问过,遍历当前所有的访问用户信息,另外使用一个数组保存。如果当前IP在数组中存在,那么不加入,否则加入。最后统计新数组即可。

     1 foreach($info as $each_ip)
     2     {
     3         //统计当前数组中拥有的的独立IP数
     4         if(!in_array($each_ip,$unique_ips))
     5             $unique_ips[] = $each_ip;
     6 
     7         //比较:从文件中读出的是一行,用trim去掉换行符空格
     8         if(trim($each_ip) == $ip)
     9             $ip_visits++;
    10 
    11         //统计$unique_ips中的元素个数:就是独立ip数,总用户
    12         $users = count($unique_ips);
    13     }

      6、求出当前用户是第几位访问访问者,只要判断当前IP在独立用户数组中出现的位置即可。

      下面是整个作业的代码:

     1 <?php
     2 //站点统计
     3     header('Content-type:text/html;charset=utf-8');
     4 //获取用户信息
     5     $ip = $_SERVER['REMOTE_ADDR'];
     6 //写入文件(追加)
     7     file_put_contents('record.text',$ip."
    ",FILE_APPEND);
     8 //读取数据 ,以行为单位
     9     $info = file('record.text');
    10 //求出网站的总访问量
    11     $visits = count($info);
    12 //求出当前用户(IP)出现的次数
    13     $ip_visits = 0;
    14     $unique_ips = array();
    15     foreach($info as $each_ip)
    16     {
    17         //统计当前数组中拥有的的独立IP数
    18         if(!in_array($each_ip,$unique_ips))
    19         {   //讲当前新的用户加入到独立的ip数组中
    20             $unique_ips[] = $each_ip;
    21             //判断当前新加的IP($each_ip)是否是当前用户的IP
    22             if($ip == trim($each_ip)) $user_visit = count($unique_ips);
    23 
    24         }
    25 
    26         //比较:从文件中读出的是一行,用trim去掉换行符空格
    27         if(trim($each_ip) == $ip)
    28             $ip_visits++;
    29 
    30         //统计$unique_ips中的元素个数:就是独立ip数,总用户
    31         $users = count($unique_ips);
    32     }
    33 //需求_输出
    34     echo "欢迎访问,你是第{$user_visit}个用户,当前网站一共有{$users}位用户,
    35     当前网页一共被访问了{$visits}次,你当前是第{$ip_visits}位访问";
    36 ?>

     本作业所涉及的几个PHP函数总结:

      1、$_SERVER['REMOTE_ADDR']

      $_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。

      'REMOTE_ADDR' 浏览当前页面的用户的 IP 地址。

      2、 file_put_contents 将一个字符串写入文件

    1 int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )

      和依次调用 fopen()fwrite() 以及 fclose() 功能一样。

      参数

      filename

      要被写入数据的文件名。

      data

      要写入的数据。类型可以是 stringarray 或者是 stream 资源(如上面所说的那样)。

      如果 data 指定为 stream 资源,这里 stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用 stream_copy_to_stream() 函数。

      参数 data 可以是数组(但不能为多维数组),这就相当于file_put_contents($filename, join('', $array))

      flags

      flags 的值可以是 以下 flag 使用 OR (|) 运算符进行的组合。

    context

      一个 context 资源。

     上一节:MYSQL基础笔记(四)-数据基本操作

    下一节:MYSQL基础笔记(六)- 数据类型一

  • 相关阅读:
    pycharm使用常见设置
    LeetCode OJ:Insertion Sort List (插入排序链表)
    LeetCode OJ:Reverse Linked List (反转链表)
    Foundations of Qt Development 学习笔记 Part1 Tips1-50
    TCPL学习毕节:第六章hash表
    TCPL学习笔记:4-12以及4-13。关于使用递归的问题。
    几种常见排序算法的C++描述
    一些灵巧的求并算法
    vs中: 错误,未定义的标识符getline 的解决方法
    QT中给程序加上主界面的图标
  • 原文地址:https://www.cnblogs.com/xz1024/p/5681320.html
Copyright © 2020-2023  润新知