浪迹༣ 2024-01-13 13:02 采纳率: 88.2%
浏览 3
已结题

怎么记录用户信息到日志里面?

这是一个接口转发的程序,需要实现两个功能:
1、现在需要做一个记录日志,将用户的提交IP或者域名、提交日期、uid等参数记录在日志文件里面,日志以当天日期命名,即一天一个日志文件。
2、当用户ip为某个指定IP时侧拒绝转发。
请帮助完善代码。
<?php
// 接收原始请求参数
$uid = $_REQUEST['uid']; // 企业ID
$pwd = $_REQUEST['pwd']; // 密码
$mobile = $_REQUEST['mobile']; // 号码
$content = $_REQUEST['content']; // 内容
// 构造新接口的请求参数
$post_data = array(
    'userid' => $uid,
    'account' => $uid,
    'pwd' => $pwd,
    'mobile' => $mobile,
    'content' => $content,
    'action' => 'send',
    'rt' => 'json'
);
// 构造请求字符串
$post_items = [];
foreach ($post_data as $key => $value) {
    $post_items[] = $key . '=' . urlencode($value);
}
$post_string = implode('&', $post_items);
// 初始化cURL
$url = 'http://www.alisms.cn/smsGBK.aspx';
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 发送请求并获取结果
$result = curl_exec($ch);
curl_close($ch);
// 输出结果
echo $result;
?>


  • 写回答

4条回答 默认 最新

  • GISer Liu 2024-01-13 13:04
    关注

    该回答引用自GPT-4,由博主GIS_Liu编写:

    这是一个完善后的PHP代码,它实现了您所需的两个功能:

    1. 记录日志:这部分代码获取用户的IP地址和当前日期,并将这些信息连同UID一起记录到以当天日期命名的日志文件中。

    2. 拒绝指定IP的请求转发:代码中设置了一个$blocked_ip变量,您可以在这里指定要拒绝的IP地址。当用户的IP地址与这个指定的IP地址匹配时,程序将输出“Access denied for IP: [用户IP]”并停止执行。

    以下是完整的PHP代码:

    <?php
    // 接收原始请求参数
    $uid = $_REQUEST['uid']; // 企业ID
    $pwd = $_REQUEST['pwd']; // 密码
    $mobile = $_REQUEST['mobile']; // 号码
    $content = $_REQUEST['content']; // 内容
    
    // 获取用户IP地址
    $user_ip = $_SERVER['REMOTE_ADDR'];
    
    // 获取当前日期
    $current_date = date('Y-m-d');
    
    // 指定日志文件名称(以当前日期命名)
    $log_file_name = $current_date . '.log';
    
    // 构造日志内容
    $log_content = "IP: " . $user_ip . " | Date: " . $current_date . " | UID: " . $uid . "\\n";
    
    // 将日志内容写入日志文件
    file_put_contents($log_file_name, $log_content, FILE_APPEND);
    
    // 检查用户IP是否为指定IP,若是,则拒绝转发
    $blocked_ip = '192.168.1.1'; // 这里设置指定的IP地址
    if ($user_ip == $blocked_ip) {
        echo 'Access denied for IP: ' . $user_ip;
        exit;
    }
    
    // 构造新接口的请求参数
    $post_data = array(
        'userid' => $uid,
        'account' => $uid,
        'pwd' => $pwd,
        'mobile' => $mobile,
        'content' => $content,
        'action' => 'send',
        'rt' => 'json'
    );
    
    // 构造请求字符串
    $post_items = [];
    foreach ($post_data as $key => $value) {
        $post_items[] = $key . '=' . urlencode($value);
    }
    $post_string = implode('&', $post_items);
    
    // 初始化cURL
    $url = 'http://www.alisms.cn/smsGBK.aspx';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    // 发送请求并获取结果
    $result = curl_exec($ch);
    curl_close($ch);
    
    // 输出结果
    echo $result;
    ?>
    

    这段代码应该满足您的需求。如果您有任何其他特定的要求或问题,请随时告诉我。

    如果该回答解决了您的问题,请采纳!如果没有,请详述问题所在!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月14日
  • 已采纳回答 1月13日
  • 创建了问题 1月13日

悬赏问题

  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入