У меня есть простой скрипт счетчика посетителя (php), встроенный в мою страницу (я знаю, что это очень неточно и плохо, но с использованием только для тестирования в данный момент):
<?php $file = "counts.html"; //if cookie isn't already set,then increase counts by one + save ip, and set a cookie to pc... $cookie_namee='mycounterr-456'; if (!isset($_COOKIE[$cookie_namee])) { file_put_contents($file, ( !file_exists($file) ? 0: (file_get_contents($file)+1) ) ); setcookie($cookie_namee, "Checked", time()+99999, '/'); } ?>
Есть ли способ получить IP посетителей? (echo $ GET_REMOTE_IP; не работает).
Обычно вы можете получить IP-адрес через переменную $_SERVER['REMOTE_ADDR']
.
Поскольку я не нашел удовлетворительного «достаточно простого» решения, я придумал свой собственный. Создайте пустой файл с именем ip.txt
и используйте его где-нибудь в своем коде:
$ip_all = file("ip.txt"); $ip_cur = $_SERVER['REMOTE_ADDR']."\n"; if (!in_array($ip_cur, $ip_all)) { $ip_all[] = $ip_cur; file_put_contents("ip.txt", implode($ip_all)); } echo "visitors: " . count($ip_all);
Обратите внимание: этот файл может со временем стать несколько большим, в зависимости от количества посетителей, которые вы получаете, поскольку записи не истекают и удаляются как файлы cookie. Но, как уже упоминалось, я хотел, чтобы это было как можно проще и не заботилось об этом. Также я не хочу полагаться на файлы cookie, потому что я сомневаюсь, что веб-сканеры и другие роботы отправят их обратно.
Привет, это то, что я использую для регистрации посетителей ip.
function get_IP() { // ADRES IP if (getenv('HTTP_CLIENT_IP')) $ipaddress = getenv('HTTP_CLIENT_IP'); else if(getenv('HTTP_X_FORWARDED_FOR')) $ipaddress = getenv('HTTP_X_FORWARDED_FOR'); else if(getenv('HTTP_X_FORWARDED')) $ipaddress = getenv('HTTP_X_FORWARDED'); else if(getenv('HTTP_FORWARDED_FOR')) $ipaddress = getenv('HTTP_FORWARDED_FOR'); else if(getenv('HTTP_FORWARDED')) $ipaddress = getenv('HTTP_FORWARDED'); else if(getenv('REMOTE_ADDR')) $ipaddress = getenv('REMOTE_ADDR'); else $ipaddress = 'UNKNOWN'; // return $ipaddress; }
Просто:
<?php $cookie_name = 'counter'; $file = 'count.txt'; if (!isset($_COOKIE[$cookie_name])) { $count = strval(file_get_contents($file)); file_put_contents($file, $count + 1); setcookie($cookie_name, "Checked", time() + 111400); } ?>
Попробуйте simPHP. Это одностраничное решение. https://code.google.com/p/simphp/
Вы можете сохранить немного кода, открыв файл с помощью w +, который автоматически создаст его для вас.
<?php // Inits $file = "/tmp/counts.html"; $cookie_namee='mycounterr-456'; // File, created if !exists $fh = fopen($file, 'w+'); // Get the count, 0 if the file is empty or just created $count = (int)fgets($fh); //if cookie isn't already set,then increase counts //by one + save ip, and set a cookie to pc... if (!isset($_COOKIE[$cookie_namee])) { // Increment and write the new count fwrite($fh, ++$count); setcookie($cookie_namee, "Checked", time() + 111400); } fclose($fh);
Если вам нужен действительно простой способ обеспечить подсчеты по IP или чему-то еще, вы должны проверить Redis .
Если вы хотите, чтобы посетители на вашей странице отображали это под вашим кодом.
<?php include ("counts.html") ?>