Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem ze skryptem głosowania
Forum PHP.pl > Forum > Przedszkole
miras
Witam, napisałem sobie taki skrypt głosowania:

  1.  
  2. if (($_GET['glos']==1) AND (!empty($_GET['id']))) {
  3. $ip = $_SERVER['REMOTE_ADDR'];
  4. $spr = file("inc/glosy.txt");
  5. $linijka=count($spr);
  6.  
  7.  
  8. if ($ip!=$spr[$linijka]-1) {
  9.  
  10. $dane = $ip."\n";
  11. $file = "inc/glosy.txt";
  12. $fp = fopen($file, "a");
  13. flock($fp, 2);
  14. fwrite($fp, $dane);
  15. flock($fp, 3);
  16. fclose($fp);
  17. $info="Twój głos został dodany!";
  18. } else { $info="Głosowałeś niedawno!"; }
  19. echo '<div class="prze_info">'.$info.'</div>';
  20. }



IP mi się zapisują elegancko do pliku, ale coś jest nie tak ze sprawdzaniem chyba czy obecne ip=ostatnio dodane ip.. bo można cały czas spamować i głosować..
nospor
Skup wieksza uwage na tym kawalku
$spr[$linijka]-1
smile.gif
miras
hmm, kurcze nie mogę nadal zdiagnozować problemu, wiem, że to już duża podpowiedź, ale można jaśniej ?
com
pytanie poco CI tam to -1 po $spr[$linijka] ?
fiszol
Na 100% ma pustą linie na końcu pliku i nie wie jak się z nią rozprawić ;-p
miras
Zgadza się, mam pusta linie, z -1 czy bez tak czy siak nie dziala.. nawet -2 probowalem..
com
bo dajesz nie tam gdzie trzeba tongue.gif a zmienna dodatkowo możesz wrzucić w http://php.net/manual/en/function.trim.php i Ci ją usunie wink.gif jak już to dajesz
  1. $spr[$linijka-1]
wink.gif bo tak jak masz to tak jakby od pobranego ip byś chciał odjąć 1 co i tak chyba się nie wykona bo brakuje nawiasu tongue.gif widzę za dużo c ostatnio albo pochodnych tongue.gif
miras
racja.. matko, ale błąd.. ale niestety nadal mi to nie chce działać... obecny kod:


  1. if (($_GET['glos']==1) AND (!empty($_GET['id']))) {
  2. $ip = $_SERVER['REMOTE_ADDR'];
  3. $spr = file("inc/glosy.txt");
  4. $linijka=count($spr);
  5.  
  6.  
  7. if ($ip!=$spr[$linijka]) {
  8.  
  9. $dane = $ip."\n";
  10. $file = "inc/glosy.txt";
  11. $fp = fopen($file, "a");
  12. flock($fp, 2);
  13. fwrite($fp, $dane);
  14. flock($fp, 3);
  15. fclose($fp);
  16. $info="Twój głos został dodany!";
  17. } else { $info="Głosowałeś niedawno!"; }
  18. echo '<div class="prze_info">'.$info.'</div>';
  19. }
com
no ale dałem Ci przecież, że jak tak chcesz to dajesz $spr[$linijka-1] lub
  1.  
  2. if (($_GET['glos']==1) AND (!empty($_GET['id']))) {
  3. $ip = $_SERVER['REMOTE_ADDR'];
  4. $spr = file("inc/glosy.txt");
  5. $linijka=count(trim($spr));
  6.  
  7.  
  8. if ($ip!=$spr[$linijka]) {
  9.  
  10. $dane = $ip."\n";
  11. $file = "inc/glosy.txt";
  12. $fp = fopen($file, "a");
  13. flock($fp, 2);
  14. fwrite($fp, $dane);
  15. flock($fp, 3);
  16. fclose($fp);
  17. $info="Twój głos został dodany!";
  18. } else { $info="Głosowałeś niedawno!"; }
  19. echo '<div class="prze_info">'.$info.'</div>';
  20. }
tongue.gif
fiszol
Ale kombinujecie.
  1. <?php
  2. if(in_array($ip,$spr)) {
  3. //do stuff
  4. }
  5. else {
  6. //do stuff
  7. }
  8. ?>
miras
tfu, zły kod wkleiłem ani z trim'em ani z -1 nie działa.. chyba jednak gdzieś jeszcze jest problem..
kropamk
Inaczej, tak to sobie wymyśliłem, pewnie trochę na około ale działa
  1. $ip = $_SERVER['REMOTE_ADDR'];
  2. $fname = "glosy.txt";
  3. if (filesize($fname) == 0) {
  4. // jeżeli plik jest pusty to dodaję ip
  5. $dane = $ip . "\n";
  6. $file = "glosy.txt";
  7. $fp = fopen($file, "a");
  8. flock($fp, 2);
  9. fwrite($fp, $dane);
  10. flock($fp, 3);
  11. fclose($fp);
  12. } else {
  13. $file = fopen('glosy.txt', 'r') or die("");
  14. $data = fread($file, filesize('glosy.txt'));
  15. $items = explode("\n", $data);
  16. $search = array_search($ip, $items);
  17.  
  18. if ($search === FALSE) {
  19. $dane = $ip . "\n";
  20. $file = "glosy.txt";
  21. $fp = fopen($file, "a");
  22. flock($fp, 2);
  23. fwrite($fp, $dane);
  24. flock($fp, 3);
  25. fclose($fp);
  26. $info = "Twój głos został dodany!";
  27. } else {
  28. $info = "Głosowałeś niedawno!";
  29. }
  30. echo '<div class="prze_info">' . $info . '</div>';
  31. }
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.