login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Snelle manier

Offline ikki007 - 04/02/2007 10:34 (laatste wijziging 04/02/2007 10:34)
Avatar van ikki007Gouden medailleGouden medaille

PHP ver gevorderde
Hallo,

Wat is een snelle manier waarbij ik geen onnodige ruimte in beslag neem om gebruikers maar 1 keer te mogen laten langskomen.
Ik ben namelijk bezig met een text based rpg waarbij je clicks kan verzamelen.
Stel iemand gaat naar .php?user=henk moet ik dan gewoon zijn IP laten opslaan bij henk in de DB, en als die dan terug komt kijken of die al verkomt? Of kan dit sneller.

~Ikki

EDIT: Het gaat over veel gebruikers, dus niet alleen henk

5 antwoorden

Gesponsorde links
Offline Stijn - 04/02/2007 10:37
Avatar van Stijn PHP expert je legt het beetje raar uit hé. Maar ik weet wat je bedoeld. Stel dat henk zich aanmeld en hij geeft .php?user=henk aan al zijn vrienden. En zijn vrienden klikken erop maar kunnen dit maar één keer doen. Dus bij refresh of ze klikken nog eens wordt er geen click meer bijgeteld. Zoiets?
Offline ikki007 - 04/02/2007 10:39
Avatar van ikki007 Gouden medailleGouden medaille

PHP ver gevorderde
Ja precies, sorry als ik het wat verkeerd heb uitgelegd!  
Offline Stijn - 04/02/2007 10:46 (laatste wijziging 04/02/2007 10:48)
Avatar van Stijn PHP expert je tabel "users" zal een veld "username" en "clicks" hebben waarschijnlijk.

Ik zou een nieuwe tabel maken "log_clicks":

Citaat:
id , INT(11) , NOT NULL , AUTO_INCREDIMENT , PRIMIARY KEY
user , VARCHAR(255) , NOT NULL
ip , VARCHAR(20) , NOT NULL


iemand die op een link klikt en zijn ip staat niet in log_clicks, krijgt een nieuwe record in "log_clicks" en hij gaat de clicks updaten. Bestaat zijn ip wel in "log_clicks" dan gaat hij een melding geven.

  1. <?php
  2.  
  3. if( mysql_num_rows( mysql_query("SELECT * FROM log_clicks WHERE ip='".$_SERVER['REMOTE_ADDR']."' AND user='".$_GET['user']."'") ) > 0 ) {
  4.  
  5. echo "Sorry maar je hebt al eens geklikt op deze link!";
  6.  
  7. } else {
  8.  
  9. mysql_query("UPDATE users SET clicks = clicks + 1 WHERE username='".$_GET['user']."'") or die( mysql_error() );
  10.  
  11. mysql_query("INSERT INTO log_clicks (user , ip) VALUES ('".$_GET['user']."' , '".$_SERVER['REMOTE_ADDR']."')") or die( mysql_error() );
  12.  
  13. echo "Bedankt voor te klikken op mijn link, groeten " . $_GET['user'];
  14.  
  15. //doorsturen
  16. header("Refresh:5;URL=index.php");
  17.  
  18. }
  19.  
  20. ?>


groeten
stijn
Offline yannick - 04/02/2007 12:03 (laatste wijziging 04/02/2007 12:04)
Avatar van yannick PHP interesse Stijn dit kan toch korter?

  1. <? //kleuries
  2. mysql_num_rows( mysql_query("SELECT * FROM log_clicks WHERE ip='".$_SERVER['REMOTE_ADDR']."' AND user='".$_GET['user']."'") )



  1. <? //kleuries
  2. mysql_query("SELECT COUNT(1) FROM log_clicks WHERE ip='".$_SERVER['REMOTE_ADDR']."' AND user='".$_GET['user']."' LIMIT 1")
Offline Stijn - 04/02/2007 12:13
Avatar van Stijn PHP expert en dan mysql_result erond zekers , mijne is ook goed maar korter kan denk ik niet  
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.187s