Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pytanie AutoSurf
Forum PHP.pl > Forum > PHP
ColdFiree
Witam wszystkich. Od wczoraj piszę coś na wzór auto surfu wszytko fajnie tylko jedna rzecz mi się nie podoba dry.gif

jest to plik surf.php odpowiedzialny za wyświetlanie stron w surfie.

  1. <?php
  2. $userLogged = false;
  3. if(isset($_SESSION['id'])) {
  4. $userLogged = true;
  5. } else {
  6. header("Location: index.php");
  7. }
  8. ?>
  9. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  10. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  11. <head>
  12. <title>AutoSurf</title>
  13. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  14. <meta http-equiv="Content-Language" content="pl" />
  15. <meta name="description" content="" />
  16. <meta name="keywords" content="" />
  17. </head>
  18. <body>
  19. <center>
  20.  
  21. <?php
  22.  
  23.  
  24.  
  25. $ses_id = $_SESSION['id'];
  26.  
  27. include('dbconfig.php');
  28.  
  29. $sql = "SElECT * FROM Users WHERE id != $ses_id AND pkt > 0 AND activ = 1 ORDER BY RAND()";
  30. $result = mysql_query($sql) or die (mysql_error());
  31. $row = mysql_fetch_array($result);
  32.  
  33. $sql1 = "SElECT * FROM Users WHERE id != $ses_id AND pkt > 0 AND activ = 1 ORDER BY RAND()";
  34. $result1 = mysql_query($sql1) or die (mysql_error());
  35. $row1 = mysql_fetch_array($result1);
  36.  
  37. $sql4 = "SELECT * FROM Users WHERE id = $ses_id";
  38. $result4 = mysql_query($sql4) or die (mysql_error());
  39. $row4 = mysql_fetch_array($result4);
  40.  
  41. $site = $row['site'];
  42. $site_id = $row['id'];
  43.  
  44. $site1 = $row1['site'];
  45. $site_id1 = $row1['id'];
  46.  
  47.  
  48. if ($row['pkt'] <= 0 and ($row1['pkt'] <= 0) or (empty($site))) {
  49. echo("<h1>Brak reklam!</h1>");
  50. }
  51.  
  52. ?>
  53.  
  54. Pozostało <span id="sekundy" style="font-size: 20px"></span> sekund. Masz już <?php echo($row4['pkt']) ?> punkty.<br />
  55. <br />
  56. <br />
  57. <div style="border:1px solid #989898; width:970px;">
  58. <iframe name="surf" id="surf" src="<?php echo($site); ?>" width="970" height="250">Twoja wyszukiwarka nie obsługuje ramek.</iframe>
  59. <iframe name="surf1" id="surf1" src="<?php echo($site1); ?>" width="970" height="250">Twoja wyszukiwarka nie obsługuje ramek.</iframe>
  60. </div>
  61.  
  62. <script type="text/javascript">
  63. o=document.getElementById('sekundy')
  64. function odliczaj(o,sek){
  65. o.innerHTML=sek
  66. if(sek>0)setTimeout(function(){odliczaj(o,--sek)},1e3)
  67. if(sek<=0){ // jesli ciągle się odświerza strone to nabija punkty...
  68.  
  69. innerHTML="<?php
  70.  
  71. $sql2 = "UPDATE Users SET pkt = pkt + 1 WHERE id = $ses_id";
  72. mysql_query($sql2) or die (mysql_error());
  73.  
  74. $sql3 = "UPDATE Users SET pkt = pkt - 1 WHERE id = $site_id";
  75. mysql_query($sql3) or die (mysql_error());
  76.  
  77. $sql6 = "UPDATE Users SET pkt = pkt - 1 WHERE id = $site_id1";
  78. mysql_query($sql6) or die (mysql_error());
  79.  
  80. ?>";
  81.  
  82. window.location.href="surf.php";
  83. }
  84.  
  85. }
  86. odliczaj(document.getElementById('sekundy'),20)
  87. </script>
  88.  
  89. </center>
  90. </body>
  91. </html>



chodzi mi dokładnie o tą linijkę if(sek<=0){ jak zrobić żeby przy odświeżaniu strony nie nabijały się punkty dla użytkownika zalogowanego na swój profil jak i odejmowane temu użytkownikowi którego reklama wyświetlana jest w surfie tylko dopiero po upłynięciu tych 20s zostały obie te operacje wykonane?
Jak narazie to można ciągle klikać F5 i te operacje się wykonają ...



Proszę o pomoc moze ktoś z was ma jakiś pomysł
Fifi209
Zapisz w sesji czas aktualny + 20 sekund i przy wejściu porównuj, jeżeli bieżący >= zapisany wtedy wpuść.
ColdFiree
Czyli po session_start deklaruję zmienną $czas = time()+20; ?
Mógłbyś mnie bardziej oświecić bo nie wiem teraz czy ten kog javascript zostaje i w tym if sprawdzam czy czas sesji + 20 sekund upłynęło czy nie?

Gdybyś mógł mi to jakoś z obrazować byłbym bardzo wdzięczny smile.gif
Fifi209
Cytat(ColdFiree @ 27.05.2011, 09:22:00 ) *
Czyli po session_start deklaruję zmienną $czas = time()+20; ?

Powiedzmy ;]
Bardziej $_SESSION['czas'] = time()+20;
ale nie na początku - bo nigdy nie wejdziesz, musisz to zrobić po zaktualizowaniu pola w bazie.
A sprawdzanie musi odbyć się przed.

Będzie to wyglądało tak:
  1.  
  2.  
  3. if (czy_zalogowany) {
  4. if (time() >= $_SESSION['czas']) {
  5. // aktualizacja w bazie
  6. $_SESSION['czas'] = time() + 20;
  7. }else{
  8. echo 'zbyt szybko';
  9. }
  10. }else{
  11. echo 'zaloguj sie?';
  12. }
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.