{"id":43716,"date":"2019-02-20T03:01:23","date_gmt":"2019-02-19T17:01:23","guid":{"rendered":"http:\/\/www.rjmprogramming.com.au\/ITblog\/?p=43716"},"modified":"2019-02-19T19:20:19","modified_gmt":"2019-02-19T09:20:19","slug":"php-form-validation-via-filter-extension-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/php-form-validation-via-filter-extension-tutorial\/","title":{"rendered":"PHP Form Validation via Filter Extension Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/filter_ideas.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"PHP Form Validation via Filter Extension Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/php_filter.jpg\" title=\"PHP Form Validation via Filter Extension Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">PHP Form Validation via Filter Extension Tutorial<\/p><\/div>\n<p>Our recent <a target=_blank title='Javascript and PHP Base64 Primer Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/javascript-and-php-base64-primer-tutorial\/'>Javascript and PHP Base64 Primer Tutorial<\/a> with its <a target=_blank title='Base64 information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Base64'>Base64<\/a> thoughts, the &#8230;<\/p>\n<blockquote cite='https:\/\/www.rjmprogramming.com.au\/ITblog\/javascript-and-php-base64-primer-tutorial\/'><p>\n<code><br \/>\n  echo \"&lt;textarea id=tb64 cols=100 rows=10>\" . <b>base64_decode(urldecode($_POST['base64']))<\/b> . \"&lt;\/textarea&gt;&lt;br&gt;\";<br \/>\n<\/code>\n<\/p><\/blockquote>\n<p> &#8230; of which we adopt for today&#8217;s PHP code, set our minds towards HTML form thoughts and HTML form validation thoughts.  The most immediate validation thought on an HTML form is probably &#8230;<\/p>\n<ul>\n<li>onsubmit event Javascript client logic &#8230; but today we go exploring &#8230;<\/li>\n<li>callback PHP serverside logic via the <a target=_blank title='PHP Filter Extension information from w3schools' href='https:\/\/www.w3schools.com\/php\/php_filter.asp'>PHP Filter extension functionalities<\/a> in the pattern &#8230;<br \/>\n$var=filter_var($prevar, <select size=9 style='inline-block;'><option value=FILTER_SANITIZE_STRING>FILTER_SANITIZE_STRING<\/option><option value=FILTER_VALIDATE_FLOAT>FILTER_VALIDATE_FLOAT<\/option><option value=FILTER_VALIDATE_INT>FILTER_VALIDATE_INT<\/option><option value=FILTER_VALIDATE_IP>FILTER_VALIDATE_IP<\/option><option value=FILTER_VALIDATE_EMAIL>FILTER_VALIDATE_EMAIL<\/option><option value=FILTER_SANITIZE_URL>FILTER_SANITIZE_URL<\/option><option value=FILTER_VALIDATE_URL>FILTER_VALIDATE_URL<\/option><option value=FILTER_VALIDATE_BOOLEAN>FILTER_VALIDATE_BOOLEAN<\/option><option value=FILTER_SANITIZE_MAGIC_QUOTES>FILTER_SANITIZE_MAGIC_QUOTES<\/option><\/select>);\n<\/li>\n<\/ul>\n<p>You will see on examination of our proof of concept PHP <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/filter_ideas.php_GETME\" title=\"filter_ideas.php\">filter_ideas.php<\/a> code how these PHP Filter Extensions can be used for validation purposes (with a more <a target=_blank title='Filter IDs' href='https:\/\/www.w3schools.com\/php\/showphp.asp?filename=demo_filter1'>extensive list here<\/a>), and you could try it out for yourself at this <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/filter_ideas.php\" title=\"Click picture\">live run<\/a> link.<\/p>\n<p>If form validation interests you, perhaps a read of <a title='HTML5 Form API Validation Primer Tutorial' href='#html5fapivpt'>HTML5 Form API Validation Primer Tutorial<\/a> below is in order.<\/p>\n<hr>\n<p id='html5fapivpt'>Previous relevant <a target=_blank title='HTML5 Form API Validation Primer Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/html5-form-api-validation-primer-tutorial\/'>HTML5 Form API Validation Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/html5_form_constraint_validation.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"HTML5 Form API Validation Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/html5_form_constraint_validation.jpg\" title=\"HTML5 Form API Validation Primer Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">HTML5 Form API Validation Primer Tutorial<\/p><\/div>\n<p>HTML5 is more than just the &#8220;5&#8221; tagged on.  Take a look at <a target=_blank title='List of HTML5 APIs' href='https:\/\/www.htmlgoodies.com\/html5\/javascript\/a-5-minute-overview-of-all-new-javascript-apis-in-html5.html'>this list<\/a> of API related parts to the HTML5 specification.<\/p>\n<p>As you may have gleaned from our recent <a target=_blank href='https:\/\/www.rjmprogramming.com.au\/ITblog\/html-input-element-types-randomized-history-tutorial\/' title='HTML Input Element Types Randomized History Tutorial'>HTML Input Element Types Randomized History Tutorial<\/a> a lot of new HTML input elements were added with the view to improving the capabilities of HTML form elements for collecting information from users interactively.   Along with that, as you might expect, validation methodologies were improved, as any programmer would tell you, can be one of the most challenging &#8220;practical element&#8221; of web design to do well to not involve user error, or &#8220;user giving up&#8221;.<\/p>\n<p>The HTML5 form API has great &#8220;Constraint Validation&#8221;, not all new to HTML, but vastly improved and extended, as you can read a lot about at this <a target=_blank href='https:\/\/www.html5rocks.com\/en\/tutorials\/forms\/constraintvalidation\/' title='Constraint Validation in HTML5 Form API'>really great webpage<\/a>, thanks.<\/p>\n<p>The HTML input attribute we find of great practical benefit with all this is the <a target=_blank title='HTML input element pattern attribute information from w3schools' href='https:\/\/www.w3schools.com\/tags\/att_input_pattern.asp'><i>pattern<\/i><\/a> attribute to define a constraint, in the same sort of vein as a <a target=_blank title='Javascript regex' href='http:\/\/www.w3schools.com\/jsref\/jsref_obj_regexp.asp'>RegEx<\/a> expressions helps you perform pattern-matching and &#8220;search and replace&#8221; functions on text.  This would be great use for organizations that work with &#8220;codes&#8221; or &#8220;Part Numbers&#8221; or SKU (<a target=_blank title='SKU information' href='http:\/\/www.investopedia.com\/terms\/s\/stock-keeping-unit-sku.asp'>stock keeping units<\/a>) that follow a consistent <i>pattern<\/i>.<\/p>\n<p>You can try some simple Constraint Validation at today&#8217;s <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/html5_form_constraint_validation.html\" title=\"Click picture\">live run<\/a> link with its underlying serverside PHP code you could call <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/html5_form_constraint_validation.html_GETME\" title=\"\/HTMLCSS\/html5_form_constraint_validation.html\">html5_form_constraint_validation.html<\/a> as you wish.<\/p>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d33831' onclick='var dv=document.getElementById(\"d33831\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/validation\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d33831' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d43716' onclick='var dv=document.getElementById(\"d43716\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/php\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d43716' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Our recent Javascript and PHP Base64 Primer Tutorial with its Base64 thoughts, the &#8230; echo &#8220;&lt;textarea id=tb64 cols=100 rows=10>&#8221; . base64_decode(urldecode($_POST[&#8216;base64&#8242;])) . &#8220;&lt;\/textarea&gt;&lt;br&gt;&#8221;; &#8230; of which we adopt for today&#8217;s PHP code, set our minds towards HTML form thoughts and &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/php-form-validation-via-filter-extension-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,14,37],"tags":[2830,1653,2829,1654,1606,1605,2832,1797,431,452,1533,576,652,1830,1712,932,970,997,1319,1611,2831,1358],"class_list":["post-43716","post","type-post","status-publish","format-standard","hentry","category-elearning","category-event-driven-programming","category-tutorials","tag-atob","tag-base64","tag-btoa","tag-data-uri","tag-decodeuricomponent","tag-encodeuricomponent","tag-enctype","tag-extension","tag-filter","tag-form","tag-get","tag-html","tag-javascript","tag-method","tag-onsubmit","tag-php","tag-post","tag-programming","tag-tutorial","tag-urldecode","tag-urlencode","tag-validation"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/43716"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=43716"}],"version-history":[{"count":3,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/43716\/revisions"}],"predecessor-version":[{"id":43719,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/43716\/revisions\/43719"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=43716"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=43716"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=43716"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}