Quijost

Webmaster => Programacion Web => PHP => Mensaje iniciado por: Rober en Enero 25, 2011, 19:50:22 pm

Título: Contador de visitas
Publicado por: Rober en Enero 25, 2011, 19:50:22 pm
Buenas,
Me gustaría saber si se podría obtener a través de PHP información de estadísticas del sitio web alojado, ya que se tiene se dispone webanalizer y de analog desde el cpanel, o habría que realizar a mano dichas estadísticas.
Un saludo y gracias
Título: Re:Contador de visitas
Publicado por: Skiros en Enero 25, 2011, 20:08:50 pm
Hola, estamos en servicios mínimos una semana, te responderán a este mensaje a partir del día 1 de febrero.
Gracias por tu paciencia.
Saludos.
Título: Re:Contador de visitas
Publicado por: shakaran en Febrero 01, 2011, 10:27:04 am
Hola y bienvenido Rober,

Es posible obtener información de las estadísticas de tu sitio a través de php. Para cPanel, las estadísticas como bien has comentado se administran con webanalizaer y analog. Normalmente estas estadísticas son alojadas en el propio directorio del usuario (en un directorio privado) que suele ser:
~/tmp/webalizer

Es decir, /home/tuusuarioquijost/tmp/webanalizer.

Por lo tanto, sólo necesitas programar un script php que lea, procese y analice dichos datos para mostrarlos en el lugar y la forma que desees.

Para facilitarte la tarea, te proponemos el siguiente script rápido (aunque es básico y podrías mejorarlo aún mas) que muestra los archivos de webanalizer tanto si son .png o .html:

Código: [Seleccionar]
<?php
$user 
'nombreusuario'# usuario de cpanel quijost
$pass 'contraseña'# contraseña de cpanel quijost
$url 'tudominio.com o tudominio.quijost.com'# no incluir 'http://'

# Obtener los archivos de webalizer, .html o .png
function getFile($file
{
    global 
$user$pass$url;
    return 
file_get_contents('http://' $user ':' $pass '@' $url ':2082/tmp/' $user '/webalizer/' $file);
}

# Alterar y corregir los enlaces para .html y .png
function changeLinks($subject$type
{
    return 
preg_replace("/($type=")(?!http)(.*?)"/is","$1$PHP_SELF?$2"$subject);
}

if(!empty(
$_SERVER['QUERY_STRING'])) 
{
    
# Obtener el archivo si es .png o .html
    
$page getFile($_SERVER['QUERY_STRING']);

    
#Si es png, alterar el encabezado
    
if(strpos($_SERVER['QUERY_STRING'],'.png') !== false
        
header("Content-type: image/png");
    
# Cambiar el src de los .png
    
else $page changeLinks($page'src');

}
else 
{
    
$page getFile('index.html'); # Obtener el index
    
$page changeLinks($page'href'); # Cambiar enlaces
    
$page changeLinks($page'src'); # Cambiar el src de .png
}

# Mostrar los datos
echo $page;

Título: Re:Contador de visitas
Publicado por: Rober en Febrero 02, 2011, 21:26:36 pm
Buenas,
Gracias por responder tan rápido.
He probado el código que pusiste como ejemplo, y cuando se ejecuta aparece un error del tipo: Warning: fopen() [function.fopen]: http:// wrapper is disabled in the server configuration by allow_url_fopen=0 [...] .
No estoy muy seguro (acabo de empezar con PHP), pero creo que para poder utilizar la función file_get_contents debería estar habilitada la opción allow_url_fopen, ¿estoy confundido?, y por lo que parece, está deshabilitada.
¿Se puede habilitar la opción allow_url_fopen para que funcione? ¿O existe otra manera para poder usar las estadísticas?
Un saludo y muchas gracias.
Título: Re:Contador de visitas
Publicado por: Rober en Febrero 02, 2011, 23:38:30 pm
Hola de nuevo,
Navegando por ahí, encontré la solución...y parece que funciona. La solución es usar las librerías curl de PHP. Aquí pongo un código de ejemplo para leer una url (equivalente al function getFile($file)):
Código: [Seleccionar]
<?php
$ch 
curl_init();
$timeout 5// set to zero for no timeout
curl_setopt ($chCURLOPT_URL'http://example.com');
curl_setopt ($chCURLOPT_RETURNTRANSFER1);
curl_setopt ($chCURLOPT_CONNECTTIMEOUT$timeout);
$file_contents curl_exec($ch);
curl_close($ch);

// display file
echo $file_contents;
?>



Os dejo el enlace ****** donde podéis obtener más informaición.
Saludos y gracias por todo.

Editado: no permitimos vincular a competencia de terceros. De todas formas el mejor enlace de curl de php es la propia documentación de php http://php.net/manual/es/book.curl.php