2009-12-08 6 views
5

Я планирую создать уникальный идентификатор посетителя и назван как файл журнала, поскольку существующий теперь я использую посетителя IP как имя файла журнала, т.е. logs/127.0.0.1.php, но я думаю, что это не достаточно, потому что некоторые посетители, IP-адрес для ПК.создать посетителя уникальный идентификатор?

Файл журнала посетителя сам по себе как место настройки конфигурации самих посетителей, поэтому я планирую добавить еще один уникальный идентификатор, чтобы идентифицировать каждого посетителя, так что скажем, файл журнала: logs/127.0.0.0.1-t3451dq.php , -t3451dq, как уникальный идентификатор так долго, как просмотр посетителей на моем сайте уникальный файл журнала как настройки конфигурации для каждого пользователя (потому что я использую обычный текст)

в настоящее время я использую:

<? 
$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 в качестве имени своего файла журнала. Любые идеи, как это сделать?

+0

О, да, я забыл сказать, что на моем сайте не требуется заменяться как член ... уникальный файл журнала посетителя доступен для анонимного пользователя. но как идентифицировать неизвестный IP-адрес и дать уникальный идентификатор? – jones

+1

Когда-либо думал о том, что вы используете только файлы cookie, если вам нужно только сохранить конфигурацию для пользователя? –

+0

Да, я думаю, используя куки-файлы, которые возможно ... – jones

ответ

9

Пробег: uniqid.

Вы можете сохранить этот уникальный идентификатор в сеансе пользователей или в файле cookie.

Пример (не тестировалось)

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

Использование сессии будет означать, что если тот же пользователь закрывает браузер (или сессии истекает) они получат новый идентификатор, который может или не может быть то, что вы хотеть.

Если вам нужен более постоянный трекер, тогда вы можете лучше использовать файлы cookie и сохранить идентификатор в файле cookie (создать новый идентификатор, если cookie не существует).

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/сеанс, вам может потребоваться передать идентификатор в строке запроса URL-адреса, например. mypage.php? id = 35dfgdfg3434

+0

Спасибо большое ... Я был прочитал вашу ссылку на url выше, но есть много примеров, и я очень новичок php-код, поэтому я путаю, что еще один подходящий для исправьте мой случай, может быть, кто-то здесь может дать мне ясный пример кода, поэтому я получаю решение для моего уникального идентификатора посетителя сайта как имя файла журнала, еще раз спасибо – jones

+0

Я добавил код, который может быть полезен. Предоставляется как есть. – row1

+0

Приятный вход, я попробовал оба из вашего примера кода, но я сталкиваюсь с некоторыми проблемами, что он больше не создает файл журнала Предупреждение: fopen (./logs/4b1e7d0f88597127.0.0.1.php) [function.fopen]: не удалось открыть поток: нет такого файла или каталога в C: \ xampp \ htdocs \ games \ inc \ iplog.conf.php в строке 35 Предупреждение: fwrite(): предоставленный аргумент не является допустимым ресурсом потока в C: \ xampp \ htdocs \ games \ inc \ iplog.conf.php в строке 36 Почему? – jones

0

Создайте что-нибудь из своего IP-адреса и в первый раз, когда он заходит на страницу. Это должно быть уникальным.

+0

, конечно, вы, но, как я уже говорил, используя только IP-адрес, его недостаточно близко, потому что многие пользователи также используют общий доступ для многих посетителей, поэтому используя идентификатор сеанса или файлы cookie что можно сделать уникальным – jones

+1

, поэтому я сказал, что сделал что-то из IP * И * при первом входе на страницу. Очень маловероятно, что два пользователя из одного и того же ip вводят страницу на той же миллисекунде. – TheHippo

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 
} 
+0

Благодарю вас за внимание, но извините, у вас есть какой-то опытный пример с использованием uniqid и tempnam? – jones

+0

Я попытался использовать tempname, я вижу, что результат tempname обычно восстанавливает имя файла журнала, не то же самое в каждом клике и обновлении сайта ... как вы видите мой комментарий ниже, я попытался использовать идентификатор сеанса, а также файлы cookie, но я обнаружены проблемы, когда я звоню из другого файла, используя include или require – jones

0

с помощью лог-файлов для данного типа использования ненужно, это намного проще просто шунтируйте этот тип данных в базу данных. Если это всего лишь временные данные, используйте Cookies и/или сеансы

+0

ok, Спасибо .. , но при использовании файлов cookie и/или сеансов id в качестве файла журнала temp в качестве пользовательской конфигурации запрошенный временной журнал никогда не завершается. то есть Я помещаю этот код на другую страницу $ filelog1 = "./logs/".$_COOKIE['uniqueID']."_".$_SERVER['REMOTE_ADDR'].".php"; $ filelog2 = "./l0g5/default.php"; \t if (file_exists ($ filelog1)) { require_once $ filelog1; } else { require_once $ filelog2; } echo "$ filelog1, $ filelog2"; // test ответы в браузере сказали: Сайт перенаправляет запрос таким образом, который никогда не будет завершен. что это за проблема? – jones

Смежные вопросы