Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%)
|
napisalem prosty skrypt dodawania komentarzy na stronke i mam pytanie jak zrobic zeby skrypt nie dodawal ciagle tygo samego po nacisnieciu odswieżania??
---- Posty będące duplikacją postów już zawartych w temacie, będą bez ostrzeżenia usuwane. Ma to zapobiedz tworzeniu się zbędnego śmietnika moderator |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 2 Dołączył: 14.07.2006 Ostrzeżenie: (0%)
|
to moze i ja dorzuce swoje 3 grosze.
# rozwiazanie w stylu js/ajax jest moim zdaniem chybione, bo po co wogole angazowac ajaxa do rzeczy tak banalnej jak wyslanie formularza. # rozwiazanie z dodawaniem ukrytego pola do formularza po kliknieciu submit w formularzu tez nie bedzie dzialalo, bo klikniecie F5 powoduje wyslanie ponownie TEGO SAMEGO formularza, wiec nie zostanie wyslany nowy z nowo wygenerowanym polem - a chodzi tutaj chyba o zabezpieczenie przez refresh'em a nie ponownym klikaniem w submit. kolega wczesniej podawal przyklad:
a w forumularzu:
i tak jak napisalem to oczywiscie nie dziala, bo klikniecie F5 (refresh) nie powoduje ponownej generacji formularza czyli pole
nie zostanie wyslane z formularzem # rozwiazanie z zapisywaniem IP oraz czasu i sprawdzanie czy nowy post jest z tego samego IP co ostatni, jesli tak to ile minelo czasu - jest rowniez niepoprawne. po pierwsze co jesli dodaje dwa posty w roznych topicach w bardzo krotkim czasie? z tym oczywiscie mozna sobie poradzic, bo mozna sprawdzac czy nowy post jest z tego samego topicu czy nie, ale na jakiej zasadzie ma byc liczony czas po ktorym mozna ponownie dodac posta? 60 sekund jak zaproponowal kolega wyzej? to klikne F5 po 65 sekundach. 120 sekund? to klikne F5 po 125 sekundach? 240 sekund? itd. To rozwiazanie moze byloby i dobre, ale na calkowicie inny problem. Na spamerow, trolli czy inne typu wynalazki, czyli zablokowanie mozliwosci wysylanie duzej ilosci postow przez tego samego uzytkownika w krotkim czasie. Ale bynajmniej nie jest to rozwiazanie na refresh o ktory sie w tym topicu rozchodzi. # rozwiazanie z przechwytywaniem wyjatkow z bazy owszem dziala, ale tylko jesli zapisujemy tresc formularza do bazy. a co jesli ma byc zapisywany do pliku, wyslany mailem, czy cokolwiek innego ma sie z nim dziac? # rozwiazanie z dodawaniem atrybutow UNIQUE do pol bazy zadziala jak wyzej - tylko w przypadku, gdy dane z formularza maja wyladowac w bazie. Wiec jak to najlepiej zrobic i tak zeby dzialalo zawsze? # jednym z rozwiazan jest to o czym zapewne wiekszosc z was wie. czyli przekierowanie w pliku do ktorego odwoluje sie akcja formularza. jesli mamy formularz: to w pliku wykonaj_akcje.php zapisujemy:
# drugie rozwiazanie, ktore ja osobiscie najczesciej stosuje, jest to o czym pisal nospor. w momencie generowania formularza generujemy pole typu "hidden" z jakims hashem/tokenem czy jak tam kto woli nazywac. ma to byc jakis unikalny ciag znakow/liczb:
wartosc tego pola zapisujemy do sesji, do cookie, do pliku albo do bazy - jak komu w danej chwili wygodniej/jakie ma mozliwosci. w przypadku zapisu da bazy tabela z postami bedzie miala dodatkowe pole "hash". po kliknieciu F5 (refresh) zostanie wyslany ten sam formularz, czyli dokladnie z tym samym hashem - nie bedzie on od nowa wygenerowany. teraz wystarczy sprawdzic czy dany hash mamy juz w sesji, w bazie, w cookie, w pliku czy gdziekolwiek indziej i problem z powtorzeniem zalatwiony i tutaj juz nie chodzi o sprawdzenie czy to ten sam uzytkownik, to samo IP, ponownie ten sam tekst czy cokolwiek innego - sprawdzamy dokladnie to o co chodzi - czy jest proba ponownego wyslania tego samego formularza. |
|
|
|
skowron-line odświeżanie strony, zapis 26.03.2006, 21:56:00
TomASS Możesz albo zablokować możliwość dwóch postów tego... 26.03.2006, 22:24:54
mike_mech Ponowny zapis do bazy po odświeżeniu strony 27.03.2006, 10:09:24
huntercs w prosty sposób można to osiągnąć, mianowicie:
np.... 27.03.2006, 11:23:36
skowron-line a jezeli chcem zrobic to przy zapisie do pliku .tx... 27.03.2006, 21:35:11
erix to nie ma znaczenia, co robisz po submicie formula... 28.03.2006, 07:27:16
nospor Cytat(huntercs @ 2006-03-27 12:23:36)w prosty... 28.03.2006, 07:34:02
skowron-line to chyba najlepszym sposobem jest po nacisnieci su... 28.03.2006, 11:11:27
nospor Ja to robię jeszcze inaczej.
PRzy tworzeniu formu... 28.03.2006, 12:14:16
skowron-line a do bazy danych to wymyslilem ze moge wyciagnac o... 28.03.2006, 20:52:50
huntercs tylko po co mieszać do tego bazę? dodaktowe zapyta... 28.03.2006, 23:01:57
Kuziu A nie prościej zrobić np. dodanie commenta po czym... 28.03.2006, 23:15:40
mike_mech Cytat(huntercs @ 2006-03-28 23:01:57)tylko po... 29.03.2006, 08:56:34
nospor CytatWystarczy nałożyć kluch UNIQUE.Ale nalozysz k... 29.03.2006, 08:59:38
mike_mech Cytat(nospor @ 2006-03-29 08:59:38)a co jesli... 29.03.2006, 09:12:59
nospor dalej sie z tobą nie zgadzam. Istnieją przecież ta... 29.03.2006, 09:18:12
mike_mech Ładnie, bardzo ładnie.
Ja to robię tak:[PHP] pobi... 29.03.2006, 09:30:15
nospor A że ja upierdliwy jestem...
A co w przypadku, gdy... 29.03.2006, 10:00:19
skowron-line ja napisalem cos takiego i dziala
[PHP] pobierz, p... 29.03.2006, 10:00:31
nospor ale o ile dobrze wczytuje sie w ten kod, to ty zro... 29.03.2006, 10:20:24
skowron-line To ma byc tak:
wpisujesz jakis text i naciskasz su... 29.03.2006, 10:38:41
nospor Cytatwpisujesz jakis text i naciskasz submit wtedy... 29.03.2006, 10:41:49
skowron-line nospor zwracam honor przeanalizowalem ten skrypt i... 30.03.2006, 10:16:35
Krisu Da sie zrobic jakos tak, zeby dodaj i zapisz bylo ... 31.03.2006, 19:55:20
tes nospor, a mógłbyś napisać jak potem z tej sesji wy... 11.04.2006, 01:21:35
nospor @tes ja go nie wyrzucam. Jak pisalem, generuję uni... 11.04.2006, 06:47:36
Pilsener Porównać IP gościa i czas - moim zdaniem najlepszy... 19.04.2006, 08:31:30
free Ja stosuje prosta metode, poprostu za pomocą JS lu... 16.11.2006, 13:44:16
Cypherq O rany, zaczęliście całą religię do tego problemu ... 19.04.2007, 14:42:07
Sedziwoj Może większego nie, ale jak ja szybko piszę i odpo... 19.04.2007, 15:41:41
l0co Niepotrzebnie zakładałem nowy wątek - więc dopisuj... 6.09.2007, 12:58:17
WebCM Jeżeli chcemy tylko ochronić skrypt prze... 30.12.2007, 14:52:26
nospor źle.
Ajax/js nie jest rozwiązaniem na p... 30.12.2007, 14:57:21
mroczek Jeżeli chcemy zrobić to za pomocą sesji to sugeruj... 9.11.2008, 13:23:14
mlattari hmm... najprościej to chyba przed przetwarzaniem i... 27.02.2009, 01:31:26
piotr94 u mnie problem znika wraz z samym tokenem - za każ... 12.11.2009, 16:39:52
Thorang Hoog Hmm jak tak czytam wasze wypowiedzi to o mało nie ... 17.12.2009, 23:28:55
andycole Temat trochę leciwy, ale jako że przyklejony to ch... 1.10.2010, 22:55:14
radziopoke Odkopię trochę temat bo i ja zacząłem poszukiwać s... 7.02.2011, 17:13:44
AndyPSV dorzuce jeszcze do wypowiedzi wszystkich - prosty ... 11.03.2011, 12:08:54
picios Stare już, ale dodam od siebie:
[PHP] pobierz, pla... 6.06.2011, 23:13:50
olszam stary temat ale może coś od siebie raz dam
[PHP] p... 11.10.2012, 15:52:08
mruz Mam problem przy wysyłaniu takiego formularza z up... 16.03.2013, 20:40:22
CuteOne [PHP] pobierz, plaintext $_SESSION['crf'] = md5... 16.03.2013, 21:01:43
mruz Dzięki @CuteOne, pomogło. 16.03.2013, 21:23:27
Khartas Mam podobny problem z powtarzaniem wpisów. Gdzie i... 31.03.2013, 23:15:17
gitbejbe odgrzewam kotleta.
co do @up. to po 17stej linijc... 20.06.2013, 10:14:36
Damonsson Niesamowitą głupotę, to napisałeś, co najwyżej. Po... 20.06.2013, 10:24:22 ![]() ![]() |
|
Aktualny czas: 21.11.2025 - 01:30 |