![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie, mam pewien problem -
Mam skrypt na dodawanie komentarzy, chce zrobić coś, aby spamerzy nie mogli wkleić linków do innych stron, zrobiłem takie coś w JS: Kod function sprawdz() { if(document.getElementById("comment").value.indexOf("http://")!=-1) {alert("Nie można wklejać linków do innych stron"); return false;} else {window.event.returnValue=true;} } Po naciśnięciu button "wyślij" wyskakuje ten komunikat, jesli w komentarzu znajduje sie http:// - fajnie. Problem polega na tym ze i tak wysyła ta wiadomość, bo w sumie, ciężko będzie zatrzymać skrypt PHP poprzez JS, da sie takie coś zrobić? Albo da sie coś zrobić takiego w PHP? Próbowałem, Kod if ($comment == ("http://") or ("https://") or (".com") or ("[url=") or ("[/url]") or ("<a href=")or ("</a>") or (".es") or ("www")){ echo "<script language=\"JavaScript\"> setTimeout(\"window.location.replace('http://frikiz.com')\", 1) </script>"; echo "<script language=\"JavaScript\"> alert('Nie można wklejać linków do innych stron!') </script>"; sleep (5); $comment = exit; } Niestety, te działania sie włączają od razu po wczytaniu strony. Reasumując, jak można zrobić, tak ze, kiedy znajdzie linki w textboxie, zatrzymywano wykonywanie skryptu, i dawało jakaś wiadomość dla użytkownika, aby wiedział o co "kaman" ![]() Pozdrawiam. Wogole jestem jeszcze bardzo słabym webmasterem, wiec możecie sie spodziewać głupich błędów. BTW. wkleję skrócony skrypt na te komentarze, tak na wszelki wypadek:
Ten post edytował inOs 9.08.2008, 10:09:18 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 1 Dołączył: 9.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Możesz użyc onsubmit w formularzu.
Kod <form action="" method="post" onsubmit="check();"> ... </form> Funkcja check (czy jak tam ją sobie nazwiesz) musi zwracaą wartość true albo false. Jezeli zwróci false to wysyłanie formularza zostaje przerwane. Poszukaj sobie o "onsubmit" w necie jeżeli za mętnie tłumacze, ale to powinno rozwiązać twój problem ![]() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Tak czy tak musisz to zrobić w php. Sprawdzanie tylko i wyłącznie w jsie to pomyłka jakich mało, a ktoś kto ma podstawową wiedzę o przeglądarce obejdzie Ci to w 30 sekund.
Zapoznaj na przykład się ze stristr" title="Zobacz w manualu PHP" target="_manual, tudzież preg_match" title="Zobacz w manualu PHP" target="_manual oraz wyrażeniami regularnymi. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ok... a jak można zatrzymać skrypt?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Najprościej przez die('Komunikat').
Ale o wiele bardziej profesjonalnie jest wrócić na stronę z formularzem, wyświetlić błąd i uzupełnić pola formularza wprowadzonymi już do niego przez użytkownika wartościami (sesje ogólnie do tego polecam i funkcję header). |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
if ($com == ("http://") or ("https://") or (".com") or ("[url=") or ("[/url]") or ("<a href=")or ("</a>") or (".es") or ("www")){
die('No puede poner links a otras paginas web'); } Dlaczego mi od razu wyskakuje die, a nie dopiero po sprawdzeniu formularza? |
|
|
--koki-- |
![]()
Post
#7
|
Goście ![]() |
Nie chciało mi sie dokładnie analizować, ale wydaje mi się że ten warunek jest sprawdzany za kazdym uruchomieniem strony, a powinien byc tylko w przypadku kiedy uzytkownik wyślie formularz, wiec najpierw powienienes sprawdzi czy t ozrobił mozesz to zrobic dodają pole hidden i potem sprawdzajac czy istnieje takie jaką mu wpisałes nazwe, albo lepszym chyba rozwiazaniem jest w <inptu type=submit> dodac parametr name o wartosci dajmy na to 'wyslano' i potem w skrypcie sprawdzasz czy uzytkownik kliknął to w ten sposób:
Jeżeli zbyt pobierznie przeanalizowałem ten Twoj skrypt i juz masz tam sprawdzenie tego w jakis sposob to przepraszam ![]() |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 25 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 03:50 |