Another great way to handle spam is to validate your data… which helps to protect against SUS (silly user syndrome) as well. Innym doskonałym sposobem obsługi spam jest zweryfikowanie danych ... które pomaga chronić przed SUS (głupi zespół użytkownika), jak również. Yes I just made that up. Tak, tylko że w górę. The problem with this is the amount of effort it takes to code spam filters like that for all the forms on your website. Problem z tym jest kwota wysiłek potrzebny do kodu, takie jak filtry antyspamowe, że dla wszystkich formularzy na swojej stronie internetowej. We can make this process a lot faster though by automating a way to block spam data with regular expressions on repeating conditions. Możemy ten proces znacznie szybciej choć przez automatyzację sposób blokować spam danych z wyrażeń regularnych na powtórzenie warunków.

Create a form in html as you normally would and make sure you can call the following function: Utwórz formularz w formacie HTML w normalny sposób i upewnij się, że może wywołać następującą funkcję:

  1. //USAGE: $results .=(Continuous for multiple fields) formcheck($postdata,"Field",length(number),"A or AN, ALL, EMAIL, WEBSITE, etc.","REQUIRE, NA");
  2. //EXAMPLE: $results .= formcheck($postdata,"Name",30,"AN","REQUIRE"); Then check $results for errors. If == "" then process form.
  3. function formcheck ( $data , $field , $length , $type , $require ) {
  4. if ( $data == "" && $require == "REQUIRE" ) {
  5. $error .= "<li class= \" errors \" ><b>" . $field . "</b> Cannot be left blank</li>" ;
  6. return $error ;
  7. } elseif ( $data == "" && $require == "NA" ) {
  8. return ;
  9. }
  10. if ( strlen ( $data ) > $length ) $error .= "<li class= \" errors \" ><b>" . $field . "</b> is too long. Please use <b>" . $length . "</b> characters or less.</li>" ;
  11. switch ( $type ) {
  12. 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 ;
  13. case "A" : if ( ! preg_match ( "/^[az] $/i" , $data ) ) $error .= "<li class= \" errors \" ><b>" . $field . "</b> can only contain letters and spaces</li>" ; break ;
  14. case "N" : if ( ! preg_match ( "/^[0-9] $/" , $data ) ) $error .= "<li class= \" errors \" ><b>" . $field . "</b> can only contain numbers</li>" ; break ;
  15. 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
  16. 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 ;
  17. 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>" ;
  18. case "WEBSITE" : if ( ! preg_match ( "/^[a-z0-9 \. \/ \- :] $/i" , $data ) ) $error .= "<li class= \" errors \" ><b>" . $field . "</b> entered is invalid.</li>" ; break ;
  19. 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 ;
  20. }
  21. return $error ;
  22. }

Call it up by using something like this. Poproś go za pomocą coś takiego. You can try filling in some dummy data for $postdata and testing it out: formcheck($postdata,”Name”,30,”AN”,”REQUIRE”) Możesz spróbować w ślepe wypełnianie danych dla $ Postdata i badania to: formcheck ($ Postdata, "Nazwa", 30 "AN", "żądać")

  • $postdata - This should take the form of $_POST['name']. $ Postdata - Powinno to przybrać formę $ _POST [ 'imie']. Always grab your variables from $_POST so you avoid variable tampering/resetting in-between. Weź do ręki zawsze zmienne z $ _POST aby zapobiec manipulacjom zmiennej / resetowanie w pomiędzy. You can also do a extract($_POST) if you’re that gung-ho about using the key as your variable. Można również zrobić wyciąg ($ _POST), że jeśli gung-ho o użyciu klucza jako zmienna. In this case that would be $name. W tym przypadku, który byłby $ nazwa.
  • “Name” - This is just an identifier for each call there is human readable version of what that function call was checking. "Nazwa" - To jest identyfikator dla każdego połączenia odczytywalny człowieka istnieje wersja tego, co było, że wywołania funkcji kontroli. It will be used only if the user encounters an error. Będzie on używany tylko wtedy, gdy użytkownik napotka błąd.
  • 30 - This can be any number and specifies maximum length. 30 - Może to być dowolny numer i określa maksymalną długość. Data can pass through this function OK if its between 1-30 characters long. Dane mogą przejść przez tę funkcję OK, jeśli jej między 1-30 znaków.
  • “AN” - AN is the case you’re in. You can look in the function for further details of what the regular expression does in each case. "AN" - AN w przypadku masz cala można patrzeć w funkcję dalszych szczegółów wyrażenia regularne, co nie w każdym przypadku. AN is meant to use the AlphaNumeric checker. AN jest przeznaczona do używania alfanumerycznych sprawdzający. Anotherwords only letters, numbers, and spaces (which you can change manually if you wish). Anotherwords tylko liter, cyfr i spacji (które można zmienić ręcznie, jeśli chcesz).
  • “REQUIRED” - If you set this to “NA” it will allow the field to pass with no data entered in it. "Wymagane" - Jeśli zostanie wybrana opcja to "nie dotyczy" pozwoli ona dziedzinie przekazywania żadnych danych wprowadzonych w nim. However if it is required it will check against the other parameters. Jednak jeśli jest to wymagane będzie sprawdzenie wobec innych parametrów.

