Foros del Web » Programando para Internet » PHP »

Contador gráfico exclusivo

Estas en el tema de Contador gráfico exclusivo en el foro de PHP en Foros del Web. Hola amigos : Quisiera saber si se puede conseguir que un contador gráfico solo se incrementase si viniese de una página concreta o solo de ...
  #1 (permalink)  
Antiguo 19/04/2004, 03:33
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.544
Antigüedad: 15 años, 8 meses
Puntos: 1262
Contador gráfico exclusivo

Hola amigos :

Quisiera saber si se puede conseguir que un contador gráfico solo se incrementase si viniese de una página concreta o solo de mi dominio...

Lo tengo con librerías gd y se ve así:

El código es este:

Código PHP:
<?php
function ajuste ($tam$n)    {
//    $res = $n;
    
while (strlen($n) < $tam)    $n "0" .$n;
    return 
$n;
}

Function 
cont ()    {
    
$archi "contador.txt";
    if (
file_exists($archi))    {
        
$fich fopen($archi"r+");
        
$cuenta fgets($fich7);
        
$cuenta ++;
        
rewind($fich);
        
fwrite($fich$cuenta7);
        
fclose($fich);
        }
    else    {
        
$fich fopen($archi"w");
        
$cuenta "1";
        
fwrite($fich$cuenta7);
        
fclose($fich);
        }
    return 
$cuenta;
}

$n ajuste(5cont());

$largo strlen($n);
$digitos = Array($largo);
$imagen = Array($largo);
for (
$i 0$i $largo$i ++)    {
    
$digitos[$i] = substr($n$i1); 
}
header("Content-Type: image/png");
for (
$i 0$ancho 0$i $largo$i ++)    {
    
$im "verde".$digitos[$i].".png";
    
$imagen[$i] = imagecreatefrompng($im);
    
$ancho += imagesx($imagen[$i]);
}
$alto imagesy($imagen[0]);
$_imagen imagecreate($ancho$alto);
$fondoBlanco imagecolorallocate($_imagen255255255);
imagefill($_imagen00$fondoBlanco);
imagecolortransparent($_imagen$fondoBlanco);
for (
$i 0$ancho 0$i $largo$i ++)    {
    
imagecopy($_imagen$imagen[$i], $ancho000imagesx($imagen[$i]), $alto);
    
$ancho += imagesx($imagen[$i]);
}
@
imagepng($_imagen);

for (
$i 0$i $largo$i ++)    {
    
imagedestroy($imagen[$i]);
}
imagedestroy($_imagen);

?>
Tal vez con alguno de los datos que se ven desde phpinfo() pueda conseguirlo...

Saludos

Última edición por caricatos; 19/04/2004 a las 04:48
  #2 (permalink)  
Antiguo 19/04/2004, 09:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Con el HTTP_REFERER (variable de servidor) podrías montar tu condicional y si se cumple que llega desde X sitio (ULR) aplicas tu código de conteo ..

Algo más exacto (pues no todo navegador, conexiones que pasan por proxys .. etc devueleven ese valor) .. podrías usar "SERVER_NAME" para ver si es tu host (tu dominio).

En general todas estas variables de servidor y su significado lo tienes en:
http://www.php.net/manual/en/reserved.variables.php

Las puedes acceder por su array asociado $_SERVER['nombre_variable_servidor']

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 22/04/2004, 17:09
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.544
Antigüedad: 15 años, 8 meses
Puntos: 1262
Hola otra vez:

Todavía no encuentro solución (aunque no me importa demasiado... )

Hice un bucle para saber que valores pueden ser interesantes:
<?php
foreach ($_SERVER as $clave => $valor) {
echo "SERVER['$clave'] = ".$valor."<br />\n";
}

y luego hice unas pocas pruebas usando el tag img:

<?php

$vengo = $_SERVER["HTTP_REFERER"];

header("Content-Type: image/png");
$im = imagecreate (450, 30); /* Crear una imagen en blanco */
$bgc = imagecolorallocate ($im, 255, 255, 255);
$tc = imagecolorallocate ($im, 0, 0, 0);
imagefilledrectangle ($im, 0, 0, 450, 30, $bgc);
imagestring ($im, 2, 5, 5, $vengo, $tc);
@imagepng($im);
imagedestroy($im);
?>

... y he visto que al menos se puede conseguir el mismo resultado desde 2 direcciones distintas: La página con el tag img y el contador en sí.

De todos modos muchas gracias.

Saludos
  #4 (permalink)  
Antiguo 23/04/2004, 07:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
TIP:

Para hacer un "debugg" a una variable como haces en:

foreach ($_SERVER as $clave => $valor) {
echo "SERVER['$clave'] = ".$valor."<br />\n";
}


puedes usar:

print_r($_SERVER);

---------

Sobre el problema concreto .. ¿cual es exactamente?

Sólo un comentario: .. La variabel de servidor "HTTP_REFERER" no es entregada si la solicitas desde una ventana abierta de javascript (window.open ..) (por lo menos IE no da ese valor .. otros navegadores tal vez si ..). Algunas configuraciones de redes que pasan por proxys, firewalls o similares no entregan esa información de "página referida".

Tomalo en cuenta por qué las variables de ese tipo viajan por cabeceras HTTP .. así que son fácilmente ocultadas o modificadas.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 30/10/2005, 17:56
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.669
Antigüedad: 16 años
Puntos: 16
yo lo que hice con un contador fue meter una variable de session, cuanto se ingresa a la pagina se inicia la variable, y mientras se esta navegando se comprueba si ya esta creada la session o no para no estar haciendo clicks irreales
__________________
CreandoWebs.com
www.creandowebs.com
PLANTILLAS TEMPLATEMONSTER CON 10% DE DESCUENTO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:16.