Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

Blokada ponownego wypełnienia ankiety

Zdecydowałeś się na tworzenie interaktywnych stron przy pomocy PHP? Chcesz w łatwy i szybki sposób zarządzać danymi na swojej stronie? Tutaj znajdziesz pomoc w napotkanych przy tym trudnościach.

Blokada ponownego wypełnienia ankiety

Post 26.06.2018, 13:30:59

Czy jest jakaś możliwośc zablokowania ponownego wypełnienia ankiety jeśli jest ona anonimowa, wyniki wysylane są mailem i nie trafiają do żadnej bazy danych? Adres do strony z ankieta wysylany jest do okolo 400 uzytkownikow mailem.

Jeśli jest, to jak to zrobic?
feronek
Posty: 40
Dołączył(a): 21.03.2014

Re: Blokada ponownego wypełnienia ankiety

Post 26.06.2018, 21:39:14

Ogarnięte przez sprawdzanie konkretnego cookiesa, którego dodaje ankieta. Opcja ma swoje wady ale.. pewnie lepszej nie będzie.
feronek
Posty: 40
Dołączył(a): 21.03.2014

Re: Blokada ponownego wypełnienia ankiety

Post 26.06.2018, 22:08:30

A jednak blokowanie cookies ma swoje wady - tryb incognito, inne przeglądarka itp. A może ktoś mi pomoże w tym, żeby zrobić blokowanie wysyłania po IP? Żeby skrypt sprawdzał, czy z danego IP formularz został już wysłany i - jeśli tak - to kierował na stronę z taką informacją?
feronek
Posty: 40
Dołączył(a): 21.03.2014

Re: Blokada ponownego wypełnienia ankiety

Post 27.06.2018, 07:34:13

IP też nie do końca jest pewnym rozwiązaniem. Dajmy na to, że conajmniej 2 osoby będą w tej samej sieci (np. domowej), to będą miały te same publiczne IP. Spowoduje to, że osoba, która druga będzie chciała wysłać ankietę, nie będzie tego mogła zrobić. W każdym razie, przyjmując najprostszy wariant, że zapiszemy IP do pliku

Kod: Zaznacz cały
// tutaj twój kod
// tutaj miejsce w kodzie, gdzie wysyłasz maile. Pod tym kodem wstawiamy zapisywanie IP
$ips = json_decode(file_get_contents('ip.txt'));
$ips []= $_SERVER['REMOTE_ADDR'];
file_put_contents('ip.txt', json_encode($ips));


nastepnie albo na początku skryptu lub w miejscu gdzie obsługujemy wysłany formularz dodajesz

Kod: Zaznacz cały
if (in_array($_SERVER['REMOTE_ADDR'], json_decode(file_get_contents('ip.txt')))) {
  header('juz-glosowales.html');
  exit;
}


Następnie utwórz plik ip.txt o treści
Kod: Zaznacz cały
[]


Pozostaje drobna kwestia prywatności, najlepiej trzymać plik z IP poza publicznym zasięgiem. IP może być daną osobową, więc trzeba zapewnić odpowiednie zabezpieczenia.

Pewniejszym rozwiązaniem byłoby, gdyby każda ankieta miała unikalny identyfikator, który będzie wysyłany razem z odpowiedziami. Identyfikator taki, że nie łatwo go podrobić samemu (np. zwykła liczba). Zapisujesz gdzieś na serwerze wszystkie wysłane identyfikatory.
W momencie gdy ktoś wysle odpowiedzi, to albo zapisujesz, że dany identyfikator wysłał odpowiedź albo (prościej) usuwasz identyfikator z listy. A na wejściu sprawdzasz, czy identyfikator nadal jest na liście, jeśli nie, to pokazujesz wiadomość, że zły identyfikator lub identyfikator już głosował.
Dziękuję wszystkim za lata współpracy, ciekawych pytań i dyskusji. Będę wspominał to forum z wielkim sentymentem • kukawski.pl
Avatar użytkownikakuku
Rafał Kukawski

410 Gone
410 Gone

Posty: 19813
Dołączył(a): 14.04.2002

Re: Blokada ponownego wypełnienia ankiety

Post 27.06.2018, 09:19:22

Fakt, to byłoby najlepsze rozwiązanie tylko kompletnie nie mam pojęcia jak to zrobić ani gdzie w google szukać podpowiedzi :-(
feronek
Posty: 40
Dołączył(a): 21.03.2014


Powrót do PHP i bazy danych


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot], xapedDix i 3 gości

Hosting, Domeny, SSL

Subskrypcja

Mamy 52513 zarejestrowanych użytkowników.
Najnowszy użytkownik: tuckerjackk


Nasi użytkownicy napisali:

  • 939282 wiadomości
  • w 248742 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)