Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z "klikaniem"
Forum PHP.pl > Forum > Gotowe rozwiązania
Jonkus
Otoz mam malutki problem odnosnie "klikania' w grze.

A dokladnie jak w wiekszosci gier posiadamy link ktory wysylamy znajomym. Mamy tam spis liczb od 1 do 15. gdy jest np napisane dwa to klikamy dwa dzieki temu gracz dostaje zolnierza w grze. Po kliknieciu przenosi nas na nastepna strone gdzie wyskakuje komunikat:

Zostałeś przyjęty do armii DaffI_ZTR

DaffI_ZTR buduje armię Elfy i ma już 45 żołnierzy.

Jeśli chesz, możesz zostać oficerem DaffI_ZTR i wraz z jego ochroną i poparciem, ty też możesz zbudować armię, która kiedyś zapanuje nad całym światem. Jeżeli akceptujesz to wyzwanie....

I tu zaczyna sie problem....Gdy odswiezymy strone z komunikatem wyzej zamieszczonym nasza armia powieksza sie. Krotko mowiac mozna w prosty sposob nabic sobie armie. Wystarczy ciagle klikac f5 i armia w szybkim tepie sie powieksza.
Chcialbym zeby bylo tak ze gdy ktos bedzie chcial odswiezyc strone wyskoczy komunikat:
Proszę Czekać...
Błędnie zaznaczyłes obraz! Dla bezpieczeństwa, musisz odczekać
przed kolejna próba. Spróbuj znów za kilku minut.

Kawalek kodu gdyby byl potrzebny:

  1. <TD style="PADDING-RIGHT: 15px; PADDING-LEFT: 15px; PADDING-TOP: 12px"
  2. vAlign=top align=left>
  3. <? $recruitC=5;
  4. function recruitSoldier($id){
  5. global $recruitC;
  6. $us=getUserDetails($id,"commander");
  7. updateUser($id, " untrainedSold =untrainedSold +$recruitC" );
  8. if ($us->commander){
  9. $recruitC/=2;
  10. recruitSoldier($us->commander);
  11. }
  12. }
  13.  
  14. if ($cgi['image_click_value']){
  15. if ($cgi['image_click_value']==$_SESSION['number']){
  16.  
  17.  
  18. $time=$conf["hours_to_block_same_user_recruiting"]*0*0;
  19. $IP=isIPNewerThen($ip,$time);
  20. if ($IP){
  21. //print_r($IP);
  22. //$IP=getIP($ipID);
  23. $time=time()-$IP->time;
  24. //alert($time);
  25. $time=$conf["hours_to_block_same_user_recruiting"]*60*60-$time;
  26. //alert($time);
  27.  
  28. $t=$time/(60*60);
  29. $tF=floor($t);
  30. $timeA['tm_hour']=$tF;
  31. $time=$time-$tF*60*60;
  32.  
  33. $t=$time/(60);
  34. $tF=floor($t);
  35. $timeA['tm_min']=$tF;
  36.  
  37. $time=$time-$tF*60;
  38. $timeA['tm_sec']=$time;
  39. // $t=($time-$timeA['tm_sec'])
  40.  
  41.  
  42. ?>Już kliknąłeś ten link dzisiaj. Możesz kliknąć ponownie za
  43. <?=$timeA['tm_hour']?> godzin, <?=$timeA['tm_min']?> minut i <?=$timeA['tm_sec']?> sekund
  44. <?
  45. }
  46. else{
  47.  
  48. deleteIPByIP($ip);
  49. $us=getUserByUniqId($cgi['uniqid'],"ID");
  50. $usi="$us->ID";
  51. addIP($ip,$usi,$time);echo "$ip, $usi, $time,";
  52. recruitSoldier($us->ID);
  53. //updateUser($us->ID, " untrainedSold =untrainedSold +1 " );
  54. $us=getUserByUniqId($cgi['uniqid'],"*");
  55. ?><? echo "$userID"; ?>
  56. <center>
  57. <font style="font-size: 14pt;"><b>Zostałeś przyjęty do armii <?=$us->userName?>
  58. </b><br>
  59. </font>
  60. <p> <?=$us->userName?> buduje armię <?=$conf['race'][$us->race]['name'] ?> i ma już
  61. <?=$us->trainedAttackSold+$us->trainedAttackMerc+$us->trainedDefSold +$us->trainedDefMerc +$us->untrainedSold +$us->untrainedMerc+$us->spies ?>
  62. żołnierzy.<br>
  63. <p> Jeśli chesz, możesz zostać oficerem <?=$us->userName?> i wraz z jego ochroną i poparciem, ty też możesz zbudować armię, która kiedyś z
    apanuje nad całym światem. Jeżeli akceptujesz
  64. to wyzwanie, <br>
  65. <br>
  66. <center>
  67. <font style="font-size: 16pt"> <a href="register.php?join=<?=$conf['race'][$us->race]['name']?>&uniqid=<?=$us->ID?>"><font style="font-size: 16pt">Dołącz do gry!</font></a> </font>
  68. </center>
  69. </center>
  70. <?
  71. }
  72. }else{
  73. ?>
  74. <h1>Proszę Czekać...</h1>
  75. Błędnie zaznaczyłeś obraz! Dla bezpieczeństwa, musisz odczekać
  76. przed kolejna próbą. Spróbuj znów za kilku minut. <!- edycja2 -->
  77. <?
  78. }
  79. }
  80. elseif ($cgi['uniqid']){
  81. $us=getUserByUniqId($cgi['uniqid']," ID, userName ");
  82. ?>
Sky_walker
Jest pare metod na unikniecie 'wielokrotnego klikania' - zapisanie IP user'a do bazy danych (zasmiecanie bazy) lub dodanie cookie z informacja, ze juz kliknales (nie wszyscy maja ciasteczka wlaczone). Wybor jest twoj. Bo z tego co rozumiem - chcesz, zeby mozna bylo tylko raz wybrac poprawnie cyferke/przekazac zolnieza gosciowi.
No, to sprawdzasz czy gosc ma cookie/jego ip jest w bazie, jak tak to dajesz przekierowanie na strone z informacja, ze facio moze dolaczyc do czegostam, jak nie to dodajemy zolnierzyka i po problemie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.