创建访客唯一ID?

时间:2009-12-08 09:47:52

标签: php javascript

我计划创建访问者唯一ID并命名为日志文件,因为现在我使用IP访问者作为日志文件名即logs / 127.0.0.1.php但我认为这不是足够因为有些访客使用共享PC的IP地址。

访问者日志文件本身作为访问者自身配置的设置位置,因此我计划添加另一个唯一ID来标识每个不同的访问者,所以让我们说日志文件: logs / 127.0.0.0.1-t3451dq.php,-t3451dq作为唯一ID 所以只要访问者在我的网站上浏览唯一的日志文件作为每个用户的设置配置(因为我使用纯文本)

目前我使用:

<?
$filename = "./logs/".$_SERVER['REMOTE_ADDR'].".php" ; //out put logs/127.0.0.1.php
$data stripcslashes($data);
// each Visitor configuration here...
// bla...bla...

/* Writing file configurations */
    $buat = fopen($filename, "w+");
    fwrite($buat, "$data");
    fclose($buat);
?>

所以我需要$ filename添加$ unique ID作为其日志文件的名称。任何想法如何做到这一点?

4 个答案:

答案 0 :(得分:10)

尝试uniqid

您可以将此唯一ID存储在用户会话或Cookie中。

示例(未测试)

session_start();
if(!isset($_SESSION['uniqueID']))
{
    $_SESSION['uniqueID'] = uniqid();
}
$filename = "./logs/".$_SESSION['uniqueID'].$_SERVER['REMOTE_ADDR'].".php" ;

使用会话意味着如果同一个用户关闭其浏览器(或会话过期),他们将获得一个新ID,这可能是您想要的,也可能不是。

如果您想要更持久的跟踪器,那么您可能更好地使用cookie,并将ID存储在cookie中(如果不存在cookie,则创建一个新ID)。

if(!isset($_COOKIE['uniqueID']))
{
    $expire=time()+60*60*24*30;//however long you want
    setcookie('uniqueID', uniqid(), $expire);
}
$filename = "./logs/".$_COOKIE['uniqueID'].$_SERVER['REMOTE_ADDR'].".php" ;

如果您无法使用Cookie /会话,则可能需要在您的网址查询字符串中传递ID,例如mypage.php?ID = 35dfgdfg3434

答案 1 :(得分:0)

在他第一次进入页面时,用他的IP创建一些东西。这应该是独一无二的。

答案 2 :(得分:0)

您有两个简单的选项:uniqid或创建文件时tempnam

Tempnam示例:

function log($string, $userIP = null, $filename = null){
  // Check if filename exists
  if(!file_exists(LOG_PATH.$filename)){
    $filename = tempname(LOG_PATH, $userIP.' - ');
    if(!$filename){
      return false;
    }
  }
  // write log into file
  $file = file_put_contents($filename, $string);
  if($file === false || $file != strlen($string)){
    return false;
  }
  return $filename
}

答案 3 :(得分:0)

使用日志文件进行此类使用是不必要的,将这种类型的数据分流到数据库会更容易。如果它只是临时数据,那么使用Cookie和/或会话