![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 31.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Taki mały problem.. próbowałem już chyba z 10 sposobów na porównanie wpisanego komentarza z tymi już wpisanymi wcześniej i z jakiegoś powodu zamiast porównywać, sprawdza owszem ale nie blokuje niczego - głównie chodzi mi o to żeby się nie dodawały komentarze po odświeżeniu strony
![]() Możecie popatrzeć niżej co mam nie tak? Tylko nadmienię że to już chyba 10 jeśli nie 12 wersja skryptu i pewnie tam jest namieszane za bardzo.. Będę bardzo wdzięczny za obejrzenie tego świeżym okiem ...
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 23.12.2006 Skąd: Będzin / Kraków Ostrzeżenie: (0%) ![]() ![]() |
A próbowałeś funkcji unset() ? Zastosuj go pod koniec if'a
![]() Ten post edytował matty7 14.07.2012, 20:28:09 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 31.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
czyli że np
if ($add) { unset($_POST['zmienna']) } ![]() Wolałbym jednak porównywać żeby jednocześnie sprawdzało czy już takie wpisy są... Jeszcze dodam ze to stronka z mojego podpisu ... zebyscie mogli zobaczyc jak to wyglada .. Ten post edytował konradkw 14.07.2012, 20:42:06 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 9 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
W formularzu polu ukrytym generuj i przekazuj zmienną losową lub np. liczbę mikrosekund (funkcja microtime) i dodawaj tę zmienną do bazy przy rekordzie.
Później przy dodawaniu komentarza możesz sprawdzać czy taka zmienna już jest w bazie i jeśli jest to odrzucaj komentarz. Zmienną losową możesz tez utworzyć przez połączenie liczby mikrosekund i np. liczbą losową rzędu 1000. Jaka jest szansa, że dwóch kolesi w tej samej mikrosekundzie wylosuje tą samą liczbę losową? Ogólnie preferuję łączenie takiej pseudolosowości właśnie z funkcjami czasu - sama losowość nie gwarantuje nam, że ktoś kiedyś nie wylosuje takiej samej liczby.... No i co jakiś czas możesz w bazie czyścić te pola przy rekordach starszych niż np. 1 dzień ![]() Ten post edytował skleps 14.07.2012, 20:49:28 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli chodzi Ci tylko o odświeżenie strony to wystarczy, że po obsłudze danych z POST i dodaniu do bazy zrobisz redirect.
-------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 31.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
ale czemu utrudniać... nie chcę mieć dwóch takich samych komentarzy w bazie więc nie wystarczy porównać treści?
redeemer - przekierowanie do bloga spowrotem? to powinno zadziałać bo wyczyści zmienne... widzicie może dlaczego duplikują się wpisy? |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
To załóż indeks typu UNIQUE w bazie (np. na autor,komentarz). A tak właściwie to po co ta pętla while w PHP jak sama baza Ci to może zwrócić jednym zapytaniem, czy już taki komentarz jest, czy nie.
Edit: Ja polecałbym jednak redirect, a jeśli chciałbyś się zabezpieczyć przed spamowaniem (bo samo porównanie treści mało Ci da) to zrób limit czasowy, że można dodać X komentarzy w ciągu Y minut. Ten post edytował redeemer 14.07.2012, 20:59:30 -------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 31.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
mogę prosić o poprawę tego co już mam żebym miał doraźnie rozwiązane? później ewentualnie bym to zmienił na to co proponujecie ..? Będę wdzięczny.
Naprawde nie widze dlaczego wpisy sie duplikuja - czy moze ktos podpowiedziec prosze? Chodzi mi o juz nie tyle o to ze da sie wpisac ten sam komentarz ale o to ze po dodaniu jednego komentarza dodaje sie np ich 5 lub 6... :/ jak widzicie ponizej, wpisy sie powielaja bez powodu .. ale wyswietla sie tylko JEDEN Z NICH!! dlaczego .. ? nie rozumiem co sie dzieje .. ![]() Ten post edytował konradkw 15.07.2012, 23:57:11 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 121 Pomógł: 22 Dołączył: 22.06.2012 Ostrzeżenie: (0%) ![]() ![]() |
Zacznijmy od tego że na końcu masz coś w nadmiarze klamerek jak widać po tym jak ułożyłem skrypt. Kolejna rzecz to twoje porównywanie nie działa z prostego powodu ponieważ porównujesz każdy element z bazy i przechodząc do kolejnego elementu zapominasz o wyniku porównania poprzedniego ( bo podmieniasz zmienną ). To co dałem, wyszuka ci w bazie czy jest rekord w którym `komentarz` = '$a' LIMIT 1 dałem po to by skrypt nie szukał już dalej, bo nie ma to sensu. Jeżeli znajdzie to $x = 'dalej'; bez żadnego elsa by nie podmieniał rekordów ( chociaż już teraz LIMIT 1 blokuje dalsze podmienianie ) Dalej jest już twój skrypt ( z małą zmianą w warunku ifa - dodałem @ by nie pluł się w że takiej zmiennej nie ma gdy nie znajdzie nic w bazie ). Ten post edytował Shido 16.07.2012, 14:03:19 -------------------- Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 31.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
nie dodaje komentarzy wcale teraz :/
co to znaczy: @$x ![]() edit: bez @ tez nie dziala .. Ten post edytował konradkw 16.07.2012, 14:12:45 |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 121 Pomógł: 22 Dołączył: 22.06.2012 Ostrzeżenie: (0%) ![]() ![]() |
Skrewiłem, źle obrałem warunek
![]() ![]() A @$x powoduje że debuger nie będzie krzyczał jeżeli zmienna $x nie będzie istnieć. Teraz powinno być dobrze.
Ten post edytował Shido 16.07.2012, 14:14:39 -------------------- Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 31.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
jakiego debugera uzywasz? ja szukam dobrego bo dreamviewer nei wylapuje wszystkiego ..
po poprawce juz nie duplikuje wpisow - dziekuje uprzejmie!! zastanawia mnie tylko jedna rzecz .. dlaczego po dodaniu wpisu (strona sie odswieza zeby wyslac info) najnowszy wpis sie nie pokazuje do kolejnego odswiezenia .. ? |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 121 Pomógł: 22 Dołączył: 22.06.2012 Ostrzeżenie: (0%) ![]() ![]() |
Ja korzystam ze standardowego Apache'owego tyle że ustawiam
I mi wtedy najmniejsze błędy wyświetla. Co do odświeżania komentarze musiałyby być odświeżane niezależnie od strony. Ewentualnie po dodaniu komentarza wymuś odświeżenie, lub przenieś skrypt dodania komentarza przed skrypt ich wyświetlania ( najbardziej prawdopodobne że tak masz ![]() -------------------- Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 31.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
zgadza sie - przenioslem na sama gore .. i jest gitara..
Gdzie to "ini_set('display_errors', 1);" ustawiasz? w apache? czy dajesz to w skrypcie? - nigdy tego nie uzywalem .. |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 121 Pomógł: 22 Dołączył: 22.06.2012 Ostrzeżenie: (0%) ![]() ![]() |
ogólnie opcje są 2 ustawiasz w PHP.ini display_errors na 1 lub dajesz w pliku php. Jeżeli cały serwer opiera się na np. pliku index.php to wystarczy że dasz to na początku tego index i będzie jak trza, w innym wypadku musisz dać w każdym pliku w którym chcesz by wyświetlały się błędy.
Ten post edytował Shido 16.07.2012, 14:28:41 -------------------- Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 05:06 |