You may want to do some additional research on regular expressions if you want to add or edit functionality here. Być może chcesz zrobić kilka dodatkowych badań w sprawie wyrażenia regularne, jeśli chcesz dodać lub zmienić funkcje tutaj. But this should cover the ground work so you can focus on your unique data validation scenarios. Ale to powinno obejmować terenie pracy, aby móc skoncentrować się na swoje unikalne poprawności danych scenariusze.

I tend to make my forms 1 page and have “checks”. I zazwyczaj do mojej formy 1 strona i "kontroli". In following that structure I can stop and report out different information inside IF statements to see if submit was pressed, if the data is good, and what to do with that data. 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. It also helps retain information from the previous button press so I can allow the user to see their information again and possibly change it. 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ć. Of course it would be a good idea to run the formcheck function on the data before outputting it back into the input value to make sure the user is not inputting naughty XML or script data. 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. This should be done anytime a user submits data that is displayed back to them. Należy to zrobić w każdej chwili użytkownik twierdzi, że dane są wyświetlane z powrotem do nich.

Either use: htmlspecialchars ($data) and mysql_real_escape_string ($data) or something like this for the input value: 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”,”REQUIRE”) == “”) { echo $email; } if (isset ($ email) & & formcheck ($ _POST [ 'email'], "E-Mail", 50 "EMAIL", "żądać") == "") (echo $ email;)

Same function as you’d use below, we’re just utilizing the function again. Te same funkcje, jak można użyć poniżej, ale tylko z wykorzystaniem funkcji ponownie. The only downside is it gets rid of the users input completely if it matched illegal output. Jedyną Wadą jest usuwający dane wprowadzone przez użytkownika, jeżeli całkowicie dopasowanego nielegalnej produkcji. This isn’t too hard to add in which I might do at a later time pending any requests. Nie jest to zbyt trudne do dodania, w którym mógłbym zrobić w późniejszym czasie, w oczekiwaniu na jakiekolwiek wnioski.

  1. //Heres my quick usage example
  2. if ( isset ( $_POST [ ’submit’ ] ) ) {
  3. $errorcatcher .= formcheck ( $postdata , "Name" , 30 , "A" , "REQUIRE" ) ;
  4. $errorcatcher .= formcheck ( $postdata , "Email" , 50 , "EMAIL" , "REQUIRE" ) ;
  5. $errorcatcher .= formcheck ( $postdata , "Website" , 100 , "WEBSITE" , "NA" ) ;
  6. if ( $errorcatcher == "" ) { //if empty then no errors
  7. //SUCCESS
  8. } else { //at least one error was found. lets print them.
  9. echo $errorcatcher ;
  10. }
  11. }
  12. if ( isset ( $errorcatcher ) || $_POST [ ’submit’ ] == "" ) {
  13. //Display the form
  14. }

A good practice to follow is to display neat and tidy forms. A dobrą praktyką jest, aby wyświetlić neat and tidy formy. Use CSS, tables and label tags. Używaj CSS, tabele i etykiety tagów. Check out the forms under a content page at mmorpgexposed.com . Check out the form zgodnie z treścią na stronie mmorpgexposed.com. Not to toot my own horn, but, it is presented in an understandable, organized, and professional fashion. Nie moje własne trąbienie klaksonu, ale jest ono prezentowane w zrozumiały, zorganizowany, mody i zawodowych. Note that I provided extra text which specify to users what kind of input I’m looking for. Uwaga, pod warunkiem, że dodatkowy tekst, który określa dla użytkowników, jakiego rodzaju wkład Szukam. IE: “3-15 Alphanumeric”. IE: "3-15 Alfanumeryczny". Follow through and validate on that. Realizowania i potwierdzić, że w sprawie. There’s no easier way to increase your bounce rate than to have sign up forms that are confusing to use (or ones that you need to fill out multiple times because you don’t understand why your input isn’t working). 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).

If you’re feeling ambitious, run query that logs a users IP to a table and increases a count column to see how many attempts it takes for people to fill out your form now. 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. Leave it for a week and repeat the test with these changes and see if there’sa major difference in times it throws errors. 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 guess would be the larger the difference in errors the more of a difference in user signups you’ll see. Myślę byłaby większa różnica w kilku błędy na różnice w rejestracji użytkownika zobaczysz.


1 Comment(s) On 1 Komentarz (y) na

"Automating PHP Forms - Spam Filtering and Data Cleansing" "Automatyzacja PHP Formularze - filtr antyspamowy i danych Czyszczenie"
  1. MyAvatars 0.2 jhon - Apr 23, 2008 john - 23 kwietnia, 2008

    i think it,sa great post. Myślę, że, sa wielki post.



Leave A Comment: Zostaw komentarz:

Comments RSS Feed Kanał RSS komentarzy

6 Minus 3 = 6 Minus 3 =

Custom Theme by Rob Malon | Content & Design © 2008 - Rob Malon [dot] Com. Custom Theme przez Rob Malon | Content & Design © 2008 - Rob Malon [dot] com. "));
"));