{"id":10,"date":"2008-05-23T12:38:11","date_gmt":"2008-05-23T18:38:11","guid":{"rendered":"http:\/\/www.n8williams.com\/devblog\/?p=10"},"modified":"2021-04-24T18:32:57","modified_gmt":"2021-04-25T00:32:57","slug":"cartsession-data-vs-form-data","status":"publish","type":"post","link":"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data","title":{"rendered":"Cart\/Session Data vs Form data"},"content":{"rendered":"<p>So I was making a form that was originally one page, to submit and order.<\/p>\n<p>It got more complex when I learned I should probably get the tax\/subtotal\/verification from our order processor before submitting the final order.<\/p>\n<p>So now I had a 2 part form. Part one: Enter line items Process part one: Calculate subtotal\/tax and list info for verification Part2:Verify info and submit for final order processing.<\/p>\n<p>Still, just 2 steps, not a very big deal, right? I didn&#8217;t want to worry about the session, a cart, etc. I ended up passing the info from step 1 (lineitems) and cloning it on step two into hidden form values, so these lineItems would be available when step 2 was processed.<\/p>\n<p>The kicker for me to switch to use a cart was that in order for me to calculate the price from the lineItems, I needed the price and the totals to not be form data that could be manipulated by the user. Instead of adding hidden price fields on the form, and worry about that specific security issue of modifying form data pricing, I just decided to keep track of the pricing in the session, on the cart, which also reduced my amount of form value overhead, bu mades things a little more complex.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>So I was making a form that was originally one page, to submit and order. It got more complex when I learned I should probably get the tax\/subtotal\/verification from our order processor before submitting the final order. So now I had a 2 part form. Part one: Enter line items Process part one: Calculate subtotal\/tax &hellip; <a href=\"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Cart\/Session Data vs Form data&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.11 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Cart\/Session Data vs Form data - The Dev Pages<\/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:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cart\/Session Data vs Form data - The Dev Pages\" \/>\n<meta property=\"og:description\" content=\"So I was making a form that was originally one page, to submit and order. It got more complex when I learned I should probably get the tax\/subtotal\/verification from our order processor before submitting the final order. So now I had a 2 part form. Part one: Enter line items Process part one: Calculate subtotal\/tax &hellip; Continue reading &quot;Cart\/Session Data vs Form data&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data\" \/>\n<meta property=\"og:site_name\" content=\"The Dev Pages\" \/>\n<meta property=\"article:published_time\" content=\"2008-05-23T18:38:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-04-25T00:32:57+00:00\" \/>\n<meta name=\"author\" content=\"Nate Admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@admin\" \/>\n<meta name=\"twitter:site\" content=\"@admin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nate Admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data#article\",\"isPartOf\":{\"@id\":\"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data\"},\"author\":{\"name\":\"Nate Admin\",\"@id\":\"https:\/\/n8williams.com\/devblog\/#\/schema\/person\/1c31624786b5382f1a811f0a01985757\"},\"headline\":\"Cart\/Session Data vs Form data\",\"datePublished\":\"2008-05-23T18:38:11+00:00\",\"dateModified\":\"2021-04-25T00:32:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data\"},\"wordCount\":220,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/n8williams.com\/devblog\/#\/schema\/person\/1c31624786b5382f1a811f0a01985757\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data\",\"url\":\"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data\",\"name\":\"Cart\/Session Data vs Form data - The Dev Pages\",\"isPartOf\":{\"@id\":\"https:\/\/n8williams.com\/devblog\/#website\"},\"datePublished\":\"2008-05-23T18:38:11+00:00\",\"dateModified\":\"2021-04-25T00:32:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/n8williams.com\/devblog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cart\/Session Data vs Form data\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/n8williams.com\/devblog\/#website\",\"url\":\"https:\/\/n8williams.com\/devblog\/\",\"name\":\"The Dev Pages\",\"description\":\"A knowledge base for web applications development (and beyond)\",\"publisher\":{\"@id\":\"https:\/\/n8williams.com\/devblog\/#\/schema\/person\/1c31624786b5382f1a811f0a01985757\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/n8williams.com\/devblog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/n8williams.com\/devblog\/#\/schema\/person\/1c31624786b5382f1a811f0a01985757\",\"name\":\"Nate Admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/n8williams.com\/devblog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/19d7bc7602072ac846e912622704a628?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/19d7bc7602072ac846e912622704a628?s=96&d=mm&r=g\",\"caption\":\"Nate Admin\"},\"logo\":{\"@id\":\"https:\/\/n8williams.com\/devblog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/n8williams.com\",\"https:\/\/twitter.com\/admin\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cart\/Session Data vs Form data - The Dev Pages","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:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data","og_locale":"en_US","og_type":"article","og_title":"Cart\/Session Data vs Form data - The Dev Pages","og_description":"So I was making a form that was originally one page, to submit and order. It got more complex when I learned I should probably get the tax\/subtotal\/verification from our order processor before submitting the final order. So now I had a 2 part form. Part one: Enter line items Process part one: Calculate subtotal\/tax &hellip; Continue reading \"Cart\/Session Data vs Form data\"","og_url":"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data","og_site_name":"The Dev Pages","article_published_time":"2008-05-23T18:38:11+00:00","article_modified_time":"2021-04-25T00:32:57+00:00","author":"Nate Admin","twitter_card":"summary_large_image","twitter_creator":"@admin","twitter_site":"@admin","twitter_misc":{"Written by":"Nate Admin","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data#article","isPartOf":{"@id":"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data"},"author":{"name":"Nate Admin","@id":"https:\/\/n8williams.com\/devblog\/#\/schema\/person\/1c31624786b5382f1a811f0a01985757"},"headline":"Cart\/Session Data vs Form data","datePublished":"2008-05-23T18:38:11+00:00","dateModified":"2021-04-25T00:32:57+00:00","mainEntityOfPage":{"@id":"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data"},"wordCount":220,"commentCount":0,"publisher":{"@id":"https:\/\/n8williams.com\/devblog\/#\/schema\/person\/1c31624786b5382f1a811f0a01985757"},"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data#respond"]}]},{"@type":"WebPage","@id":"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data","url":"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data","name":"Cart\/Session Data vs Form data - The Dev Pages","isPartOf":{"@id":"https:\/\/n8williams.com\/devblog\/#website"},"datePublished":"2008-05-23T18:38:11+00:00","dateModified":"2021-04-25T00:32:57+00:00","breadcrumb":{"@id":"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/n8williams.com\/devblog\/uncategorized\/cartsession-data-vs-form-data#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/n8williams.com\/devblog\/"},{"@type":"ListItem","position":2,"name":"Cart\/Session Data vs Form data"}]},{"@type":"WebSite","@id":"https:\/\/n8williams.com\/devblog\/#website","url":"https:\/\/n8williams.com\/devblog\/","name":"The Dev Pages","description":"A knowledge base for web applications development (and beyond)","publisher":{"@id":"https:\/\/n8williams.com\/devblog\/#\/schema\/person\/1c31624786b5382f1a811f0a01985757"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/n8williams.com\/devblog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/n8williams.com\/devblog\/#\/schema\/person\/1c31624786b5382f1a811f0a01985757","name":"Nate Admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/n8williams.com\/devblog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/19d7bc7602072ac846e912622704a628?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/19d7bc7602072ac846e912622704a628?s=96&d=mm&r=g","caption":"Nate Admin"},"logo":{"@id":"https:\/\/n8williams.com\/devblog\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/n8williams.com","https:\/\/twitter.com\/admin"]}]}},"_links":{"self":[{"href":"https:\/\/n8williams.com\/devblog\/wp-json\/wp\/v2\/posts\/10"}],"collection":[{"href":"https:\/\/n8williams.com\/devblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/n8williams.com\/devblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/n8williams.com\/devblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/n8williams.com\/devblog\/wp-json\/wp\/v2\/comments?post=10"}],"version-history":[{"count":1,"href":"https:\/\/n8williams.com\/devblog\/wp-json\/wp\/v2\/posts\/10\/revisions"}],"predecessor-version":[{"id":661,"href":"https:\/\/n8williams.com\/devblog\/wp-json\/wp\/v2\/posts\/10\/revisions\/661"}],"wp:attachment":[{"href":"https:\/\/n8williams.com\/devblog\/wp-json\/wp\/v2\/media?parent=10"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/n8williams.com\/devblog\/wp-json\/wp\/v2\/categories?post=10"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/n8williams.com\/devblog\/wp-json\/wp\/v2\/tags?post=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}