Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sonda w mysql
Forum PHP.pl > Forum > Przedszkole
gladiror
Witam!
Stworzylem sobie sonde w php i mysql... Potrzebuje jeszcze pomysłu na zrobienie blokady kilkukrotnego klikania... W czym najlepiej to zrobic? Zakładamy, ze użytkownik nie loguje sie...
Kruq
Witam,

Może ciasteczka ? Po zagłosowaniu wysyłasz z czasem w jakim ma głosujący nie oddawać głosu i po kłopocie .... a i sprawdzasz cicha zanim nacisniesz GŁOSUJ

Pozdro
gladiror
No dobra, ale nie wiem jak mam sie do tego zabrać... Jakos nie bawiłem się w smakołyki nigdy biggrin.gif Może pomożesz?
strife
Albo za pomocą sesji... smile.gif Bo na ciastka są sposoby winksmiley.jpg Jeśli ktoś zagłosował to zmieniasz sesje $_SESSION['sonda'] = TRUE, potem sprawdzasz czy dana sesja istnieje, jesli tak to blokujesz...
Kruq
Cytat(gladiror @ 2005-09-15 22:51:00)
No dobra, ale nie wiem jak mam sie do tego zabrać... Jakos nie bawiłem się w smakołyki nigdy biggrin.gif Może pomożesz?

Niestety co do samego kodu to nie pomogę. Miałem ostatnio przerwę w programowaniu i z praktyką jest kiepso u mnie teraz ... ale mogę polecić lekturę ..

MANUALA z ciastkami smile.gif
gladiror
Ale sesja to raczej lipa bedzie... BO jak zamkniesz przegladarke, to później znowu zagłosujesz... bo bedzie inny nr sesji..
Kruq
Cytat(scarface @ 2005-09-15 22:51:30)
Albo za pomocą sesji... smile.gif Bo na ciastka są sposoby winksmiley.jpg Jeśli ktoś zagłosował to zmieniasz sesje $_SESSION['sonda'] = TRUE, potem sprawdzasz czy dana sesja istnieje, jesli tak to blokujesz...

A co do sessji to nie są one tylko jak jest włączona przeglądarka ?

Jak kolo wyjdzie i wejdzie to znowu będzie mógł głosować .. a tu chyba chodzi o blokade na jakiś czas, czy może źle myśle ?

Pozdro

@gladiror własnie mnie wyprzedziłeś ;]
strife
Jeśli chodzi o ciastka - jak wspomniałem wyżej - nie polecam, bo na dłuższą metę, jak znajdzie się ktoś dociekliwy to i tak postawi na swoim biggrin.gif Na ciastkach pisane z palca...
  1. <?php
  2.  
  3. // ... jesli zaglosowal, nacisnal submit
  4. set_cookie('sonda', '1', time() + 3600); // wazne godzine...
  5. // a potem przy nastepnym wcisnieciu warunek
  6. if ( isset ( $_COOKIE['sonda'] ) )
  7. {
  8.   die('Nie mozesz ponownie glosowac!');
  9. }
  10.  
  11. ?>


W sumie sesje też nie są dobrym rozwiązaniem, ponieważ wystarczy zamknąć i ponownie uruchomić przeglądarke. Chyba jedynym pewnym i sprawdzonym sposobem głosowania w sondach jest wpierw wprowadzenie jakiegoś systemu logowania i głosowanie tylko gdy jest ktoś zalogowany...

@Kruq - dokładnie...

Pozdrawiam!
gladiror
A co myslicie jakby pobierac ip, winde, rozdzielczosc? I porownywac?? jezeli 3 wersje zgadzaja sie to znaczy ze to ta sama osoba...
Kruq
Cytat(scarface @ 2005-09-15 22:59:58)
  1. <?php
  2.  
  3. // ... jesli zaglosowal, nacisnal submit
  4. set_cookie('sonda', '1', time() + 3600); // wazne godzine...
  5. // a potem przy nastepnym wcisnieciu warunek
  6. if ( isset ( $_COOKIE['sonda'] ) )
  7. {
  8.   die('Nie mozesz ponownie glosowac!');
  9. }
  10.  
  11. ?>

a nie lepiej jest najpeirw zrobić warunku ? Jak ktośbędzie głosował to najpierw sprawdza czy głos oddał już ktoś ?
  1. <?php
  2. if ( isset ( $_COOKIE['sonda'] ) )
  3. {
  4.   die('Nie mozesz ponownie glosowac!');
  5. }
  6.  
  7. set_cookie('sonda', '1', time() + 3600);
  8. ?>


Pozdro

Cytat
A co myslicie jakby pobierac ip, winde, rozdzielczosc? I porownywac?? jezeli 3 wersje zgadzaja sie to znaczy ze to ta sama osoba...

