繁体   English   中英

保存时间戳和IP地址

[英]Saving timestamp and IP address

当用户访问时,我将IP地址和他们访问的时间保存到一个文本文件中(此文件受保护并且不能公开访问)。

PHP是:

  <?php $file = "ipaddresses.txt"; $timestamp =date('l jS \\of FY h:i:s A'); $f=fopen($file, 'a+'); fwrite($f,$_SERVER['REMOTE_ADDR'], $timestamp."\\n"); fclose($f); ?> 

我认为我只是将第二个timestamp标记放置在错误的位置,但是即使我使用其他形式节省了时间,也只是一次发布了所有输入,但似乎无法使用REMOTE ADDR弄清楚它。

看起来很简单,但我迷路了,因此不胜感激。

EDIT 1:

请查看更新的代码;

 <?php $file = "ipaddresses.txt"; $timestamp =date('l jS \\of FY h:i:s A'); $f=fopen($file, 'a+'); $info = $_SERVER['REMOTE_ADDR'] . $timestamp . "\\n"; fwrite($f, $info); fclose($f); ?> 

fwrite()只接受两个参数; 文件和要写入的信息。

这样,您可能希望将IP和时间戳连接为一个字符串:

fwrite($f, $_SERVER['REMOTE_ADDR'] . $timestamp . "\n");

要么:

$info = $_SERVER['REMOTE_ADDR'] . $timestamp . "\n";
fwrite($f, $info);
<?php
$file = "ipaddresses.txt";
$timestamp =date('l jS \of F Y h:i:s A');
$f=fopen($file, 'a+');
$info = $_SERVER['REMOTE_ADDR'] . $timestamp . "\n";
fwrite($f, $info);
fclose($f);
?>
function getRealIpAddr(){
    if(isset($_SERVER["HTTP_CF_CONNECTING_IP"])){
        $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
        $_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
    }
    $client  = @$_SERVER['HTTP_CLIENT_IP'];
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
    $remote  = $_SERVER['REMOTE_ADDR'];
    if(filter_var($client, FILTER_VALIDATE_IP)){
        $ip = $client;
    } elseif(filter_var($forward, FILTER_VALIDATE_IP)){
        $ip = $forward;
    } else{
        $ip = $remote;
    }
    return $ip;
}

$Ip_Address = getRealIpAddr();
$Timestamp = date("Y-m-d H:i:s");
$array = array("IP"=>$Ip_Address,"Timestamp"=>$Timestamp);
$myfile = fopen("ipaddresses.txt", "a+") or die("Unable to open file!");
fwrite($myfile, json_encode($array));
fclose($myfile);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM