Kod zabezpieczający przed spamowaniem


(system) #1

Mam taki kłopot..

nie znam się za dobrze na PHP, więc mam maly problem.

Uczę się dopiero programować w PHP tworząc od razu stronkę, gdyż trochę mi się śpieszy i.. stworzyłem formularz mailowy.. i wszystko jest już ok, lecz chciałbym dodać zabezpieczenie przed spamowanie. W tym celu należałoby dodać jakiś kod zabezpieczeniowy, który generowałby się z rysunków i trzeba by go było poprawnie przepisać do pola obok (INPUT), by dopiero wiadomość mogła zostać wysłana.

Trochę niezbyt jasno, ale myślę, że wiadomo o co chodzi.

Zna ktoś jakieś takie skrypty? Umiałbym ktoś coś takiego samemu stworzyć?

Proszę o pomoc !


(Maciej Szankin) #2

Poczytaj na php.net albo poszukaj w google o GD. W połączeniu z rand(); zrobisz token.

Dodatkowo można zabezpieczyć sesjami. Sam skrypt przetwarzania wiadomości lepiej umieścić w osobnym pliku poza plikiem z formularzem i zakończyć go

session_start(); 

$_session[zapisano] = 1; 

header("Location: index.php");

W pliku z formularzem również zamieszczasz session_start(); i warunek, że jeżeli $_session['zapisano']; ma wartość 1, to przycisk wysyłania formularza jest blokowany.


(system) #3

Ok, to inaczej.. śpieszę się na tyle, że nie mam czasu samemu pisania wszystkiego od nowa, podstaw. Sesje rozumiem i poradziłbym sobie być może, jednak w internecie jest już wiele gotowych rozwiązań, inni użytkownicy też mają swoje własne skrypty, więc pisanie wszystkiego od początku jest trochę zbędne. Prościej po prostu skorzystać z jakiegoś już gotowego darmowego skryptu. Ma ktoś coś takiego? Wie gdzie znaleźć?


(Maciej Szankin) #4

http://www.google.pl/search?hl=pl&q=token+gd&btnG=Szukaj+w+Google&lr=

a jak nie to

http://www.hotscripts.pl


(system) #5

dlaczego plik przetwarzania wiadomości utworzyć w osobnym pliku?


(Maciej Szankin) #6

Jak zrobisz w tym samym pliku przy użyciu sesji to zabezpieczenie będzie sprawne w połowie: przycisk będzie nieaktywny, ale refresh strony będzie nadal skutkował ponownym wysłaniem formularza. Jeśli będzie w osobnym nic się nie stanie, bo zostanie przeładowany tylko formularz, bez przetworzenia i co za tym idzie: nie zostaniesz zalany pocztą.


(system) #7

W dodatku zależałoby mi na tym, by kod zabezpieczający (TOKEN) był sprawdzamy automatycznie po wpisaniu zawartości obrazka (przy opuszczaniu pola, onBlur). W takim przypadku należałoby zapewne skorzystać z AJAX'a.. wiedziałby jak takie cos stworzyć?


(Maciej Szankin) #8

Asynchronicznie niczego jeszcze nie ładowałem, ale powinno być rozwiązanie w Javie. Ale tu są moje ograniczenia.

Miłej pracy.


(Airborn) #9

kamil_b17 to raczej nie jest zbyt dobry pomysł, AJAX - asynchroniczny JavaScript i XML, JS o ile rozumiem wyłączenie w przeglądarce JS powoduje również nie działalność AJAX'a a co za tym idzie daje bardzo łatwą metodę obejścia Twojego zabezpieczenia (chyba, że dezaktywacja JS nie powoduje dezaktywacji AJAXa nigdy nie sprawdzałem)


(system) #10

Hmm.. rzeczywiście, chyba masz rację Airborn. To nie byłoby zbyt dobre zabezpiecznie, zwłaszcza przed różnego rodzaju bootami, które z pewnością nie korzystają z JS. Muszę jakoś inaczej to rozkiminić, choć nie powiem.. kilka takich zabezpieczeń w AJAX'ie już widziałem (;


(Maciej Szankin) #11

Dobrym pomysłem byłoby umieszczenie w formularzu pola hidden i przy przetwarzaniu, jeśli się okażę, że pole zostało uzupełnione, proces zostaje wstrzymany.


(system) #12

ale wtedy pozostaje jeszcze napisanie samego skryptu zabezpieczającego opartego na AJAX'ie. ja niestety nie znam się.. znaczy się nie umiem połączyć php z js, choć z osobna znam oba języki. jak dla mnie to narazie bajka, poza moimi możliwościami.