buffer
7 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Sehnal jsem funkci Get_Visitor_Identifier(), je na identifikaci uživatele. Najdete ji na: http://unas.unas.cz/visitor.txt Problém je v tom, že mi ta funkce cosi posílá na výstup (ještě jsem nezjišťoval co). Nevidím tam ale žádné echo ani set_cookie, takže se tomu divím. Když funkci neuzavřu mezi: Ob_Start(); $visitor = Get_Visitor_Identifier(); Ob_End_Clean(); Tak už se mi patrně neodešlou XML hlavičky na konci skriptu a díky tomu nic nefunguje tak jak má. Na webzdarma jsem tyhle problémy neměl, ale na placeném hostingu vznikly (PHP 4.4.2). Napadá vás vysvětlení?
-
Co děláš s tím returnem? Tenhle skript po zběžném shlédnutí nic nevypisuje... zkus tu fci spustit v jinak prázdném dokumentu a uvidíš.
-
IMHO by bylo zahodno skript prepsat, aby pouzival superglobalni $_SERVER['REMOTE_ADDR'] misto $REMOTE_ADDR a podobne, protoze skript nebude fungovat, pokud jsou vypnuty register_globals, coz muze byt ten rozdil mezi wz (reg. glob. zapnute) a tim druhym hostingem (nevim, jestli by to mohlo vypisovat i nejakou chybu).
-
Jé, to zkoušel spustit jenom jako deklaraci funkce, ale ono to vypisuje warning až když tu funkci spustím (no jo pochopitelně :o) Warning: gethostbyaddr(): Address is not a valid IPv4 or IPv6 address in /httpd/html/kolbdancecz/www/include/F_Get_Visitor_Identifier.php on line 72 Takže tý hlášce ale stejnak moc nerozumim. Co je to IPv4 a IPv6? Jinak s tim $_SERVER má donny pravdu. To přepíšu.
-
>> Address is not a valid IPv4 or IPv6 address Zadana adresa neodpovida formatu IP adresy. Proste tam davas neco jineho nez XXX.XXX.XXX.XXX, kde XXX je od 0 do 255. >> Co je to IPv4 a IPv6? Zkracene IP adresa. v4 a v6 jsou verze. Dnes se nejvice pouziva IPv4. IPv6 je "novejsi" verze, ktera se ale nejak masove nepouziva. Rozdil mezi nimi je v rozsahu adres. IPv6 nabizi mnohonasobne vic adres nez IPv4.
-
Jo ták, už mi buňky v mozku seply. Je to jak říkal donny. Register globals je OFF a tak on nezná tu adresu (jak vysvětluje zase Tomík). Díky vám všem. Opravil jsem to všechno na $_SERVER[''] a už to fachá bez warningu. Kdyby to někdo potřeboval, tu je funkční verze. Typické použití - při přihlášení se uloží výstup funkce do $_SESSION[''][''] a při ověřování uživatele se pak porovnává obsah session s aktuálním výstupem funkce. <?php function Get_Visitor_Identifier () { if($_SERVER['HTTP_X_FORWARDED_FOR']) { $b = Ereg("^([0-9]{1,3}\.){3,3}[0-9]{1,3}", $_SERVER['HTTP_X_FORWARDED_FOR'], $array); if ($b && (Count($array)>=1)) { return (GetHostByAddr($array[0])); } else { return ($_SERVER['REMOTE_ADDR'].'_'.$_SERVER['HTTP_VIA'].'_'.$_SERVER['HTTP_X_FORWARDED_FOR']); } } elseif($_SERVER['HTTP_X_FORWARDED']) { $b = Ereg("^([0-9]{1,3}\.){3,3}[0-9]{1,3}", $_SERVER['HTTP_X_FORWARDED'], $array); if ($b && (Count($array)>=1)) { return (GetHostByAddr($array[0])); } else { return ($_SERVER['REMOTE_ADDR'].'_'.$_SERVER['HTTP_VIA'].'_'.$_SERVER['HTTP_X_FORWARDED']); } } elseif($_SERVER['HTTP_X_FORWARDED_FOR']) { $b = Ereg("^([0-9]{1,3}\.){3,3}[0-9]{1,3}", $_SERVER['HTTP_X_FORWARDED_FOR'], $array); if ($b && (Count($array)>=1)) { return (GetHostByAddr($array[0])); } else { return ($_SERVER['REMOTE_ADDR'].'_'.$_SERVER['HTTP_VIA'].'_'.$_SERVER['HTTP_X_FORWARDED_FOR']); } } elseif($_SERVER['HTTP_FORWARDED']) { $b = Ereg ("^([0-9]{1,3}\.){3,3}[0-9]{1,3}", $_SERVER['HTTP_FORWARDED'], $array); if ($b && (Count($array)>=1)) { return (GetHostByAddr($array[0])); } else { return ($_SERVER['REMOTE_ADDR'].'_'.$_SERVER['HTTP_VIA'].'_'.$_SERVER['HTTP_FORWARDED']); } } elseif($_SERVER['HTTP_VIA']) { return ($_SERVER['HTTP_VIA'].'_'.$_SERVER['HTTP_X_COMING_FROM'].'_'.$_SERVER['HTTP_COMING_FROM']); } elseif($_SERVER['HTTP_X_COMING_FROM'] || $_SERVER['HTTP_COMING_FROM']) { return ($_SERVER['REMOTE_ADDR'].'_'.$_SERVER['HTTP_X_COMING_FROM'].'_'.$_SERVER['HTTP_COMING_FROM']); } else { return (MD5(GetHostByAddr($_SERVER['REMOTE_ADDR']).$_SERVER['HTTP_USER_AGENT'])); } } ?>
-
Trochu jsem to prepsal. Co takhle toto: <?php function ip2int($ip) { $ex = explode(".", $ip); if (count($ex)!=4) return -1; list($a, $b, $c, $d) = $ex; $a = $a*16777216; $b = $b*65536; $c = $c*256; $ret = $a+$b+$c+$d; if ($ret<0) {return 0;} else {return $ret;} } /*function by Marc Meurrens*/ function Get_Visitor_Identifier () { if($_SERVER['HTTP_X_FORWARDED_FOR']) { // case 1.A: proxy && HTTP_X_FORWARDED_FOR is defined $b = Ereg ("^([0-9]{1,3}\.){3,3}[0-9]{1,3}", $_SERVER['HTTP_X_FORWARDED_FOR'], $array) ; if ($b && (Count($array)>=1) ) { return ( GetHostByAddr($array[0]) ) ; } // first IP in the list else { return ( ip2int($_SERVER['REMOTE_ADDR']) . '_' . ip2int($_SERVER['HTTP_VIA']) . '_' . ip2int($_SERVER['HTTP_X_FORWARDED_FOR']) ) ; } } elseif($_SERVER['HTTP_X_FORWARDED']) { // case 1.B: proxy && HTTP_X_FORWARDED is defined $b = Ereg ("^([0-9]{1,3}\.){3,3}[0-9]{1,3}", $_SERVER['HTTP_X_FORWARDED'], $array) ; if ($b && (Count($array)>=1) ) { return ( GetHostByAddr($array[0]) ) ; } // first IP in the list else { return ( ip2int($_SERVER['REMOTE_ADDR']) . '_' . ip2int($_SERVER['HTTP_VIA']) . '_' . ip2int($_SERVER['HTTP_X_FORWARDED']) ) ; } } elseif($_SERVER['HTTP_FORWARDED_FOR']) { // case 1.C: proxy && HTTP_FORWARDED_FOR is defined $b = Ereg ("^([0-9]{1,3}\.){3,3}[0-9]{1,3}", $_SERVER['HTTP_FORWARDED_FOR'], $array) ; if ($b && (Count($array)>=1) ) { return ( GetHostByAddr($array[0]) ) ; } // first IP in the list else { return ( ip2int($_SERVER['REMOTE_ADDR']) . '_' . ip2int($_SERVER['HTTP_VIA']) . '_' . ip2int($_SERVER['HTTP_FORWARDED_FOR'] )) ; } } elseif($_SERVER['HTTP_FORWARDED']) { // case 1.D: proxy && HTTP_FORWARDED is defined $b = ereg ("^([0-9]{1,3}\.){3,3}[0-9]{1,3}", $_SERVER['HTTP_FORWARDED'], $array) ; if ($b && (count($array)>=1) ) { return ( GetHostByAddr($array[0]) ) ; } // first IP in the list else { return ( ip2int($_SERVER['REMOTE_ADDR']) . '_' . ip2int($_SERVER['HTTP_VIA']) . '_' . ($_SERVER['HTTP_FORWARDED']) ) ; } } elseif($_SERVER['HTTP_VIA']) { // case 2: // proxy && HTTP_(X_) FORWARDED (_FOR) not defined && HTTP_VIA defined // other exotic variables may be defined return ( ip2int($_SERVER['HTTP_VIA']) . '_' . ip2int($_SERVER['HTTP_X_COMING_FROM']) . '_' . ip2int($_SERVER['HTTP_COMING_FROM']) ) ; } elseif( $_SERVER['HTTP_X_COMING_FROM'] || $_SERVER['HTTP_COMING_FROM'] ) { // case 3: proxy && only exotic variables defined // the exotic variables are not enough, we add the REMOTE_ADDR of the proxy return ( ip2int($_SERVER['REMOTE_ADDR']) . '_' . ip2int($_SERVER['HTTP_X_COMING_FROM']) . '_' . ip2int($_SERVER['HTTP_COMING_FROM']) ) ; } else { // case 4: no proxy // or tricky case: proxy+refresh return ip2int($_SERVER['REMOTE_ADDR']); } } echo Get_Visitor_Identifier (); ?>