{"id":1432,"date":"2018-01-19T19:22:50","date_gmt":"2018-01-19T19:22:50","guid":{"rendered":"http:\/\/goofy-trucks.flywheelsites.com\/check-data-page-2\/"},"modified":"2018-01-19T19:24:47","modified_gmt":"2018-01-19T19:24:47","slug":"check-data-page-2","status":"publish","type":"post","link":"https:\/\/phpbuilder.com\/check-data-page-2\/","title":{"rendered":"Check Data Page 2"},"content":{"rendered":"<div class=\"phpbuilder-content\">\n<div class=\"phpbuilder-meta\">\n<div class=\"\">By Spencer P<\/div>\n<div class=\"\">on November 3, 2000<\/div>\n<\/p><\/div>\n<div id=\"overflow-content\">\n<h2>Verify That Your Input Is Correct<\/h2>\n<div class=\"articlePara\">\nNever trust the input you receive from someone else.  You want your data to<br \/>\nhave perfect integrity, within the limits that you establish.  If you<br \/>\nwrite a routine that saves someone&#8217;s address to your<br \/>\ndatabase, don&#8217;t trust your routine to magically fix user error.  Only you can make that happen.<\/div>\n<div class=\"articlePara\">\nLets write some quick code to save those addresses:<\/div>\n<div class=\"articlePhpEx\">\n<font face=\"courier\"><code><span style=\"color: #000000\"><\/p>\n<p><span style=\"color: #0000BB\">&lt;?php<\/p>\n<p><\/span><span style=\"color: #007700\">function\u00a0<\/span><span style=\"color: #0000BB\">saveAddress<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$dbh<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$firstName<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$lastName<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$streetAddress<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$city<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$zip<\/span><span style=\"color: #007700\">)\u00a0{<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$stmt<\/span><span style=\"color: #007700\">=<\/span><span style=\"color: #0000BB\">OCIPrepare<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$dbh<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #DD0000\">\"<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Insert\u00a0into\u00a0addressBook<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(firstName,lastName,streetAddress,city,zip)<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0values<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0('$firstName','$lastName','$streetAddress','$city','$zip')\"<\/span><span style=\"color: #007700\">);<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">OCIExecute<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$stmt<\/span><span style=\"color: #007700\">);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<br \/>\n<br \/>}<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<br \/>\n<br \/><\/span><span style=\"color: #0000BB\">?&gt;<br \/>\n<br \/><\/span><br \/>\n<\/span><br \/>\n<\/code><\/font><\/div>\n<div class=\"articlePara\">\nSo what happens if someone leaves the ZIP code out?<br \/>\nWhat if they put &#8220;pr0nd00d&#8221; as their ZIP code?   Do not trust your input.<br \/>\nSome might argue that these checks should be done before this function.<br \/>\nWell, what if your co-worker, Billy Bob, reuses this function?  Now he<br \/>\nhas to do the checks too.  And don&#8217;t trust he&#8217;ll do it, either.  Billy<br \/>\nBob is a lazy man, and not too smart in the first place.<\/div>\n<div class=\"articlePara\">\nSo let&#8217;s define a function to make sure the ZIP code is right.  After<br \/>\nall, my zip code is not &#8220;I like cheese.&#8221;<\/div>\n<div class=\"articlePhpEx\">\n<font face=\"courier\"><code><span style=\"color: #000000\"><\/p>\n<p><span style=\"color: #0000BB\">&lt;?php<\/p>\n<p><\/span><span style=\"color: #007700\">function\u00a0<\/span><span style=\"color: #0000BB\">validZipCode<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$zip<\/span><span style=\"color: #007700\">)\u00a0{\u00a0<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0return(<\/span><span style=\"color: #0000BB\">ereg<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #DD0000\">\"^[[:digit:]]{5}(-[[:digit:]]{4})?$\"<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$zip<\/span><span style=\"color: #007700\">));\u00a0<br \/>\n<br \/>}<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<br \/>\n<br \/><\/span><span style=\"color: #0000BB\">?&gt;<br \/>\n<br \/><\/span><br \/>\n<\/span><br \/>\n<\/code><\/font><\/div>\n<div class=\"articlePara\">\nThe validZipCode() function takes a zip code and does a regular<br \/>\nexpression match against it.  If it $zip begins with 5 digits, with an optional<br \/>\ndash and 4 digit extension, return 1.  Else return 0.  Now, l<br \/>\nets integrate<br \/>\nit with our current function.<\/div>\n<div class=\"articlePhpEx\">\n<font face=\"courier\"><code><span style=\"color: #000000\"><\/p>\n<p><span style=\"color: #0000BB\">&lt;?php<\/p>\n<p><\/span><span style=\"color: #007700\">function\u00a0<\/span><span style=\"color: #0000BB\">saveAddress<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$dbh<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$firstName<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$lastName<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$streetAddress<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$city<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #0000BB\">$zip<\/span><span style=\"color: #007700\">)\u00a0{<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0if(!<\/span><span style=\"color: #0000BB\">validZipCode<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$zip<\/span><span style=\"color: #007700\">))<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return(<\/span><span style=\"color: #0000BB\">0<\/span><span style=\"color: #007700\">);<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">$stmt<\/span><span style=\"color: #007700\">=<\/span><span style=\"color: #0000BB\">OCIPrepare<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$dbh<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #DD0000\">\"<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Insert\u00a0into\u00a0addressBook<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(firstName,lastName,streetAddress,city,zip)<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0values<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0('$firstName','$lastName','$streetAddress','$city','$zip')\"<\/span><span style=\"color: #007700\">);<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">OCIExecute<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$stmt<\/span><span style=\"color: #007700\">);<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0Return(<\/span><span style=\"color: #0000BB\">1<\/span><span style=\"color: #007700\">);<br \/>\n<br \/>}<\/p>\n<p><\/span><span style=\"color: #0000BB\">?&gt;<br \/>\n<br \/><\/span><br \/>\n<\/span><br \/>\n<\/code><\/font><\/div>\n<div class=\"articlePara\">\nNow our current function requires a valid ZIP code.  It won&#8217;t accept a<br \/>\nblank one, nor a non-USA one.  (Note that our function doesn&#8217;t simply<br \/>\nrequire a non-blank string &#8212; that would be <b>A Bad Thing(tm)<\/b>.)  If<br \/>\na ZIP isn&#8217;t passed, our function returns a 0.  But wait&#8230;we can reword<br \/>\nthe logic so that when valid ZipCode() returns a 0, an array or string<br \/>\ncan be returned with a more descriptive error.<\/div>\n<div class=\"articlePara\">\n<font face=\"courier\"><code><span style=\"color: #000000\"><\/p>\n<p><span style=\"color: #0000BB\">&lt;?php<\/p>\n<p><\/span><span style=\"color: #007700\">If(!<\/span><span style=\"color: #0000BB\">validZipCode<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$zip<\/span><span style=\"color: #007700\">))<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">push_array<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$errors<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #DD0000\">\"Invalid\u00a0zip\u00a0code.\"<\/span><span style=\"color: #007700\">);<br \/>\n<br \/>If(!<\/span><span style=\"color: #0000BB\">validStreetAddress<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$streetAddress<\/span><span style=\"color: #007700\">))<br \/>\n<br \/>\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #0000BB\">push_array<\/span><span style=\"color: #007700\">(<\/span><span style=\"color: #0000BB\">$errors<\/span><span style=\"color: #007700\">,<\/span><span style=\"color: #DD0000\">\"Invalid\u00a0address.\"<\/span><span style=\"color: #007700\">);<\/p>\n<p><\/span><span style=\"color: #0000BB\">?&gt;<br \/>\n<br \/><\/span><br \/>\n<\/span><br \/>\n<\/code><\/font><\/div>\n<div class=\"articleHeader\">\n\tEtc&#8230;<\/div>\n<div class=\"articlePara\">\nAdding the validation functions is an exercise left to the user.  Some things may not be<br \/>\neconomically or technologically feasible,<br \/>\nas you cannot always afford to verify information beyond a certain point.<br \/>\nFor example, it would be too slow to confirm every bit of the input from the<br \/>\none hundred addresses per second you get.  However, a simple check like the one<br \/>\noutlined above, makes it <b>MUCH<\/b> harder to have data that<br \/>\ndoesn&#8217;t make sense.  After all, we know that valid U.S. ZIP<br \/>\ncodes are numeric and how long they can be, so why accept data that&#8217;s<br \/>\nobviously wrong?<\/div>\n<\/div>\n<p><\/p>\n<div style=\"float: left; padding:15px; color:#17AAF3\">\n<div style=\"float:left; padding:2px;\"><a class=\"paginationPageLink\" href=\"sporty20001102.html\">\u00ab Previous Page<\/a><\/div>\n<div style=\"float:left; padding:2px 4px 2px 4px;\"><a class=\"pageNumber\" href=\"sporty20001102.html\">1<\/a> <\/div>\n<div style=\"float:left; font-size:16px; color:#FF7A22; padding:2px 2px 2px 2px; \">| <\/div>\n<div style=\"background-color:#B6E5FC; font-size:16px; margin-top:1px; padding:1px 4px 1px 4px; color:#000; font-style:bold; float:left;\">2<\/div>\n<div style=\"float:left; font-size:16px; color:#FF7A22; padding:2px 2px 2px 2px; \">| <\/div>\n<div style=\"float:left; padding:2px 4px 2px 4px;\"><a class=\"pageNumber\" href=\"sporty200011029ba9.html?page=3\">3<\/a> <\/div>\n<div style=\"float:left; font-size:16px; color:#FF7A22; padding:2px 2px 2px 2px; \">| <\/div>\n<div style=\"float:left; padding:2px 4px 2px 4px;\"><a class=\"pageNumber\" href=\"sporty20001102fdb0.html?page=4\">4<\/a> <\/div>\n<div style=\"float:left; padding:2px;\"><a class=\"paginationPageLink\" href=\"sporty200011029ba9.html?page=3\">Next Page \u00bb<\/a><\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>By Spencer P on November 3, 2000 Verify That Your Input Is Correct Never trust the input you receive from someone else. You want your data to have perfect integrity, within the limits that you establish. If you write a routine that saves someone&#8217;s address to your database, don&#8217;t trust&#8230; <a href=\"https:\/\/phpbuilder.com\/check-data-page-2\/\" class=\"readmore\"><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-1432","post","type-post","status-publish","format-standard","hentry","category-tutorials"],"_links":{"self":[{"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/posts\/1432","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/comments?post=1432"}],"version-history":[{"count":1,"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/posts\/1432\/revisions"}],"predecessor-version":[{"id":3290,"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/posts\/1432\/revisions\/3290"}],"wp:attachment":[{"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/media?parent=1432"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/categories?post=1432"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/phpbuilder.com\/wp-json\/wp\/v2\/tags?post=1432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}