Autor Zpráva
piiiiiiiip
Profil
Mám tenhle kod
<div id="obsah">
<?php

  if(isset($_GET['read'])){
  $id=(int)$_GET['read'];     
  require_once "db.php";     
  $Vyber=mysql_query("SELECT `nazev`,`clanek`,`datum`,`hit` FROM `clanky` WHERE `id`='$id' LIMIT 1");
    $Vypis=mysql_fetch_array($Vyber); 
      if($Vypis['nazev']){  
        echo "
         <h2>".$Vypis['nazev']."</h2>
          <p>".$Vypis['clanek']."</p>
          <p>hit: ".$Vypis['hit']."x </p>
 <p>".$Vypis['datum']."</p>
          
          ";
       
        mysql_query("UPDATE `clanky` SET `hit`=`hit`+1 WHERE `id`='$id' LIMIT 1");
      }else{
        echo "<h3>Error</h3><p>Je nám líto ale článek který hledáte neexistuje.";
      }
 }
 ?>
</div>

Po aktualizaci stránky se mi k hitu vždy přičte 1 ale učelem bylo aby se přičetla vždy jen jednou z jednoho počítače.

Moderátor Joker: Titulek „Chyba v počítání zchlédnutí článku“ nevystihuje podstatu dotazu. Příště zkus prosím vymyslet lepší.
Joker
Profil
piiiiiiiip:
Po aktualizaci stránky se mi k hitu vždy přičte 1 ale učelem bylo aby se přičetla vždy jen jednou z jednoho počítače.
Tam není chyba, ten kód je prostě napsaný tak, aby to přičetlo 1 vždycky.
Čili pro tenhle účel je to špatný kód :-)

Je potřeba to rozšířit o nějaké cookie nebo kontrolu IP nebo něco, podle toho, co se myslí „z jednoho počítače“.
tomas789
Profil *
Cookie je sice dostatečné řešení, ale kdyby si dal někdo záležet a chtěl tvou konkrétní anketu zfalšovat nedá mu to moc práce. Částečně by si mu mohl přitížit kdybys k ověřování použil nějaký vhodný údaj z _SERVER. Nebo lépe to kombinuj s cookie.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0