Извеждане на IP и Хост на хората намиращи се на страницата

VoodooNet

Registered
Трябва ми скрипт които да извежда IP и Хост на хората намиращи се на страницата в момента.

Например:

На линия: 192.194.445.667 с хост btc-net.com
 
PHP:
<?php

$ip=$_SERVER['REMOTE_ADDR'];
$hostname=gethostname();

echo "Вашето IP е:".$ip."<br>";
echo "Вашето име на хост:".$hostname."<br>";


?>
 
Не точно. Аз искам да виждам тези които разглеждат в момента сайта.
Ще го ползвам като админ мониторинг...
 
Ами тука вече може да го направиш като всеки влязъл в сайта да си създаде сессия. И докато тази сесия е валидна да ти записва на потребитела ИП, ХОСТ в един .txt файл или база данни и обратното ако е невалидно да трие записите на тези сесси. И ти вече ще си ги вадиш резултатите при твоя админ панел.


Даже да си създаде coockie за 5мин. е по-добър вариянт от сессия. Така на всеки 5 мин записите ще се трият с бисквитката и нали ако той си е акитвен още, ще зареди нова бисквитка.

Това е според мен.
 
Ще пробвам да го напиша малко по-късно, че имам малко домакинска работа в момента. Предполагам не е кой знае колко сложно.
 
Мисля, че съм готов. Но ще се радвам да бъде проверено също и от другите хора и да чуя тяхното мнение и ще го направя урок по-късно.



Също така може да си сложиш един регулярен израз за ИП-то като се качва в DB.
И на hostname htmlspecialchars i addslashes.




Първо:

Направи си база данни с име " cu "
Направи си таблиза с име " cu "
Направи си 3 полета : ip, hostname, vreme

Направи ip varchar(200)
Направи hostname varchar(200)
Направи vreme varchar(200)

Времето е unixtimestamp порпинцип такаче може и (int) да си ги направиш-няма проблеми.

Ето го и кода.

ПОПЪЛНИ СИ mysql_connect - с твойте връзки.

PHP:
<?php
session_start();
include 'functions.php';
mysql_connect('localhost', 'ИМЕТО ЗА ВРЪЗКА С БАЗАТА ДАННИ', 'ПАРОЛАТА');
mysql_select_db('cu');
 

$time=time();

if($_COOKIE['sesscheck']!=true) {





    

    
    $duration = time() + (60 * 5); // 5 min, може да си го направиш по твой избор колкото искаш
    $cc=setcookie('sesscheck', 'on', $duration, '/');


if($cc) {
    $_COOKIE['sesscheck']=true;
    
    $ip=$_SERVER['REMOTE_ADDR'];
    $hostname=gethostname();

       
            mysql_query("INSERT INTO `cu`(`ip`,`hostname`,`vreme`) VALUES ('$ip','$hostname', '$time')");
            
            


         }
    
}

$time_check=$time-300; //Трябва да е равно на времето зададено на cookie то
mysql_query("DELETE FROM `cu` WHERE vreme<$time_check");


?>
<html lang="en-US" xml:lang="en-US" xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
 </head>
 <body>
<?php
//Да приемем, че това е админ панела.

$online_row=mysql_query("SELECT * FROM `cu` ");

$online_obshto=mysql_num_rows($online_row);
echo "В момента има: ".$online_obshto." гост в сайта<br><br><br>";

while($online=mysql_fetch_assoc($online_row)){

    echo "<table border='1'>";
        echo "<tr><td>".$online['ip']."</td>";
        echo "<td>".$online['hostname']."</td>";
    echo "</tr></table>";

}
?>
 </body>
</html>
 
include 'functions.php'; <-- това го махнах тъй като няма такъв файл.

след теста ми изкара следната грешка:
Код:
Fatal error: Call to undefined function gethostname() in C:\AppServ\www\users.php on line 26
 
Работи за php (PHP >= 5.3.0). Имаш старичка версия. Ъпдейтни си php.


Ето за тази функция повече неща. http://www.php.net/manual/en/function.gethostname.php
В този линк има описани други подобни на тази функции, ползвай тази кояти ти върши работа.


Да include не ти трябва, забравил съм го.
 
Няма ли алтернатива работеща на това: Apache/2.2.8 (Win32) mod_ssl/2.2.8 OpenSSL/0.9.8g PHP/5.2.6 Server at 127.0.0.1 Port 80
 
Незнам, не мога да ти кажа.

Ъпдейтни си го. Да няма проблем и така.

Провери и другите функции в линка който ти пратих. В ляво има меню там са.
А пък най-отгоре след като избереш функция пише с коя версия е съвместимо.
 
Замени gethostname() със php_uname("n") ;) Останалото от кода не съм го гледал, но накратко не ми се видя много читав кода. Ако ще се ползват база данни за какво са му бисквитки ?
 
Попринцип това същото става и по IP само. Но го направих със coockie. Така примерно ще покаже по-точен резултат, от колкото ако засичаме IP.

Защото примерно ако в една мрежа, дори домашна ако влезнат 3 ма човека в сайта и ако кода е нагласен по IP, то тогава за резултат ще се покаже " Имате 1 гост в сайта" вместо " имате 3 ма гости в сайта ". Все пак 3 мата човека от домашната мрежа ползват едно и също IP (нали са вързани към един рутер).

Докато cookie-то си е напълно самостоятелно. Гледа само браузера.
 
А какво ти пречи да запазиш всяко влязло IP ? Ти няма да правиш проверка дали е записано вече, така че не виждам какъв е проблема.
 
Добре, направи го така с IP и дай refresh на страницата 50 пъти и виж резултата колко online ще име.
 
И пак не разбрах за какво му е cookie ? Аз бих ползвал сесия. Така или иначе тя се трие при излизане от сайта.
А другия въпрос е, защо му е да отчита и локалите въобще ? Ще удари бан на единия и така ще изгърмят, така или иначе, и другите.
 
Ами за сесията, също няма да отчете правилно :D . Ако примерно идеш на море и си забравиш пуснат браузера няколко дена, ще си нон-стоп online да пълниш базата данни ?

Колкото до това с IP-то и банна, това си е съвсем друг въпрос според мен.
 
Добре, сега искам да направиш една сесия, да оставиш браузъра пуснат и да отидеш на море. След като се върнеш ми кажи резултата дали е този, който ти твърдиш.

П.П. Много ме боли гърлото :( :D :D :D
 

Back
Горе