Друг чудесен начин да се справя спам е да проверите данните си ... което помага да се защитят срещу SUS (глупаво потребител синдром), както добре. Да, просто направи това. Проблемът с това е сумата на усилията е необходимо, за да код спам филтри, подобно на всички форми на вашия сайт. Можем да направим този процес много бързо макар и с автоматизирането начин за блокиране на спам данни с редовни изразяване на дублиращи условия.
Създаване на формата, в HTML, колкото нормално би и се уверете, че можете да се обадите на следните функции:
-
//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 ; -
} - Изтеглете този код: 0416formchecking.txt
Обадете се с помощта на нещо като това. Можете да опитате някои сляпо попълване на данни за $ postdata то и изпитвателните от: formcheck ($ postdata, "Name", 30, "АН", "изискват")
- $ postdata - Това би трябвало да бъдат под формата на $ _POST [ 'име']. Винаги вземете вашата променливи от $ _POST, за да се избегне променлива подправяне / възстановяване по средата. Можете също така да направя екстракт ($ _POST), ако сте, че gung-хо използвате ключа като променлива. В този случай, че ще бъде $ името.
- "Name" - това е просто един идентификатор за всеки конкурс има човешки четима версия на това, което тази функция призив беше извършена. Той ще бъде използван само ако потребителят срещне грешка.
- 30 - Това може да бъде всеки номер и определя максималната дължина. Данните могат да минат през тази функция ОК, ако нейната между 1-30 символа.
- "АН" - едно е случаят сте инча Можете да търсите във функция за по-нататъшна информация за това какво редовното изражение прави във всеки отделен случай. АН е предназначена да се използва за проверка на буквено-цифрови. Anotherwords само букви, цифри и интервали (който можете да промените ръчно, ако желаете).
- "Необходимо" - ако сте задали този на "НС" това ще позволи на полето да мине без никакви данни, вписани в него. Все пак, ако е необходимо ще проверява срещу други параметри.
Ако желаете, можете да направите някои допълнителни изследвания на редовни изрази, ако искате да добавите или редактирате функционалност тук. Но това трябва да покрие земята работа, така че можете да се съсредоточите върху вашите уникални данни за валидиране сценарии.
Аз склонни да направя моите форми и да имат 1 страница "проверки". В следния структурата, че мога да спра и да докладват различни информацията вътре АКО изявления за да види дали е натиснат представя, ако данните са добри, и какво да правя с тази информация. То също помага за съхраняване на информацията от предишния натиснете бутона, за да позволи на потребителя да види тяхната информация отново и евентуално я променя. Разбира се, че би било добра идея да пуснете formcheck функция на данните, преди да го върне обратно в outputting приноса стойност, за да се уверете, че потребителят не е въвеждащата палав XML или скрипт данни. Това би трябвало да бъде направено по всяко време потребителят подава данни, които се показват обратно към тях.
Всяка употреба: htmlspecialchars ($ данни) и mysql_real_escape_string ($ данни) или нещо подобно за въвеждане на стойност:
ако (isset ($ имейл) и и formcheck ($ _POST [ 'имейл'], "Електронна поща", 50, "EMAIL", "изискват") == "") ($ ехо електронна поща;)
Същата функция, която използва по-долу, ние сме просто използвате функцията отново. Единственото намаляване се получи от отървеш потребителите вход напълно, ако тя съвпадащи незаконна продукция. Това не е твърде трудно да се Add, в която мога да направя по-късно време, в очакване на всякакви искания.
-
//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 -
} - Изтеглете този код: 0416formcheckusage.txt
Една добра практика е да се следват за показване изпипан и подредено форми. Използвайте CSS, таблици и етикет марки. Проучете формите по съдържанието на страницата mmorpgexposed.com. Не изсвирване с клаксон си рога, но тя е представена в разбираем, организиран и професионален начин. Имайте предвид, че при условие допълнителен текст, който посочва за потребителите какъв вход Търся. IE: "3-15 буквено-цифрови". Разработи и потвърждава това. За това няма лесен начин да увеличите своята скача ставка, отколкото да се регистрирате форми, които са объркващи за използване (или тези, които трябва да попълните няколко пъти, защото те не разбират защо вход не работи).
Ако сте амбициозни чувството, пуснете заявка, че регистрите на потребителите ПР, за да маса и увеличения брой графа, за да видите колко опита е необходимо за хората, за да попълните формата сега. Остави го за една седмица и повторете теста с тези промени и да видим дали има голяма разлика в пъти го хвърля грешки. Моят предполагам, ще бъде голяма разликата в грешките на повече от разлика в потребителски регистрации ще видим.





































Мисля, че това, SA голям пост.