Moim skromnym zdaniem nie opłaca się. Za dużo roboty a i tak ciacha chyba są lepsze ;]
A jeżeli chcesz mieć pewniejsze zabezpieczenia to tak jak powiedział @scarface zastosuj jakiś system logowań.

Pozdro
gladiror
Wasze skrypty nie działają, bo zawierają maleńki błąd winksmiley.jpg

  1. <?php
  2. if ( isset ( $_COOKIE['sonda'] ) )
  3. {
  4.   die('Nie mozesz ponownie glosowac!');
  5. }
  6.  
  7. setcookie('sonda', '1', time() + 3600);
  8. ?>


setcookie, a nie set_cookie winksmiley.jpg)

DObra, ale tutaj chodzi o to, że najpierw sprawdza czy istnieje ciastko o nazwie sonda? Jeżeli istnieje to nie możesz głosować, w przciwnym razie tworzy ciastko - tak??

Ale jeszcze jak mam umieścić ten skrypt w swoim? Bo wkleiłem go i w ogólnie nie dodaje nic do bazy... Usunąłem ciastka z folderu, gdzie robi pliki i dalej nie działa...
pawsul
mogl bys w bazie danych przechowywac informacje o IP osob ktore glosowaly, oraz dzien w ktorym glosowaly(czyli
ID 1
IP 111.111.111.111
DATA 11.11.1111) czy cos w tym stylu, ale pamietaj ze dla chcacego nie ma nic trudnego i jesli ktos bedzie chcial oddac glos kilka razy to i tak go odda
gladiror
To ja wiem, że wszystko da się obejść... W końcu jesteśmy Polakami, a oni potrafią biggrin.gif Ale mi chodzi o potencjalnego użytkownika sondy... A nie o osobę z dużą wiedzą... Bo ciastka też sie da obejść - wyłączyć lub usunąć plik z folderu z ciastkiem... Nie da sie idealnie zrobić tej sondy, ale warto próbować w jakiś sposób ją zabezpieczyć...
pawsul
to moze zrob tak jak napisalem, bo komu bedzie sie chcialo ciagle rozlaczac(jesl ktos ma IP dynamiczne) lub laczyc przez jakies proxy(chociaz to chyba i tak mozna sprawdzic jakie ktos ma IP, zalezy chyba od proxy ale nie znam sie na tym) i ciagle zmieniac ustawienia polaczenia
gladiror
Mi się wydaje, ze głupie ciasteczka powinny wystarczyć, tylko nie moge ich zastosować... Ktoś mi w końcu pomoże? winksmiley.jpg
pawsul
  1. <?php
  2.  
  3.  
  4. if ($sonda!=1)
  5. {
  6. echo "mozesz oddac glos" ;
  7. setcookie("sonda", "1",time()+3600*24); 
  8. }
  9. else
  10. {
  11. echo "juz glosowales";
  12. }
  13.  
  14. ?>
gladiror
I jak to wstawie na stronę to nikt już więcej nie zagłosuje? Co oznacza słowo "sonda"?
nospor
ty weź zajrzyj do manuala : http://pl.php.net/setcookie
a nie walisz pytania w stylu: co to napis "sonda". W manualu jest napisane.

Co do glosowania. Nie zaglosuej ten kto glosowal i ten ktos musi miec wlaczona obsluge ciasteczek. I nie wiecej a przez dobe.
gladiror
Pawsul - ten skrypt wyświetla mi błąd:

Warning: Cannot modify header information - headers already sent by (output started at on line 5 (czyli w miejsu setcookie)
nospor
http://php.pl/artykuly/dla_poczatkujacych/...ch_programistow
przeczytaj dokladnie, a bedzieesz wiedzial czemu i bedzieesz wiedzial co zrobic by dzialalo
gladiror
Już dodałem na początku i na końcu strony... Tylko, że skrypt mi nie chce działać z tymi ciastkami... A skąd ma serwer wiedzieć, że zmienna $sonda ma być szukana w ciastkach a nie w zwyklych zmiennych? Bo on sprawdza czy ma wartość rozna od 1...
nospor
zamine wszelkie wystapienia $sonda na $_COOKIE['sonda']

  1. <?php
  2. if (!isset($_COOKIE['sonda']))
  3. {
  4. echo "mozesz oddac glos" ;
  5. setcookie("sonda", "1",time()+3600*24); 
  6. }
  7. else
  8. {
  9. echo "juz glosowales";
  10. }
  11. ?>


pewnie nie masz register_globals wlaczonych. To i lepiej. Bezpieczniej jest sie odwolywac jak ci pokazalem przed chwila
gladiror
ok, thx już jest oki winksmiley.jpg
Hacker
A ja zrobiłem na ip.
  1. <?php
  2.  
  3. $ip=$_SERVER['REMOTE_ADDR'];
  4. if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != 'unknown' && ereg('^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$', $_SERVER['HTTP_X_FORWARDED_FOR']))
  5. $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
  6.  
  7. ?>
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.