Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> jeden user = 1 konto, czy to wykonalne?
andycole
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 14.12.2004

Ostrzeżenie: (0%)
-----


Witam,

Prowadze gre internetowa, w ktorej zalezy mi na tym, zeby 1 uzytkownik mial 1 konto.
Ewentualnie maksymalnie jak to mozliwe utrudnic zalozenie 2 konta.

W tej chwili mam rejestracje z aktywacja poprzez adres e-mail.

Macie jakies inne pomysly?

Po IP nie ma co sprawdzac, po przegladarce tak samo niestety :/
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kszyhuu
post
Post #2





Grupa: Zarejestrowani
Postów: 157
Pomógł: 32
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


Kiedyś prowadząc grę widziałem, że było to zrobione w dość prosty sposób, niewymagający wielkiego nakładu sił, a przynoszący dobre efekty.

1) Zrób plik np multicheck.php. W części html'owej daj forma gdzie wpisuje się id początkowe i id końcowe przedziału. W php zrób zapytanie, które pokaże Ci graczy o takim samym IP z tego przedziału.
  1. <form method="post" action="multicheck.php">
  2. id początkowe: <input type="text" name="id1"/>
  3. id końcowe: <input type="text" name="id2"/>
  4. <input type="submit" value="Wyszukaj" />

A w części php daj zapytanie i prześlij później wynik do html. Masz zapytanie, zmienisz tabele i kolumny i będzie si:
  1. $result = $db -> EXECUTE("SELECT
  2. p.ip,
  3. p.id as pl1_id,
  4. p.user as pl1_nick,
  5. p.email as pl1_email,
  6. p2.id as pl2_id,
  7. p2.user as pl2_nick,
  8. p2.email as pl2_email
  9. FROM `players` p JOIN players p2 USING(ip)
  10. WHERE p.id!=p2.id
  11. AND ip!=''
  12. AND p.id BETWEEN $_POST[id1] AND $_POST[id2]
  13. ORDER BY ip, pl1_id, pl2_id");

2) Zrób w modułach plik zapisujący do bazy każdą akcję użytkownika, zapisując tam datę, id, id2(gracza, któremu coś przekazujemy etc.), ip, co zostało wpisane w okienko form/textarea, nazwę pliku.
3) Zrób przeglądarkę tych logów. W html daj forma, w którego wpisuje się daną rzecz (tę datę/ip/coś innego) i obok checkboxa, odwracającego wynik. Czyli np jeśli wpiszesz w id 50 i zaznaczysz checkboxa, to wynikiem będzie każde id poza 50. Pokażę Ci tpl'kę i php żebyś miał porównanie, przerobisz sobie:
  1. <table width="200%">
  2. <tr>
  3. <td>datestamp(data)</td>
  4. <td>fid(ID gracza)</td>
  5. <td>sid</td>
  6. <td>ip</td>
  7. <td>what</td>
  8. <td>much</td>
  9. </tr>
  10. <form method="post" action="logi.php?step=do">
  11. <tr>
  12.  
  13. <td><input type="checkbox" name="d" value="true"><input type="text" name="datestamp" size="5"></td>
  14. <td><input type="checkbox" name="f" value="true"><input type="text" name="fid" size="5"></td>
  15. <td><input type="checkbox" name="s" value="true"><input type="text" name="sid" size="5"></td>
  16. <td><input type="checkbox" name="i" value="true"><input type="text" name="ip" size="5"></td>
  17. <td><input type="checkbox" name="w" value="true"><input type="text" name="what" size="5"></td>
  18. <td><input type="checkbox" name="m" value="true"><input type="text" name="much" size="5"></td>
  19. </tr>
  20. <tr>
  21. <td><input type="submit" value="Szukaj!"></td>
  22. <td></td>
  23. <td></td>
  24. <td></td>
  25. <td></td>
  26. <td></td>
  27. </tr>
  28. </form>
  29. {if $step == 'do'}
  30. {section=list}
  31. <tr>
  32. <td>{$list.datestamp}</td>
  33. <td>{$list.fid}</td>
  34. <td>{$list.sid}</td>
  35. <td>{$list.ip}</td>
  36. <td>{$list.what}</td>
  37. <td>{$list.much}</td>
  38. </tr>
  39. {/section}
  40. {$error}
  41. {else}
  42. {/if}

  1. <?php
  2. define('LOGGS_PER_PAGE', 300);
  3. if (!isset($_GET['step'])) $_GET['step'] = '';
  4. if(!isset($_SESSION['logtab']))
  5. $_SESSION['logtab']='logging';
  6.  
  7. if ($_GET['step'] == 'do'){
  8. $qq = array();
  9. if(empty($_POST['from'])) $_POST['from']=0;
  10. if(!empty($_POST['datestamp'])) $qq[] = 'datestamp '.(empty($_POST['d'])? '' : 'not ').'like \'%'.$_POST['datestamp'].'%\'';
  11. if(!empty($_POST['fid'])) $qq[] = 'fid'.(empty($_POST['f'])? '' : '!').'='.$_POST['fid'];
  12. if(!empty($_POST['sid'])) $qq[] = 'sid'.(empty($_POST['s'])? '' : '!').'='.$_POST['sid'];
  13. if(!empty($_POST['ip'])) $qq[] = 'ip '.(empty($_POST['i'])? '' : 'not ').'like \'%'.$_POST['ip'].'%\'';
  14. if(!empty($_POST['what'])) $qq[] = 'what '.(empty($_POST['w'])? '' : 'not ').'like \'%'.$_POST['what'].'%\'';
  15. if(!empty($_POST['much'])) $qq[] = 'much '.(empty($_POST['m'])? '' : 'not ').'like \'%'.$_POST['much'].'%\'';
  16. $loggs = array();
  17. if(!empty($qq))
  18. {
  19. $query = $db -> Execute('SELECT * FROM '.$_SESSION['logtab'].' where '.implode(' and ', $qq).' order by datestamp ASC limit '.$_POST['from'].', '.LOGGS_PER_PAGE);
  20. while($query && !$query -> EOF){
  21. if($query -> fields['what'] == 'login') $query -> fields['much'] = false;
  22. $loggs[] = $query -> fields;
  23. $query -> MoveNext();
  24. }
  25. if($query)
  26. $query->Close();
  27. }
  28. $tpl->assignGroup(array(
  29. "list" =>$loggs,
  30. "error" => mysql_error(),
  31. "next" => count($loggs)==LOGGS_PER_PAGE,
  32. ));
  33. }
  34.  
  35. $tpl -> assign ("step", $_GET['step']);
  36. $tpl -> parse('loggs.tpl');
  37. ?>

