![]() |
![]() ![]() |
![]() |
![]()
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 -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Możesz albo zablokować możliwość dwóch postów tego samego usera na dany temat pod sobą, albo sprawdzać np. czy pierwsze (powiedzmy) 50 znaków poprzedniego posta, różnią się od tego właśnie dodawanego.
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 6.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
w prosty sposób można to osiągnąć, mianowicie:
np.:
a w forumularzu:
teraz po odświeżeniu strony, 2 raz nie doda się wpis do bazy ![]() Ten post edytował huntercs 27.03.2006, 11:25:08 -------------------- ![]() ![]() |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
a jezeli chcem zrobic to przy zapisie do pliku .txt??
Moze jest to banalne pytanie ale naprawde niewiem -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
to nie ma znaczenia, co robisz po submicie formularza, w skrypcie
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat(huntercs @ 2006-03-27 12:23:36) w prosty sposób można to osiągnąć, mianowicie: np.:
a w forumularzu:
teraz po odświeżeniu strony, 2 raz nie doda się wpis do bazy ![]() no nie do konca tak jest. tu chodzi o taki refresh przez wcisniecie F5 lub ctrl+r, a nie ponowne wcisniecie ręcznie submita. Taki refresh o którym mowa, wysyla jeszcze raz ten sam formularz, z tymi samymi polami i wartościami. Tu nic nie da, ze ty dodasz dodatkowe pole, gdyż ono nie zostanie przy refreshu uwzględnione -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
to chyba najlepszym sposobem jest po nacisnieci submita zrobic zapis i przekierowac na stronke na ktorej sa wyswielane komentarze
Ten post edytował skowron-line 28.03.2006, 11:13:59 -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ja to robię jeszcze inaczej.
PRzy tworzeniu formularza, generują unikalny identyfikator, na podsawie chociazby timestampa i czegos tam jeszcze. Identyfikator ten dokladam do formularza, jako wartość pola ukrytego. Po wyslaniu formularza sprawdzam, czy dany identyfikator jest zapisany w sesji. jesli nie, zapisuję go do sesji a formularz akceptuję jako prawidlowy. jesli jednak ten identyfikator jest juz zapisany w sesji, znaczy ze jest to refresh i dane z formularza odrzucam. Dzieki takiemu podejsciu, mogę pozostac dalej na stronie z formularzem, bez przekierowania. Jest to mi czasami potrzebne. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
a do bazy danych to wymyslilem ze moge wyciagnac ostatni rekord z bazy i porownac go z wpisywanym i jesli bedzie identczny to odrzucic. to chyba nienajgorsze rozwiazanie
Ten post edytował skowron-line 28.03.2006, 20:53:48 -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 6.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
tylko po co mieszać do tego bazę? dodaktowe zapytanie...
![]() lepiej zrobić z COOKIE/SESSION coś podobnego do tego co zaproponował nospor -------------------- ![]() ![]() |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 743 Pomógł: 0 Dołączył: 11.11.2003 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
A nie prościej zrobić np. dodanie commenta po czym header("Location: adres.php");
I wszystkie F5 z głowy ? -------------------- Słońce zachodzi ... kolejna noc nadchodzi ...
|
|
|
![]()
Post
#13
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(huntercs @ 2006-03-28 23:01:57) tylko po co mieszać do tego bazę? dodaktowe zapytanie... ![]() Ależ jakie dodatkowe zapytanie? Wystarczy nałożyć kluch UNIQUE. Kliknij w linka, którego dałem na górze wątku. Ja uważam że to jest najlepsze rozwiązanie. Nie angażujesz żadnej sesji, ciasteczek ani niczego. Po prostu działa ![]() |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Wystarczy nałożyć kluch UNIQUE. Ale nalozysz klucz na wszystkie pola? a co jesli rekord moze sie powtorzyc poprzez jawne wpisanie? A co jesli nie mozna zalozyc unique na zadne pole, gdyz kazde z osobna moze sie powtarzac. Osobiscie nie podoba mi ten sposob zabezpieczenia przed refreshem. Nie bedziemy przeciez zmieniac struktury bazy tylko pop to by uniknać refresha. Do tego są inne rzeczy juz tu wymienione
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#15
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(nospor @ 2006-03-29 08:59:38) a co jesli rekord moze sie powtorzyc poprzez jawne wpisanie? A co jesli nie mozna zalozyc unique na zadne pole, gdyz kazde z osobna moze sie powtarzac. Więc należy wybarć kombinacją pól, które powtarzać się nie powinny. W 99% przypadków kombinacja taka istnieje. Cytat(nospor @ 2006-03-29 08:59:38) Osobiscie nie podoba mi ten sposob zabezpieczenia przed refreshem. Nie bedziemy przeciez zmieniac struktury bazy tylko pop to by uniknać refresha. Do tego są inne rzeczy juz tu wymienione Prezcież to nie jest zmiana struktury bazy. Przy jej projektowaniu powinno się założyć unikalność na pola, które tego wymagają. A poza tym gdyby to do aplikacji klienckiej miało należeć kontrolowanie unikalności wprowadzanych danych, to po co w bazach byłby w ogóle ten mechanizm. Ja uważam że najlepiej baza zadba sama o siebie, mało tego jest to sapoób właśnie do tego stworzony, i jeszcze mniej tego ![]() Nie powiesz mi ~nospor, że pisanie mechanizmów ciasteczek, zapisywanie informacji w sesji, ciągłe pilnowanie tego jest wygodniejsze niż blok try ... catch i wyrzucanie wyjątku z odpowienim kodem (1062 w tym przypadku). |
|
|
![]()
Post
#16
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
dalej sie z tobą nie zgadzam. Istnieją przecież tabele, w których nie może byc pol unikatowcyh. nie dlatego ze baza na to nie pozwala, ale dlatego, ze zalozenia dla danej tabeli na to nie pozwalają. a konkretnie pozwalają na takie same rekordy. moze tak byc.
Cytat Nie powiesz mi ~nospor, że pisanie mechanizmów ciasteczek, zapisywanie informacji w sesji, ciągłe pilnowanie tego jest wygodniejsze niż blok try ... catch i wyrzucanie wyjątku z odpowienim kodem (1062 w tym przypadku). Obys sie nie zdziwil ![]() No i niepowiesz mi chyba, ze jest to nie wygodne ![]() edit: Cytat Prezcież to nie jest zmiana struktury bazy. źle sie wyslowilem. chodzilo mi, ze nie bede zakladal uniqow jesli nie potrzebuje, tylko poto by refresha uniknąc
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#17
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Ładnie, bardzo ładnie.
Ja to robię tak:
Połączenie Agavi i Creole'a. Jak mi wyskoczy wyjątek to mogę z aplikacją zrobić wszystko, zależy to od tego jaki. Każdy ma swój najlepszy sposób ![]() |
|
|
![]()
Post
#18
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A że ja upierdliwy jestem...
A co w przypadku, gdy mamy formularz, ale jego wynik nie jest zapisywany do bazy, tylko wysylany mailem? Jest to tzw. formularz kontaktowy. Wtedy uniqi na bazie nam nic nie dadzą ![]() Oczywiście można wówczas użyc header, lub sesje. A jeszcze pytanko bo nie sprawdzalem tego nigdy. Zalozmy ze uzywamy header, zeby przekierowac po wyslaniu formularza. A czy jest mozliwa sytuacja, ze koles zanim zostanie przekierowany zdązy wcisnąć F5, czyli tym samym ponownie wysle ten sam formularz? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
ja napisalem cos takiego i dziala
prosze o lekka krytyke jesli komus sie nie bedzie podobac ![]() -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#20
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
ale o ile dobrze wczytuje sie w ten kod, to ty zrobiles to, co zaproponowal wczesniej huntercs (i to nie dokladnie tak). Jak juz pisalem wczesniej to nie zadzial przy refreshu.
W jaki sposob ty to testowales? Bo to wyglada tak: jesli wcisniesz zapisz, to dogenerowujesz do formularza hiddena, z ostatnim wpisem z bazy, ale ten wpis nie jest tym, co aktualnie dodajesz. Potem sprawdzasz, czy wpis z bazy z hiddena rowny jest aktualnemu. To bedzie rowne dopiero przy ktoryms tam razie. A wsytuacji, gdy wygenerujesz formularz pierwszy raz, wscisniesz zapisz a potem dasz refresh, to ci nie zadziala. No chyba ze mamy co innego na mysli mówiąc refresh ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 22.05.2025 - 13:39 |