Innym doskonałym sposobem obsługi spam jest zweryfikowanie danych ... które pomaga chronić przed SUS (głupi zespół użytkownika), jak również. Tak, tylko że w górę. Problem z tym jest kwota wysiłek potrzebny do kodu, takie jak filtry antyspamowe, że dla wszystkich formularzy na swojej stronie internetowej. Możemy ten proces znacznie szybciej choć przez automatyzację sposób blokować spam danych z wyrażeń regularnych na powtórzenie warunków.
Utwórz formularz w formacie HTML w normalny sposób i upewnij się, że może wywołać następującą funkcję:
-
//USAGE: $results .=(Continuous for multiple fields) formcheck($postdata,"Field",length(number),"A or AN, ALL, EMAIL, WEBSITE, etc.","REQUIRE, NA"); -
//EXAMPLE: $results .= formcheck($postdata,"Name",30,"AN","REQUIRE"); Then check $results for errors. If == "" then process form. -
function formcheck ( $data , $field , $length , $type , $require ) { -
if ( $data == "" && $require == "REQUIRE" ) { -
$error .= "<li class= \" errors \" ><b>" . $field . "</b> Cannot be left blank</li>" ; -
return $error ; -
} elseif ( $data == "" && $require == "NA" ) { -
return ; -
} -
if ( strlen ( $data ) > $length ) $error .= "<li class= \" errors \" ><b>" . $field . "</b> is too long. Please use <b>" . $length . "</b> characters or less.</li>" ; -
switch ( $type ) { -
case "AN" : if ( ! preg_match ( "/^[a-z0-9 ] $/i" , $data ) ) $error .= "<li class= \" errors \" ><b>" . $field . "</b> can only contain letters and numbers and spaces</li>" ; break ; -
case "A" : if ( ! preg_match ( "/^[az] $/i" , $data ) ) $error .= "<li class= \" errors \" ><b>" . $field . "</b> can only contain letters and spaces</li>" ; break ; -
case "N" : if ( ! preg_match ( "/^[0-9] $/" , $data ) ) $error .= "<li class= \" errors \" ><b>" . $field . "</b> can only contain numbers</li>" ; break ; -
case "ALL" : if ( ! preg_match ( "/^[a-z0-9 \: \- \_ \? \& \; \# \. \" \/ \, \' \\ \ ] $/i" , $data ) ) $error .= "<li class= \" errors \" ><b>" . $field . "</b> contains invalid characters</li>" ; break ; //htmlspecialchars($data); better to do this for general data -
case "DATE" : if ( preg_match ( "/^[0-9]{2}-[0-9]{2}-[0-9]{4}$/" , $data ) === 0 ) $error .= "<li class= \" errors \" ><b>" . $field . "</b> must be in the format MM-DD-YYYY</li>" ; break ; -
case "PASS" : if ( ! preg_match ( "/^.*(?=.{6,})(?=.*[0-9])(?=.*[az])(?=.*[AZ]).*$/" , $data ) ) $error .= "<li class= \" errors \" ><b>" . $field . "</b> must be at least 6 characters with at least one lower case letter, one upper case letter & one digit.</li>" ; -
case "WEBSITE" : if ( ! preg_match ( "/^[a-z0-9 \. \/ \- :] $/i" , $data ) ) $error .= "<li class= \" errors \" ><b>" . $field . "</b> entered is invalid.</li>" ; break ; -
case "EMAIL" : if ( ! eregi ( "^[_a-z0-9-] ( \. [_a-z0-9-] )*@[a-z0-9-] ( \. [a-z0-9-] )*( \. [az]{2,4})$" , $data ) ) $error .= "<li class= \" errors \" >The <b>" . $field . "</b> address entered is invalid.</li>" ; break ; -
} -
return $error ; -
} - Pobierz ten kod: 0416formchecking.txt
Poproś go za pomocą coś takiego. Możesz spróbować w ślepe wypełnianie danych dla $ Postdata i badania to: formcheck ($ Postdata, "Nazwa", 30 "AN", "żądać")
- $ Postdata - Powinno to przybrać formę $ _POST [ 'imie']. Weź do ręki zawsze zmienne z $ _POST aby zapobiec manipulacjom zmiennej / resetowanie w pomiędzy. Można również zrobić wyciąg ($ _POST), że jeśli gung-ho o użyciu klucza jako zmienna. W tym przypadku, który byłby $ nazwa.
- "Nazwa" - To jest identyfikator dla każdego połączenia odczytywalny człowieka istnieje wersja tego, co było, że wywołania funkcji kontroli. Będzie on używany tylko wtedy, gdy użytkownik napotka błąd.
- 30 - Może to być dowolny numer i określa maksymalną długość. Dane mogą przejść przez tę funkcję OK, jeśli jej między 1-30 znaków.
- "AN" - AN w przypadku masz cala można patrzeć w funkcję dalszych szczegółów wyrażenia regularne, co nie w każdym przypadku. AN jest przeznaczona do używania alfanumerycznych sprawdzający. Anotherwords tylko liter, cyfr i spacji (które można zmienić ręcznie, jeśli chcesz).
- "Wymagane" - Jeśli zostanie wybrana opcja to "nie dotyczy" pozwoli ona dziedzinie przekazywania żadnych danych wprowadzonych w nim. Jednak jeśli jest to wymagane będzie sprawdzenie wobec innych parametrów.
Być może chcesz zrobić kilka dodatkowych badań w sprawie wyrażenia regularne, jeśli chcesz dodać lub zmienić funkcje tutaj. Ale to powinno obejmować terenie pracy, aby móc skoncentrować się na swoje unikalne poprawności danych scenariusze.
I zazwyczaj do mojej formy 1 strona i "kontroli". W następujących że mogę przestać struktura raportu i różnych informacji wewnątrz IF oświadczenia złożyć, aby sprawdzić, czy został wciśnięty, jeśli dane są dobre, a co zrobić z tym danych. Ale również pomaga utrzymać informacji z poprzedniego naciśnij przycisk, więc mogę pozwolić użytkownikowi na ponowne uważają, że ich informacje i ewentualnie go zmienić. Oczywiście byłby to dobry pomysł, aby uruchomić funkcję formcheck na danych skrypt go przed powrotem do wartości wejściowych, aby upewnić się, użytkownik nie jest niegrzeczne wprowadzania danych XML lub skryptu. Należy to zrobić w każdej chwili użytkownik twierdzi, że dane są wyświetlane z powrotem do nich.
Użyj: htmlspecialchars ($ data) i mysql_real_escape_string ($ data) lub coś takiego za wkład wartość:
if (isset ($ email) & & formcheck ($ _POST [ 'email'], "E-Mail", 50 "EMAIL", "żądać") == "") (echo $ email;)
Te same funkcje, jak można użyć poniżej, ale tylko z wykorzystaniem funkcji ponownie. Jedyną Wadą jest usuwający dane wprowadzone przez użytkownika, jeżeli całkowicie dopasowanego nielegalnej produkcji. Nie jest to zbyt trudne do dodania, w którym mógłbym zrobić w późniejszym czasie, w oczekiwaniu na jakiekolwiek wnioski.
-
//Heres my quick usage example -
if ( isset ( $_POST [ ’submit’ ] ) ) { -
$errorcatcher .= formcheck ( $postdata , "Name" , 30 , "A" , "REQUIRE" ) ; -
$errorcatcher .= formcheck ( $postdata , "Email" , 50 , "EMAIL" , "REQUIRE" ) ; -
$errorcatcher .= formcheck ( $postdata , "Website" , 100 , "WEBSITE" , "NA" ) ; -
if ( $errorcatcher == "" ) { //if empty then no errors -
//SUCCESS -
} else { //at least one error was found. lets print them. -
echo $errorcatcher ; -
} -
} -
if ( isset ( $errorcatcher ) || $_POST [ ’submit’ ] == "" ) { -
//Display the form -
} - Pobierz ten kod: 0416formcheckusage.txt
A dobrą praktyką jest, aby wyświetlić neat and tidy formy. Używaj CSS, tabele i etykiety tagów. Check out the form zgodnie z treścią na stronie mmorpgexposed.com. Nie moje własne trąbienie klaksonu, ale jest ono prezentowane w zrozumiały, zorganizowany, mody i zawodowych. Uwaga, pod warunkiem, że dodatkowy tekst, który określa dla użytkowników, jakiego rodzaju wkład Szukam. IE: "3-15 Alfanumeryczny". Realizowania i potwierdzić, że w sprawie. Nie ma łatwiejszego sposobu, aby zwiększyć współczynnik odrzuceń niż się założyć, że są mylące formularze do wykorzystania (lub te, które musisz wypełnić kilka razy, ponieważ nie rozumie, dlaczego Twój wkład nie działa).
Jeśli jesteś ambitny poczucie, że uruchomienie kwerendy IP użytkowników loguje się do tabeli i podwyżki na liczbę kolumn, aby zobaczyć, jak wiele prób potrzeba, by ludzie mogli wypełnić formularz teraz. Zostaw ją na tydzień i powtórzyć test z tych zmian i czy istnieje duża różnica w czasie ją wyrzuca błędy. Myślę byłaby większa różnica w kilku błędy na różnice w rejestracji użytkownika zobaczysz.





































Myślę, że, sa wielki post.