Как мне создать уникальный идентификатор для каждого нового посетителя? - PullRequest
1 голос
/ 20 апреля 2011

мой вопрос: как создать уникальный идентификатор (который будет идти в конце URL, например, http://example.com/?id=12345) для каждого уникального посетителя, который посещает мой сайт. Мне также интересно, как отслеживать IP-адрес посетителей , так что они получают только один идентификатор / ссылку. Другими словами, как создать скрипт, который генерирует один уникальный идентификатор для каждого IP-адреса. Короче говоря, я хочу сценарий, который генерирует уникальный идентификатор для каждого нового посетителя. Так, например: идентификатор посетителя 1 = http://example.com/?id=12345, идентификатор посетителя 2 = http://example.com/?id=77369, и т. д. Спасибо.

Ответы [ 6 ]

6 голосов
/ 20 апреля 2011

Проще всего использовать session_start и session_id .

 session_start();
 $id = session_id();

Затем вы можете сохранить $ id и связать его с чем угодно вбаза данных или что-то еще.

Альтернатива, просто сохраните очень точную временную метку в микросекундах

$id = microtime();

Или создайте строку в базе данных для пользователя и используйте первичный ключ строки.

4 голосов
/ 20 апреля 2011

Все ответы могут быть включены достаточно просто. Однако то, о чем вы, возможно, не задумывались, - это то, что происходит, когда несколько пользователей совместно используют IP. Например, все сотрудники Google или все пользователи AOL или Juno могут использовать 100 ips для всех из них. Что делать, если они получают новые IP-адреса каждые 10 - 25 дней.

Идея, лежащая в основе данных, заключается в том, что она имеет смысл. Как ваши данные будут значимыми? IP мог быть 12-летний ребенок из северной части штата Нью-Йорк один день и 40-летняя женщина из Хакенсак Нью-Джерси на следующий. Что хорошего в том, чтобы реализовать такую ​​систему, кроме усложнения вашего кода?

Мой совет: Пересмотрите ваши требования. Что вы действительно пытаетесь достичь? Может быть лучше внедрить простой cookie для отслеживания уникальных посетителей. Это все еще не будет на 100% точным (как насчет людей, которые посещают интернет-кафе, все платят за использование одного компьютера?). Но это сделало бы код гораздо менее сложным, не добавляя каждый URL со всеми дополнительными параметрами.

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

2 голосов
/ 20 апреля 2011

Как насчет создания чего-то очень уникального, как это.

$ip = $_SERVER['REMOTE_ADDR'];
$m_time = mircotime();

$unique_id = md5($ip . $m_time . rand(0, time()));

Надеюсь, это поможет, спасибо

2 голосов
/ 20 апреля 2011

Если это нормально, что вы, вероятно, получите дубликат через несколько миллионов (или 100 миллионов, кто знает) - тогда самый простой способ - использовать uniqid('', true)

Если нет - тогда создайте некоторую последовательность в базе данных иувеличивайте его для каждого нового пользователя.

0 голосов
/ 29 апреля 2017

Этот код генерирует уникальный идентификатор на основе device name и IP address и device language:

  <?php
    preg_match('/\((.*?)\)/', $_SERVER['HTTP_USER_AGENT'], $matches, PREG_OFFSET_CAPTURE);
    $device_name = $matches[0][0];
    $unique_id=md5($device_name.$_SERVER['REMOTE_ADDR'].$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
    echo $unique_id;
  ?>
0 голосов
/ 12 ноября 2015

Мои 2 цента должны использовать таблицу пар SQL: [id, ip].Убедиться, что ваш доступ к базе данных «атомарный».То есть никто не может встать между вашим чтением и дополнительной записью в базу данных.для больше чтения get (ip) вернет идентификатор, если существуетили сгенерирует новую запись и вернет новый идентификатор (простой метод +1).

Я могу придумать много вариантов вышеизложенного.Итог: используйте simple sql table с простым инкрементным методом.

...