Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sonda - zabezpieczenie cookies i IP
Forum PHP.pl > Forum > PHP
deha21
Zrobiłem skrypt sondy z zabezpieczeniem na IP (zapisywanie w bazie) i cookies. Wgrałem na serwer i zauważyłem że teraz działa tylko na cookies :/
Nie wiem co się stało. Przeanalizowałem kod i chyba wszystko jest ok ale jednak nie działa zabezpieczenie na IP - tzn. wpisuje je do bazy ale potem nie bierze pod uwagę gdy głosujemy ponownie.
Nie wiem czy wklejać kod bo jest trochę skomplikowany i niezbyt czytelny przez to ale mam coś na zasadzie. Ale to coś na zasadzie:
  1. if (głos) {
  2.  
  3. if (jest cookie || jest IP w bazie) { wyswietlaj wyniki sondy }
  4. else { dodaj głos }
  5.  
  6. } if (!glos) {
  7.  
  8. if (jest cookie || jest IP w bazie) { wyswietlaj wyniki }
  9. else { pokaż sondę }
  10. }


Nie wiem co jest przyczyną że IP nie działa. Może wyciąganie IP jest złe? Możliwe. Mam coś takiego:
  1. $resultip=mysql_query("SELECT ip FROM votes WHERE sonda='$ids'"); // pobiera IP z tabeli VOTES gdzie numer sondy jest numerem aktualnym sondy
  2. $rowip=mysql_fetch_array($resultip);
  3.  
  4. if (isset($_COOKIE[$ids]) || $ipp==$rowip['ip']) { // $ipp to zmienna przechowująca IP odwiedzającego
  5. bla bla;
  6. }


Pomocy! winksmiley.jpg
varez
nie pochwaliles sie jak pobierasz to ip..
deha21
IP pobiera raczej dobrze, przynajmniej moje.
  1. if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ipp = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ipp=$_SERVER["REMOTE_ADDR"]; }
tehaha
widzę, że chcesz pobrać numery IP które brały udział w konkretnej sondzie i w taki sposób sprawdzać czy numer IP już głosował ale Twój kod pobiera tylko jeden wynik z bazy, jeżeli chcesz wszystkie numery pobrać to musisz w pętli pobrać wyniki i zapisać je np. do tablicy i potem sprawdzać funkcja in_array() czy w tablicy jest już taki numer IP, aczkolwiek pobieranie wszystkich numerów IP jest trochę bez sensu, lepiej sprawdzić czy w bazie jest rekord z danym IP dla danej sondy czyli:

  1. $resultip=mysql_query("SELECT ip FROM votes WHERE sonda='$ids' AND ip = '$ipp'"); // pobiera IP z tabeli VOTES gdzie numer sondy jest numerem aktualnym sondy
  2. if(mysql_num_rows($resultip) > 0)
  3. {
  4. // ten numer IP brał udział w tej sondzie
  5. }
deha21
Dzięki tehaha.
Własnie wpadłem na pomysł żeby dopisać AND ip='$ipp' ale miałem problem z późniejszym sprawdzeniem winksmiley.jpg
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.