Później tylko w multicheck sprawdzasz podejrzane konta i sprawdzasz ich akcje w logach- czy logują się jedno po drugim, czy zawsze mają to samo ip, czy przesyłają sobie surowce, czy komunikują się przez pocztę z tymi samymi osobami, etc. Sprawdzenie, czy dwa dane konta są multikontami zajmuje około 5 minut. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie
- andycole   jeden user = 1 konto   4.02.2010, 17:12:29
- - gothye   możesz jeszcze spróbować wykorzystać $_COOKIE...   4.02.2010, 17:19:37
- - MateuszScirka   Niestety to chyba jedyne sensowne rozwiązania, naj...   4.02.2010, 17:36:29
- - andycole   Cookies niestety jest za slabym zabezpieczeniem, b...   4.02.2010, 18:15:49
|- - Pilsener   Cytat(andycole @ 4.02.2010, 18:15:49 ...   5.02.2010, 09:59:53
- - Kshyhoo   Musisz rejestrować wszystko, co może wyróżnić user...   4.02.2010, 18:30:45
- - Kszyhuu   Kiedyś prowadząc grę widziałem, że było to zrobion...   4.02.2010, 20:08:23
- - Kshyhoo   @Pilsener, masz rację, tak się właśnie odbywa w pr...   5.02.2010, 12:00:25
- - erix   Cytat1. Gracz deklaruje, że gra z jednego komputer...   5.02.2010, 18:44:44
- - andycole   erix, dokladnie, zmienne IP czyli z tego co widze...   8.02.2010, 13:46:42
- - erix   Zostaje chyba tylko rejestracja kont i sprawdzanie...   8.02.2010, 20:46:06
- - altruista2   Niestety prawda jest taka że jedyna metoda obrony ...   9.02.2010, 01:14:11
- - andycole   hmn, a uzywajac innych jezykow? np java? zapisac g...   24.06.2010, 17:55:51
- - erix   A użyszkodnik wcale nie ma obowiązku instalować cz...   24.06.2010, 18:02:58
- - andycole   jezeli chce zagrac bedzie zmuszony zainstalowac......   24.06.2010, 18:07:37
- - Van Pytel   Byś musial zrobić gre na kompa np: w C nie przez p...   24.06.2010, 19:11:11
- - vokiel   Jest taki projekt Panopticlick, który sprawdza uni...   24.06.2010, 20:57:42
- - andycole   Van Pytel, gra juz istnieje... i zalezy mi jedynie...   24.06.2010, 21:13:00
- - erix   Cytata jakby za pomoca apletu java zapisywac plik ...   24.06.2010, 21:54:31
- - Zyx   Wszyscy, jak równo, zabieracie się do problemu od ...   24.06.2010, 22:23:44
- - set4812   Hmm jak zauwazyłem gry flash zapisuja save z gry n...   24.06.2010, 22:31:03
- - erix   CytatHmm jak zauwazyłem gry flash zapisuja save z ...   24.06.2010, 23:10:15
- - set4812   Ale jak sie ustawi usuwanie ciasteczek po zamkniec...   25.06.2010, 11:07:53
- - Redox   Jest kilka mozliwosci lecz nie ma takiej ktorej by...   25.06.2010, 12:18:29
- - nasty   A wysyłanie kodów aktywujących na telefon sms-em a...   25.06.2010, 12:34:45
- - erix   CytatAle jak sie ustawi usuwanie ciasteczek po zam...   25.06.2010, 15:02:35
- - andycole   Zyx, nie zalezy mi na identyfikacji usera, bo to j...   25.06.2010, 19:59:34
- - zegarek84   co do kasowania cookies to mało kto kasuje wszystk...   25.06.2010, 22:33:06
- - Van Pytel   Gdyby można bylo uzyskać od przeglądarki / kompute...   26.06.2010, 15:38:22


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 21:01