{"id":329,"date":"2012-07-17T23:09:19","date_gmt":"2012-07-18T04:09:19","guid":{"rendered":"http:\/\/laurinkeithdavis.com\/wordpress\/?p=329"},"modified":"2013-02-23T14:10:10","modified_gmt":"2013-02-23T19:10:10","slug":"capturing-form-submissions-part-1","status":"publish","type":"post","link":"https:\/\/laurinkeithdavis.com\/wordpress\/capturing-form-submissions-part-1\/","title":{"rendered":"Capturing Form Submissions &#8211; Part 1"},"content":{"rendered":"<p>Something that as frustrated me for some time is the fact that to capture form posts in PHP, we have to rely on the the POST or GET superglobals and how much a black hole those variables seem to be. Well, black hole isn&#8217;t really the best description, as we know where the data is coming from (hopefully) and what it&#8217;s going to be (should), but it just seems like I just can&#8217;t get a handle on a way that is easy to manage. Really, the longer I develop, the more I hate dislike arrays in general (strange statement for someone that uses a TON of them and HATES the fact that C# can&#8217;t do associative arrays.)<\/p>\n<p>However, yesterday I stumbled upon an idea that might make like much easier and, although, it&#8217;s not a perfect solution, I think I found a good start: \u00a0 <\/p>\n<pre class=\"lang:php decode:true\">\r\nclass DATA_PostData{\r\n\r\n\t\/** @var int *\/\r\n\tpublic $id;\r\n\r\n\t\/** @var string *\/\r\n\tpublic $deadline;\r\n\r\n\t\/** @var string *\/\r\n\tpublic $hdnTicketsAdminDataHash;\r\n\r\n\t\/** @var string *\/\r\n\tpublic $cmdSubmit;\r\n\r\n\t\/** @var string *\/\r\n\tpublic $txtNote;\r\n\r\n\t\/** @var bool *\/\r\n\tpublic $chkTechnicalUpdate;\r\n\r\n\t\/** @var bool *\/\r\n\tpublic $chkResendLatestResponse;\r\n\r\n\t\/** @var float *\/\r\n\tpublic $hours_spent;\r\n\r\n\t\/** @var string *\/\r\n\tpublic $hdnPendingResponseUsers;\r\n\r\n\t\/** @var int *\/\r\n\tpublic $hdnMaxID;\r\n\r\n\t\/** @var string *\/\r\n\tpublic $sReferrer;\r\n\r\n\t\/** @var bool *\/\r\n\tprivate $bDataLoaded = false;\r\n\r\n\t\/** @var int *\/\r\n\tpublic $hdnFileID;\r\n\r\n\t\/** @var string *\/\r\n\tpublic $hdnName;\r\n\r\n\t\/** @var int *\/\r\n\tpublic $hdnPriorStatusID;\r\n\r\n\t\/**\r\n\t *\/\r\n\tpublic function __construct(){\r\n\r\n\t\t$oSQL = (object) $_POST;\r\n\r\n\t\tif(!_PHPUNITTEST)\r\n\t\t\tunset($_POST);\r\n\r\n\t\tif($oSQL){\r\n\r\n\t\t\tforeach($oSQL as $sColumn => $sValue)\r\n\t\t\t\t$this->$sColumn = $sValue;\r\n\r\n\t\t\t$this->bDataLoaded = true;\r\n\r\n\t\t}\r\n\t\telseif($this->id)\r\n\t\t\t$this->bDataLoaded = true;\r\n\r\n\t\tCommon::checkForUndefinedPropertiesAndDisplayError($this, __CLASS__);\r\n\r\n\t}\r\n\r\n\t\/**\r\n\t * @return string\r\n\t *\/\r\n\tpublic static function getClassName(){\r\n\r\n\t\treturn __CLASS__;\r\n\r\n\t}\r\n\r\n\t\/**\r\n\t * @return bool\r\n\t *\/\r\n\tpublic function isDataLoaded(){\r\n\r\n\t\treturn $this->bDataLoaded;\r\n\r\n\t}\r\n\r\n\t\/**\r\n\t * @static\r\n\t * @param object $oObject\r\n\t * @param string $sClass\r\n\t * @throws Exception_MissingDataObjectProperty\r\n\t *\/\r\n\tpublic static function checkForUndefinedPropertiesAndDisplayError($oObject, $sClass){\r\n\r\n\t\ttry{\r\n\r\n\t\t\tif((bool) $aUndefinedProperties = Common::getPropertiesUsedButNotDeclared($oObject, $sClass))\r\n\t\t\t\tthrow new Exception_MissingDataObjectProperty(\r\n\t\t\t\t\t\"Properties (\".Common::CommaSpace($aUndefinedProperties).\r\n\t\t\t\t\t\t\") does not exist in class ($sClass.) \");\r\n\r\n\t\t}\r\n\t\tcatch(Exception_MissingDataObjectProperty $oException){\r\n\r\n\t\t\tExceptions::addToOnShutdown($oException);\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n<\/pre>\n<p>So the idea is to create a data object that has all the possible post submission variables and then have a function designed to throw an exception if something is received that is not expected.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Something that as frustrated me for some time is the fact that to capture form posts in PHP, we have to rely on the the POST or GET superglobals and how much a black hole those variables seem to be. Well, black hole isn&#8217;t really the best description, as we know where the data is &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[15,16],"tags":[],"class_list":["post-329","post","type-post","status-publish","format-standard","hentry","category-development","category-php"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Capturing Form Submissions - Part 1 - Laurin Keith Davis<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/laurinkeithdavis.com\/wordpress\/capturing-form-submissions-part-1\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"laurin1\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/capturing-form-submissions-part-1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/capturing-form-submissions-part-1\\\/\"},\"author\":{\"name\":\"laurin1\",\"@id\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/1861bcbaef0e308b3d8425e1c31d5a2b\"},\"headline\":\"Capturing Form Submissions &#8211; Part 1\",\"datePublished\":\"2012-07-18T04:09:19+00:00\",\"dateModified\":\"2013-02-23T19:10:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/capturing-form-submissions-part-1\\\/\"},\"wordCount\":189,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/fbc4e40a1986326ceb08f5f29f53ff79\"},\"articleSection\":[\"Development\",\"PHP\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/capturing-form-submissions-part-1\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/capturing-form-submissions-part-1\\\/\",\"url\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/capturing-form-submissions-part-1\\\/\",\"name\":\"Capturing Form Submissions - Part 1 - Laurin Keith Davis\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/#website\"},\"datePublished\":\"2012-07-18T04:09:19+00:00\",\"dateModified\":\"2013-02-23T19:10:10+00:00\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/capturing-form-submissions-part-1\\\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/\",\"name\":\"Laurin Keith Davis\",\"description\":\"What we have here, is a failure to communicate...\",\"publisher\":{\"@id\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/fbc4e40a1986326ceb08f5f29f53ff79\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/fbc4e40a1986326ceb08f5f29f53ff79\",\"name\":\"Keith\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2012\\\/05\\\/2012-04-04-001.jpg\",\"url\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2012\\\/05\\\/2012-04-04-001.jpg\",\"contentUrl\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2012\\\/05\\\/2012-04-04-001.jpg\",\"width\":640,\"height\":640,\"caption\":\"Keith\"},\"logo\":{\"@id\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2012\\\/05\\\/2012-04-04-001.jpg\"},\"sameAs\":[\"http:\\\/\\\/www.facebook.com\\\/laurin1\",\"https:\\\/\\\/www.facebook.com\\\/laurin1\",\"https:\\\/\\\/www.instagram.com\\\/laurinkeithdavis\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/laurin1\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/laurindavis\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/1861bcbaef0e308b3d8425e1c31d5a2b\",\"name\":\"laurin1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f22d2ca8275d0ed003a18f070dd397b82ba1ad35ed38742c6410652a9a521c69?s=96&d=mm&r=pg\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f22d2ca8275d0ed003a18f070dd397b82ba1ad35ed38742c6410652a9a521c69?s=96&d=mm&r=pg\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f22d2ca8275d0ed003a18f070dd397b82ba1ad35ed38742c6410652a9a521c69?s=96&d=mm&r=pg\",\"caption\":\"laurin1\"},\"url\":\"https:\\\/\\\/laurinkeithdavis.com\\\/wordpress\\\/author\\\/laurin1\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Capturing Form Submissions - Part 1 - Laurin Keith Davis","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/laurinkeithdavis.com\/wordpress\/capturing-form-submissions-part-1\/","twitter_misc":{"Written by":"laurin1","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/laurinkeithdavis.com\/wordpress\/capturing-form-submissions-part-1\/#article","isPartOf":{"@id":"https:\/\/laurinkeithdavis.com\/wordpress\/capturing-form-submissions-part-1\/"},"author":{"name":"laurin1","@id":"https:\/\/laurinkeithdavis.com\/wordpress\/#\/schema\/person\/1861bcbaef0e308b3d8425e1c31d5a2b"},"headline":"Capturing Form Submissions &#8211; Part 1","datePublished":"2012-07-18T04:09:19+00:00","dateModified":"2013-02-23T19:10:10+00:00","mainEntityOfPage":{"@id":"https:\/\/laurinkeithdavis.com\/wordpress\/capturing-form-submissions-part-1\/"},"wordCount":189,"commentCount":1,"publisher":{"@id":"https:\/\/laurinkeithdavis.com\/wordpress\/#\/schema\/person\/fbc4e40a1986326ceb08f5f29f53ff79"},"articleSection":["Development","PHP"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/laurinkeithdavis.com\/wordpress\/capturing-form-submissions-part-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/laurinkeithdavis.com\/wordpress\/capturing-form-submissions-part-1\/","url":"https:\/\/laurinkeithdavis.com\/wordpress\/capturing-form-submissions-part-1\/","name":"Capturing Form Submissions - Part 1 - Laurin Keith Davis","isPartOf":{"@id":"https:\/\/laurinkeithdavis.com\/wordpress\/#website"},"datePublished":"2012-07-18T04:09:19+00:00","dateModified":"2013-02-23T19:10:10+00:00","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/laurinkeithdavis.com\/wordpress\/capturing-form-submissions-part-1\/"]}]},{"@type":"WebSite","@id":"https:\/\/laurinkeithdavis.com\/wordpress\/#website","url":"https:\/\/laurinkeithdavis.com\/wordpress\/","name":"Laurin Keith Davis","description":"What we have here, is a failure to communicate...","publisher":{"@id":"https:\/\/laurinkeithdavis.com\/wordpress\/#\/schema\/person\/fbc4e40a1986326ceb08f5f29f53ff79"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/laurinkeithdavis.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/laurinkeithdavis.com\/wordpress\/#\/schema\/person\/fbc4e40a1986326ceb08f5f29f53ff79","name":"Keith","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/laurinkeithdavis.com\/wordpress\/wp-content\/uploads\/2012\/05\/2012-04-04-001.jpg","url":"https:\/\/laurinkeithdavis.com\/wordpress\/wp-content\/uploads\/2012\/05\/2012-04-04-001.jpg","contentUrl":"https:\/\/laurinkeithdavis.com\/wordpress\/wp-content\/uploads\/2012\/05\/2012-04-04-001.jpg","width":640,"height":640,"caption":"Keith"},"logo":{"@id":"https:\/\/laurinkeithdavis.com\/wordpress\/wp-content\/uploads\/2012\/05\/2012-04-04-001.jpg"},"sameAs":["http:\/\/www.facebook.com\/laurin1","https:\/\/www.facebook.com\/laurin1","https:\/\/www.instagram.com\/laurinkeithdavis","https:\/\/www.linkedin.com\/in\/laurin1","https:\/\/x.com\/https:\/\/twitter.com\/laurindavis"]},{"@type":"Person","@id":"https:\/\/laurinkeithdavis.com\/wordpress\/#\/schema\/person\/1861bcbaef0e308b3d8425e1c31d5a2b","name":"laurin1","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f22d2ca8275d0ed003a18f070dd397b82ba1ad35ed38742c6410652a9a521c69?s=96&d=mm&r=pg","url":"https:\/\/secure.gravatar.com\/avatar\/f22d2ca8275d0ed003a18f070dd397b82ba1ad35ed38742c6410652a9a521c69?s=96&d=mm&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f22d2ca8275d0ed003a18f070dd397b82ba1ad35ed38742c6410652a9a521c69?s=96&d=mm&r=pg","caption":"laurin1"},"url":"https:\/\/laurinkeithdavis.com\/wordpress\/author\/laurin1\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p16SmA-5j","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/laurinkeithdavis.com\/wordpress\/wp-json\/wp\/v2\/posts\/329","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/laurinkeithdavis.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/laurinkeithdavis.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/laurinkeithdavis.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/laurinkeithdavis.com\/wordpress\/wp-json\/wp\/v2\/comments?post=329"}],"version-history":[{"count":29,"href":"https:\/\/laurinkeithdavis.com\/wordpress\/wp-json\/wp\/v2\/posts\/329\/revisions"}],"predecessor-version":[{"id":370,"href":"https:\/\/laurinkeithdavis.com\/wordpress\/wp-json\/wp\/v2\/posts\/329\/revisions\/370"}],"wp:attachment":[{"href":"https:\/\/laurinkeithdavis.com\/wordpress\/wp-json\/wp\/v2\/media?parent=329"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/laurinkeithdavis.com\/wordpress\/wp-json\/wp\/v2\/categories?post=329"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/laurinkeithdavis.com\/wordpress\/wp-json\/wp\/v2\/tags?post=329"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}