login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Dubbelaccounts opsporen

Offline Voldemort - 30/03/2006 18:05
Avatar van VoldemortPHP ver gevorderde Ik wil dubbelaccounts op mijn site opsporen door alle leden waarvan het IP meer dan 1 keer komt op te halen. Het omgekeerde van DISTINCT dus. Maar wat is het omgekeerde van DISTINCT?

5 antwoorden

Gesponsorde links
Offline Simon - 30/03/2006 18:08 (laatste wijziging 30/03/2006 18:08)
Avatar van Simon PHP expert deze vraag werd onlangs nog gesteld, ff zoeken naar het topic 

http://www.site...p;id=13433

hierzo
Offline Voldemort - 30/03/2006 19:58
Avatar van Voldemort PHP ver gevorderde Als iemand nu een 2 dubbel account heeft krijg ik dit:

IP werd door dezen gebruikt:
- aap - aap2

IP werd door dezen gebruikt:
- aap - aap2

ipv dat maar 1 keer. Als die 3 accounts heeft, 3 keer.
Code:

  1. <?php
  2. require('includes/config.php');
  3.  
  4. echo '<div align="center">Op Basis van IP:</div>';
  5.  
  6. $select = mysql_query("SELECT `gebruikersnaam`, `ip` FROM `leden` WHERE `ip`<>''") or die("FOUT in de Query ". mysql_error());
  7.  
  8. while($fetch = mysql_fetch_assoc($select))
  9. {
  10. $select2 = mysql_query("SELECT `gebruikersnaam` FROM `leden` WHERE `ip` = '".$fetch['ip']."'") or die("FOUT bij Query2: ". mysql_error());
  11. if(mysql_num_rows($select2) > 1)
  12. {
  13. echo $fetch['ip']. " werd ". mysql_num_rows($select2) ." gebruikt door:<br />";
  14. while($fetch2 = mysql_fetch_assoc($select2))
  15. {
  16. echo "&nbsp;- ". $fetch2['gebruikersnaam'];
  17. }
  18. echo '<br /><br />';
  19. }
  20. }
  21.  
  22. echo '<div align="center">Op Basis van HOSTS:</div>';
  23.  
  24. $select = mysql_query("SELECT `gebruikersnaam`, `ip`, `host` FROM `leden`") or die("FOUT in de Query ". mysql_error());
  25.  
  26. while($fetch = mysql_fetch_assoc($select))
  27. {
  28. //UPDATE HOSTS
  29. $query2098 = "UPDATE `leden`
  30. SET `host`='".gethostbyaddr($fetch['ip'])."'
  31. WHERE `gebruikersnaam`='".$fetch['gebruikersnaam']."'";
  32. $result2098 = mysql_query($query2098) or die(mysql_error());
  33.  
  34. $select2 = mysql_query("SELECT `gebruikersnaam` FROM `leden` WHERE `host` = '".$fetch['host']."'") or die("FOUT bij Query2: ". mysql_error());
  35. if(mysql_num_rows($select2) > 1 && !empty($fetch['host']))
  36. {
  37. echo $fetch['host']. " werd ". mysql_num_rows($select2) ." gebruikt door:<br />";
  38. while($fetch2 = mysql_fetch_assoc($select2))
  39. {
  40. echo "&nbsp;- ". $fetch2['gebruikersnaam'];
  41. }
  42. echo '<br /><br />';
  43. }
  44. }
  45. ?>


Ik weet hoe het komt dat het fout is (door de while doet ie het aantal keer dat account), maar ik weet niet hoe ik het oplos. Jullie wel?
Offline Dolfje - 30/03/2006 20:05 (laatste wijziging 30/03/2006 20:09)
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
ik zou eerder zoiets doen:
  1. <?
  2. $select = mysql_query("SELECT count(*) as count,gebruikersnaam, ip, host FROM `leden` GROUP BY ip ORDER BY count DESC"):
  3. while( $query = mysql_fetch_object($select) AND $query->count > 1 )
  4. {
  5. echo "Ip ".$query->ip."heeft de volgende gebruikers:";
  6. $select2 = mysql_query("SELECT * FROM `leden` WHERE ip='".$query->ip."'"):
  7. while( $query2 = mysql_fetch_object($select2))
  8. {
  9. echo $query2->gebruikersnaam." - ";
  10. }
  11. }
  12. ?>


Dit zal sneller zijn dan jouw methode. 
want hier doe je de 2de query alleen voor de personen die meerdere ip's hebben, terwijl jij ze voor allemaal doet.
+ dubbelaccount worden maar 1 keer afgeprint.
Offline Simon - 30/03/2006 20:06 (laatste wijziging 30/03/2006 20:06)
Avatar van Simon PHP expert
  1. $select = mysql_query("SELECT DISTINCT(`ip`) FROM `leden` WHERE `ip`<>''") or die("FOUT in de Query ". mysql_error());


zo mss?
Offline Thomas - 31/03/2006 12:25
Avatar van Thomas Moderator 1. IP's met meer dan 1 account:
  1. SELECT ip, COUNT(id) AS aantal
  2. FROM whatever
  3. GROUP BY ip
  4. HAVING aantal > 1


2. Bijbehorende accounts:
  1. SELECT *
  2. FROM whatever
  3. WHERE ip IN (<lijst van eerder opgehaalde IP's>)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.227s