Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: camdark en 13 Diciembre 2006, 05:51 am



Título: Problema actualizando un registro en MySQL
Publicado por: camdark en 13 Diciembre 2006, 05:51 am
Hola amigos,

Tengo un problemon, tengo el siguiente codigo:

Código:
<?php
require("admin/config.php");
@mysql_connect("$host", "$user", "$pass") or die ("Imposible conectar al servidor MySQL.");
@mysql_select_db("$db");

$query1 = mysql_query("SELECT * FROM trucos WHERE id='$_GET[id]'");
$truco = mysql_fetch_array($query1);
++$truco[lecturas];
mysql_query("update trucos set lecturas='$truco[lecturas]' where id='$_GET[id]'");
mysql_close();
?>

Se supone que cada vez que ingreso a esa pagina se deberia actualizar el registro lecturas de la base de datos sumandose 1 al valor actual, pero resulta que aveces se suman 2 o 3 y no tengo idea porque, lo pruebo en localhost y todo PERFECTO, pero luego lo subo a un servidor linux mandrake y me da el error de que le suma 2 o 3 en vez de 1, el error esta muy raro, ojala puedan ayudarme.

Nota del moderador: USAR LAS ETIQUETAS CODE!!


Título: Re: Problema actualizando un registro en MySQL
Publicado por: dominioswww en 13 Diciembre 2006, 07:12 am
tienes adsense?? porq suele pasar q navegas or tu sitio e igusal akgun bot entra a esa pagina q tu entraste


Título: Re: Problema actualizando un registro en MySQL
Publicado por: camdark en 13 Diciembre 2006, 14:11 pm
Hola amigo, tengo puesto tres adsense en la pagina, quizas sea por eso, espero escuchar mas opiniones, pero el problema lo tengo cuando pasa de una lectura a 3 lectura, porque depsues no tengo mas problema, y en localhost no tengo el problema.


Título: Re: Problema actualizando un registro en MySQL
Publicado por: Ertai en 13 Diciembre 2006, 18:43 pm
Prueba esto:

Código:
<?php
require("admin/config.php");
@mysql_connect("$host", "$user", "$pass") or die ("Imposible conectar al servidor MySQL.");
@mysql_select_db("$db");

$query1 = mysql_query("SELECT * FROM trucos WHERE id='$_GET[id]'");
$truco = mysql_fetch_array($query1);
++$truco[lecturas];
echo $truco[lecturas];
mysql_query("update trucos set lecturas='$truco[lecturas]' where id='$_GET[id]'");
mysql_close();
?>

Simplemente hay un echo de las lecturas antes de insertarlas en la base de datos, así puedes "debuggear" y ver que pasa.

Saludos.


Título: Re: Problema actualizando un registro en MySQL
Publicado por: Hans el Topo en 13 Diciembre 2006, 18:45 pm
Código:
¿Y eso te funciona?

Prueba con ésto...


[code]require("admin/config.php");
$conec=@mysql_connect($host, $user, $pass) or die ("Imposible conectar al servidor MySQL.");
@mysql_select_db($db);

$query1 = mysql_query("SELECT * FROM trucos WHERE id='".$_GET['id']."'",$conec);
$truco = mysql_fetch_array($query1);
$truco['lecturas']++;
mysql_query("update trucos set lecturas='".$truco['lecturas']."' where id='".$_GET['id']."'",$conec);
mysql_close();

por cierto yo lo haría asi...xD
Código:

if($id=$_GET['id']){
    $conec=@mysql_connect($host, $user, $pass) or die ("Imposible conectar al servidor MySQL.");
@mysql_select_db($db);

  mysql_query("update trucos set lecturas=lecturas+1  where id='$id'",$conec);
  mysql_close();}


espero te sirva de ayuda, las arrays suelen ser bastante quisquillosas con eso de implementarlas dentro de cadenas a pelo...por eso me extraño que no te diese error

P.D que rápido es Ertai xD[/code]


Título: Re: Problema actualizando un registro en MySQL
Publicado por: camdark en 13 Diciembre 2006, 20:06 pm
hola amigos, no me funciono el codigo de hans, y ya habia intentado lo que decia ertai, puse un echo antes y desdes de incrementar el valor y todo se veia bien, pero le daba actualizar y pasaba de 1 a 4 y no pude concluir nada haciendo los echo....


Título: Re: Problema actualizando un registro en MySQL
Publicado por: camdark en 13 Diciembre 2006, 20:14 pm
Hola amigos,

Quite el codigo de todos los adsense google, y subi el sitio y que creen..., problema solucionado, los registros se actualizaban bien, seguramente el robot de adsense tambien ingresa a la pagina y por eso me contabiliza como lecturas, ya tengo reconocido el problema, ahora que puedo hacer?


Título: Re: Problema actualizando un registro en MySQL
Publicado por: alone-in-the-chat en 13 Diciembre 2006, 20:25 pm
verificar que no es el bot :P
Código:
function GetBotInfo()
   {
      global $IS_GOOGLE, $IS_MSN, $IS_YAHOO, $IS_OTHER_SE, $IS_ASK;
     
      if (strpos($_SERVER["HTTP_USER_AGENT"],"Googlebot") === false)
         if (strpos($_SERVER["HTTP_USER_AGENT"],"Slurp") === false)
            if (strpos($_SERVER["HTTP_USER_AGENT"],"msnbot") === false)
               if (strpos($_SERVER["HTTP_USER_AGENT"],"Teoma") === false)
                  if (strpos($_SERVER["HTTP_USER_AGENT"],"bot") === false) {}
                  else {
                     $IS_OTHER_SE = true;
                  }
               else {
                  $IS_ASK = true;
            }
            else {
               $IS_MSN = true;
            }
         else {
            $IS_YAHOO = true;
         }
      else {
         $IS_GOOGLE = true;
      }
   }
   
     function IsBot()
   {
      global $IS_GOOGLE, $IS_MSN, $IS_YAHOO, $IS_OTHER_SE, $IS_ASK;

      return $IS_GOOGLE || $IS_MSN || $IS_YAHOO || $IS_OTHER_SE || $IS_ASK;
   }
GetBotInfo();
crea un archivo bot.php has un include y luego llama a isBot() si te devuelve 1 es un Bot si te da 0 no es un bot ;) prueba con eso

has un include


Título: Re: Problema actualizando un registro en MySQL
Publicado por: camdark en 14 Diciembre 2006, 21:58 pm
Hola amigos, me di cuenta que cada vez que me metia a la pagina que contaba y actualizaba el registro lecturas tambien se metia dos veces el robot de google, revise los Logs de accceso y me di cuenta del nombre del bot y escribi la siguiente proteccion y mi vida cambio xD

<?
if (eregi("Mediapartners-Google/2.1", $_SERVER['HTTP_USER_AGENT'])) {}
else {++$truco[lecturas]; mysql_query("update trucos set lecturas='$truco[lecturas]' where id='$_GET[id]'");}
mysql_close();
?>

Si ven alguna posible mejora en el codigo avisenme, saludosssss