Skrypt głosowania php

Skrypt głosowania php

Wątek zablokowany 2018-10-19 10:46 przez Patryk27 .

K2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
0

Witam. Robię prosty skrypt głosowania w php.

Wszystko szło mi bez przeszkód, do momentu w którym musiałem zablokować ponowną możliwość głosowania.
Wybrałem rozwiązanie z IP i jego zapisem do bazy danych gdyż: sesja się sypie, ciastka można wyłączyć/usunąć.

W tabeli glosy mam : id, glos, ip, rekord.

Poprawnie zapisuję wyniki glosowania, lecz gdy chcę sprawdzić czy ktoś głosował, wyskakuje mi błąd.
Próbowałem tak :

Kopiuj
$query = mysql_query("SELECT * FROM oceny WHERE rekord = ".$_GET['id']." AND ip = ".$_SERVER[REMOTE_ADDR]." ");
				$liczba = mysql_num_rows($query);
if ($liczba >0 ) { echo "Głosowałeś już";}
 

Gdy tak zrobię, wyskakuje mi błąd :

Kopiuj
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in [ścieżka] on line [linia] 

I tu moja prośba, czy mógłby ktoś pomóc mi to rozwiązać ? Ewentualnie poprawić to co zrobiłem ?

Bardzo proszę i z góry dziękuję! Pozdrawiam

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Hm...

Kopiuj
$_SERVER[REMOTE_ADDR]

->

Kopiuj
$_SERVER['REMOTE_ADDR']
K2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
0

Nie Patryk, nie w tym rzecz. Próbowałem już tak, dalej ten sam błąd.
Uprzejmie proszę o dalszą pomoc :)

GI
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
$query = mysql_query("SELECT * FROM oceny WHERE rekord='$_GET[id]' AND ip='$_SERVER[REMOTE_ADDR]'");
Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
0

2 pomysły:

  1. Brak połączenia z bazą.
  2. ip w apostrofach.
Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
0

Nauczcie się sprawdzać czy zapytanie nie zwróciło FALSE, a jeśli tak rzucać wyjątkiem z mysql_error(). Problem solved.

KO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 114
0

Jak już to

Kopiuj
$liczba = mysql_num_rows("SELECT * FROM oceny WHERE rekord = ".$_GET['id']." AND ip = ".$_SERVER[REMOTE_ADDR]);
if ($liczba >0 ) { echo "Głosowałeś już";}
//a lepiej
$liczba =  mysql_fetch_object(mysql_query("SELECT COUNT(*) AS row_count FROM oceny WHERE rekord = ".$_GET['id']." AND ip = ".$_SERVER[REMOTE_ADDR]));
Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
0

Zanim zaczniecie [CIACH!] głupoty jak zwykle proponuję chociaż PRZECZYTAĆ WPIS W MANUALU I ZOBACZYĆ PRZYKŁADY

http://ipu.4programmers.net/6f9a/geniusze_mysqla.jpg

Wymyślanie użycia z d**y i korzystanie ze stałych które nie istnieją żeby się evalnęły do stringa (ave REMOTE_ADDR) przyprawia o gorączkę.

K2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
0

Rozwiązane z pomocą gienka (dziękuję)

Kopiuj
$liczba = mysql_num_rows($query = mysql_query("SELECT * FROM oceny WHERE rekord='$_GET[id]' AND ip='$_SERVER[REMOTE_ADDR]'"));
				if ($liczba > 0) {echo "Głosowaleś już dzisiaj";} 

Do zamknięcia.

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
2
krzysiek2541 napisał(a)

Rozwiązane z pomocą gienka (dziękuję)

Kopiuj
$liczba = mysql_num_rows($query = mysql_query("SELECT * FROM oceny WHERE rekord='$_GET[id]' AND ip='$_SERVER[REMOTE_ADDR]'"));
				if ($liczba > 0) {echo "Głosowaleś już dzisiaj";} 

Do zamknięcia.

?id='; DROP TABLE oceny ;--
I twoja tabela znika.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.