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é.

  1. 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í?
  2. 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íš.
  3. 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).
  4. 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.
  5. >> 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.
  6. 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'])); } } ?>
  7. 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 (); ?>

← Zpět na všechna témata