Avatar billede jammerlab Nybegynder
18. marts 2005 - 20:08 Der er 11 kommentarer og
1 løsning

Remote counter

Jeg har lavet en remote counter det vil sige en counter i PHP som kører på min server, men som andre folk kan bruge ved at hente et "billede" fra serveren da den bruger GD Lib... mit problem er at counteren tæller hver gang siden refreshes og jeg har lavet en session "sikkerhed" for at dette ikke skulle kunne ske...

Nogen der kan følge mig, og se mit problem? - eventuelt løse det? :)
Avatar billede Slettet bruger
18. marts 2005 - 20:54 #1
har du noget kode vi kan få lov til at se?.. bare koden der tæller
Avatar billede jammerlab Nybegynder
18. marts 2005 - 21:06 #2
<? session_start(); ?>
<?

if(!$_SESSION['ip']) {

$ip=$_SERVER['REMOTE_ADDR'];

session_start();
session_register(ip);

$fetchcounter = mysql_query("select count from web_k where id = '$id'")or die(mysql_error());
$counter = mysql_fetch_array($fetchcounter);

$ialt = $counter[count] + 1;
mysql_query("UPDATE web_k set count = '$ialt' where id = '$id'")or die (mysql_error());
}

?>

Så den er som den skal være...
Avatar billede coderdk Praktikant
18. marts 2005 - 21:17 #3
Prøv:

<?php

  session_start();

  if( empty( $_SESSION['ip'] ) )
  {
      $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
      $fetchcounter = mysql_query("select count from web_k where id = '$id'")or die(mysql_error());
      $counter = mysql_fetch_array($fetchcounter);

      $ialt = $counter[count] + 1;
      mysql_query("UPDATE web_k set count = '$ialt' where id = '$id'")or die (mysql_error());
  }

?>
Avatar billede jammerlab Nybegynder
18. marts 2005 - 22:23 #4
Nop den tæller bare derop af :) Det er fordi brugerne kalder scriptet frem ved:

<a href="http://www.modern-solutions.dk"><img border="0" alt="http://www.modern-solutions.dk" src="http://www.modern-solutions.dk/webservice/counter/counter.php?id=2"></a>

bruger GD Lib... og så kan den vel ikke bare lige sætte en session... eller hva... det virker ihvertfald ikke.
Avatar billede coderdk Praktikant
18. marts 2005 - 23:59 #5
Check at de tillader cookies (også tredjepartscookies - det er det denne er!)
Avatar billede coderdk Praktikant
19. marts 2005 - 00:00 #6
Din kode er aller øverst, det første der bliver kørt? Intet før, ikke engang mellemrum?
Avatar billede jammerlab Nybegynder
19. marts 2005 - 00:02 #7
Nej koden er det første i min php fil men de kan jo vælge og include den midt i deres egen kode...
Avatar billede coderdk Praktikant
19. marts 2005 - 00:06 #8
Det er ligegyldigt da:

  http://www.modern-solutions.dk/webservice/counter/counter.php?id=2

er et selvstændigt request, og derfor kan sætte cookies osv. Hvis du er sikker på at det er det første i din fil, så burde det virke.
Avatar billede jammerlab Nybegynder
19. marts 2005 - 00:08 #9
ja okay altså helt præcist ser koden sådan ud (i toppen):

<? session_start(); ?>
<?

mysql_connect("***","***","***")or die (mysql_error());
mysql_select_db("***")or die (mysql_error());

  if( empty( $_SESSION['ip'] ) )
  {
      $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
      $fetchcounter = mysql_query("select count from web_k where id = '$id'")or die(mysql_error());
      $counter = mysql_fetch_array($fetchcounter);

      $ialt = $counter[count] + 1;
      mysql_query("UPDATE web_k set count = '$ialt' where id = '$id'")or die (mysql_error());
  }
Avatar billede coderdk Praktikant
19. marts 2005 - 00:15 #10
Hmm ok, prøv at kopiere filen over i en anden fil, og prøv dette:

<?

  session_start();

mysql_connect("***","***","***")or die (mysql_error());
mysql_select_db("***")or die (mysql_error());

  if( empty( $_SESSION['ip'] ) )
  {
      $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
      $fetchcounter = mysql_query("select count from web_k where id = '$id'")or die(mysql_error());
      $counter = mysql_fetch_array($fetchcounter);

      $ialt = $counter[count] + 1;
      mysql_query("UPDATE web_k set count = '$ialt' where id = '$id'")or die (mysql_error());
      echo "It's just been set:<pre>";
      var_dump( $_SESSION );
  }
  else
  {
      echo "It already exists:<pre>";
      var_dump( $_SESSION );
  }
  exit;

?>

Kald så siden direkte fra en browser og reload et par gange og se - Hvis det virker der, burde det virke - Så prøv at sikre at din browser, antivirusprogram eller firewall tillader tredjeparts cookies, og kør det så på den "rigtige".
Kald både:

  http://www.modern-solutions.dk/webservice/counter/counter.php?id=2

direkte og se om det virker, og bagefter den side hvor counteren er og se om det virker... Der skal lidt debugging til her ;)
Avatar billede jammerlab Nybegynder
19. marts 2005 - 00:21 #11
Hm underligt... jeg prøvede lige med den gamle kode igen, og så fungerede det... ved ikke lige om det var fordi jeg ikke havde fået uploadet den nyeste verion... men smid et svar, og tak for hjælpen :)
Avatar billede coderdk Praktikant
19. marts 2005 - 00:25 #12
heheh ok :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester