这段代码中存在以下问题:

  1. 文件写入和数据库插入操作没有进行错误处理,需要添加相应的错误处理代码。
  2. 访客信息没有进行过滤,容易受到恶意攻击或注入。
  3. 访客信息没有加密,存在安全隐患。
  4. 没有统计访问量。

优化后的代码如下:

//获取访客的IP地址
$ip = $_SERVER['REMOTE_ADDR'];

//获取访客的浏览器信息
$browser = $_SERVER['HTTP_USER_AGENT'];

//获取访问时间
$time = date('Y-m-d H:i:s', time());

//获取访问页面的URL
$url = $_SERVER['REQUEST_URI'];

//过滤访问记录
if(strpos($url, 'script') !== false || strpos($browser, 'bot') !== false){
  //恶意攻击或注入,不记录
} else {
  //加密访客信息
  $ip = md5($ip);
  $browser = md5($browser);

  //将访客信息拼接成字符串
  $record = $ip . '\t' . $time . '\t' . $browser . '\t' . $url . '\r\n';

  //将访客记录写入文件
  $file = fopen('record.txt', 'a+');
  if($file){
    if(fwrite($file, $record)){
      echo '记录成功';
    } else{
      echo '记录失败';
    }
    fclose($file);
  } else {
    echo '文件打开失败';
  }

  //将访客记录写入数据库
  $servername = 'localhost';
  $username = 'username';
  $password = 'password';
  $dbname = 'dbname';

  $conn = new mysqli($servername, $username, $password, $dbname);

  if($conn->connect_error){
    die('数据库连接失败:' . $conn->connect_error);
  }

  $sql = 'INSERT INTO visitor_record (ip_address, browser_info, visit_time, visit_url)
  VALUES (' . $ip . ', ' . $browser . ', ' . $time . ', ' . $url . ')';

  if($conn->query($sql) === TRUE){
    echo '记录成功';
  } else{
    echo '记录失败:' . $conn->error;
  }

  $conn->close();
}

//统计访问量
$conn = new mysqli($servername, $username, $password, $dbname);

if($conn->connect_error){
  die('数据库连接失败:' . $conn->connect_error);
}

$sql = 'SELECT COUNT(*) FROM visitor_record';
$result = $conn->query($sql);

if($result){
  $row = $result->fetch_row();
  echo '访问量:' . $row[0];
} else{
  echo '查询失败:' . $conn->error;
}

$conn->close();

这段代码中,我们对以下几个方面进行了优化:

  • 错误处理: 添加了错误处理代码,确保文件写入和数据库插入操作成功完成。
  • 恶意访问过滤: 使用 strpos 函数过滤了含有 'script' 和 'bot' 的访问记录,避免恶意攻击或注入。
  • 加密访客信息: 使用 md5 函数对访客的 IP 地址和浏览器信息进行加密,保护用户隐私。
  • 统计访问量: 使用 SQL 语句查询数据库,统计网站的总访问量。

经过优化后的代码更加安全、高效,同时还能方便地统计网站的访问量,为网站运营提供数据支持。

网站访客记录优化:安全、高效、统计

原文地址: https://www.cveoy.top/t/topic/l6b8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录