Foros
Menú principal
Inicio Foros Grupos Mi Cuenta Buscar Web
Foro de Portal DragonFlyCMS, CPGNuke : Información y Soporte sobre DragonFlyCMS, antiguo CPGNuke, el CMS para construir Portales Web y que integra su propia versión de foros PhpBB, galerias de fotos, y muchas cosas mas
Página 1 de 1 - Tema con 4 Mensajes y 17569 Lecturas
Último Mensaje Publicado: Jue Mar 06, 2008 1:11 am
Autor
Mensaje
oliver
Invitado
Votos: 0 👍
Asunto: Problemas con IP en web DragonflyCMS
Publicado: Mar Mar 04, 2008 2:34 pm
Tengo instalado CPGNuke y me he dado cuenta que las IP se están guardando mal.
Mi servidor tiene las siguientes caracteristicas:
CMS Version: 9.2.0.RC2
PHP Version 5.0.4
MySQL Version 4.1.20 (client: 4.1.20)
Server API Apache 2.0 Handler
¿Podeis echarme una mano?
Ir arriba
Compartir:
Aforo
Junior Registrado:18-02-2008 Mensajes: 257
Votos: 0 👍
Asunto: Re: Problemas con IP en web DragonflyCMS
Publicado: Mar Mar 04, 2008 5:48 pm
Bienvenido al foro.
Veo que tienes una versión de PHP inferior a la 5.2 (PHP Version 5.0.4) en esa versión los comandos
inet_ntop y
inet_pton de PHP estaban implementados, pero no funcionaban correctamente.
Supongo que no puedes actualizar tu servidor a una version de PHP posterior a la 5.2, asi que te voy a proponer darle un "cambiazo".
Vete a la linea 603 del Fichero "includes/cmsinit.inc" y encontrarás lo siguiente:
Quote::
# IP Handling
function encode_ip($ip) {
if (PHPVERS >= 43) { $backtrace = debug_backtrace(); }
$backtrace = empty($backtrace) ? array('file' => 'unknown', 'line' => 0) : $backtrace[0];
trigger_error("DEPRECATED call to <a href=\"http://dragonflycms.org/$function\">$function</a>() by {$backtrace['file']} on line {$backtrace['line']}.", E_USER_WARNING);
return inet_pton($ip);
}
function ip2long32($ip, $unsigned=false) {
$ip = ip2long($ip);
if ($ip > 2147483647) { $ip -= 4294967296; } // pow(2,32)
if ($unsigned && $ip < 0) { $ip += 4294967296; }
return $ip;
}
function decode_ip($ip) {
global $db;
$ip = $db->unescape_binary($ip);
$l = strlen($ip);
if ($l == 5 || $l == 17) { --$l; $ip = substr($ip,0,-1); }
if ($l == 4 || $l == 16) {
return inet_ntop($ip);
} else if ($l == {
$ip = explode('.', chunk_split($ip, 2, '.'));
return hexdec($ip[0]).'.'.hexdec($ip[1]).'.'.hexdec($ip[2]).'.'.hexdec($ip[3]);
} else if (preg_match('#^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})#', $ip, $match)) {
return $match[1];
}
return long2ip($ip);
}
Las funciones encode_ip($ip) y decode_ip($ip) son las encargadas de decodificar y codificar las IP.
Yo las he modificado de la siguiente manera:
Quote::
# IP Handling
function encode_ip($ip) {
if (PHPVERS >= 43) { $backtrace = debug_backtrace(); }
$backtrace = empty($backtrace) ? array('file' => 'unknown', 'line' => 0) : $backtrace[0];
trigger_error("DEPRECATED call to <a href=\"http://dragonflycms.org/$function\">$function</a>() by {$backtrace['file']} on line {$backtrace['line']}.", E_USER_WARNING);
return my_inet_pton($ip);
}
function ip2long32($ip, $unsigned=false) {
$ip = ip2long($ip);
if ($ip > 2147483647) { $ip -= 4294967296; } // pow(2,32)
if ($unsigned && $ip < 0) { $ip += 4294967296; }
return $ip;
}
function decode_ip($ip) {
$l = strlen($ip);
if ($l == 5 || $l == 17) { --$l; $ip = substr($ip,0,-1); }
if ($l == 4 || $l == 16) {
return my_inet_ntop($ip);
} else if ($l == {
$ip = explode('.', chunk_split($ip, 2, '.'));
return hexdec($ip[0]).'.'.hexdec($ip[1]).'.'.hexdec($ip[2]).'.'.hexdec($ip[3]);
} else if (preg_match('#^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})#', $ip, $match)) {
return $match[1];
}
return long2ip($ip);
}
function my_inet_ntop($ip) {
if (strlen($ip)==4) {
// ipv4
list(,$ip)=unpack('N',$ip);
$ip=long2ip($ip);
} elseif(strlen($ip)==16) {
// ipv6
$ip=bin2hex($ip);
$ip=substr(chunk_split($ip,4,':'),0,-1);
$ip=explode(':',$ip);
$res='';
foreach($ip as $seg) {
while($seg{0}=='0') $seg=substr($seg,1);
if ($seg!='') {
$res.=($res==''?'':':').$seg;
} else {
if (strpos($res,'::')===false) {
if (substr($res,-1)==':') continue;
$res.=':';
continue;
}
$res.=($res==''?'':':').'0';
}
}
$ip=$res;
}
return $ip;
}
### function inet_pton By djmaze@dragonflycms.org ###
function my_inet_pton($ip)
{
# ipv4
if (strpos($ip, '.') !== FALSE) {
$ip = pack('N',ip2long($ip));
}
# ipv6
elseif (strpos($ip, ':') !== FALSE) {
$ip = explode(':', $ip);
$res = str_pad('', (4*(8-count($ip))), '0000', STR_PAD_LEFT);
foreach ($ip as $seg) {
$res .= str_pad($seg, 4, '0', STR_PAD_LEFT);
}
$ip = pack('H'.strlen($res), $res);
}
return $ip;
}
He incluido dos funciones que hacen lo mismo, pero funcionan con PHP 5.0 e incluso con versiones anteriores de PHP 4.
Y me funciona...
Pruebalo y si eres tan amable me dices algo.
_________________ http://www.aforo.es (La web de los foros divertidos)
Ir arriba
Compartir:
oliver
Invitado
Votos: 0 👍
Ir arriba
Compartir:
Aforo
Junior Registrado:18-02-2008 Mensajes: 257
Votos: 0 👍
Asunto: Re: Problemas con IP en web DragonflyCMS
Publicado: Jue Mar 06, 2008 1:11 am
Me alegro... paso el tema al foro de DragonFly
_________________ http://www.aforo.es (La web de los foros divertidos)
Ir arriba
Compartir:
Todas las horas son GMT + 1 Hora
Página 1 de 1 - Tema con 4 Mensajes y 17569 Lecturas - Última modificación: 06/03/2008
RSS - Ultimos Mensajes
Puede publicar nuevos temas en este foroNo puede responder a temas en este foroNo puede editar sus mensajes en este foroNo puede borrar sus mensajes en este foroNo puede votar en encuestas en este foroNo Puedes adjuntar archivos en este foro Tu puedes descargar archivos en este foro