{"id":493,"date":"2019-09-14T08:23:17","date_gmt":"2019-09-14T08:23:17","guid":{"rendered":"https:\/\/www.webhozz.com\/code\/?p=493"},"modified":"2019-09-14T08:23:18","modified_gmt":"2019-09-14T08:23:18","slug":"php-form-validation","status":"publish","type":"post","link":"https:\/\/www.webhozz.com\/code\/php-form-validation\/","title":{"rendered":"PHP : Form Validation"},"content":{"rendered":"\n<h5 class=\"wp-block-heading\">Membersihkan dan Memvalidasi Formulir Data<\/h5>\n\n\n\n<p>Seperti yang kalian lihat dalam tutorial sebelumnya, proses\nmenangkap dan menampilkan data formulir yang dikirimkan cukup sederhana. Dalam\ntutorial ini kalian akan belajar cara menerapkan formulir kontak sederhana di\nsitus web kalian yang memungkinkan pengguna untuk mengirim komentar dan feedback\nmereka melalui email. Kami akan menggunakan fungsi PHP <strong><em>mail()<\/em><\/strong> yang sama untuk\nmengirim email.<\/p>\n\n\n\n<p>Kami juga akan menerapkan beberapa fitur keamanan dasar seperti sanitasi dan validasi input pengguna sehingga pengguna tidak dapat memasukkan data berbahaya yang membahayakan keamanan situs web atau mungkin merusak aplikasi.<\/p>\n\n\n\n<p>Berikut ini adalah skrip PHP lengkap kita yang melakukan\nhal-hal berikut:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Ini akan meminta pengguna untuk memasukkan komentarnya tentang situs web.<\/li><li>Skrip yang sama menampilkan formulir kontak dan memproses data formulir yang dikirimkan.<\/li><li>Script membersihkan dan memvalidasi input pengguna. Jika bidang yang diperlukan (ditandai dengan <strong><em>*<\/em><\/strong>) tidak ada atau validasi gagal karena input yang salah, skrip akan menampilkan kembali formulir dengan pesan kesalahan untuk bidang formulir yang sesuai.<\/li><li>Skrip mengingat bidang mana yang telah diisi pengguna, dan mengisi ulang bidang tersebut saat formulir ditampilkan kembali karena kesalahan validasi.<\/li><li>Jika data yang dikirimkan oleh pengguna dapat diterima dan semuanya berjalan baik itu akan mengirim email ke administrator situs web dan menampilkan pesan sukses kepada pengguna.<\/li><\/ul>\n\n\n\n<p>Ketikkan kode berikut dalam file &#8220;<em>contact.php<\/em>&#8221; dan simpan di direktori root proyek kalian:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;?php\n\/\/ Functions to filter user inputs\nfunction filterName($field){\n    \/\/ Sanitize user name\n    $field = filter_var(trim($field), FILTER_SANITIZE_STRING);\n    \n    \/\/ Validate user name\n    if(filter_var($field, FILTER_VALIDATE_REGEXP, array(&quot;options&quot;=&gt;array(&quot;regexp&quot;=&gt;&quot;\/^&#x5B;a-zA-Z\\s]+$\/&quot;)))){\n        return $field;\n    } else{\n        return FALSE;\n    }\n}    \nfunction filterEmail($field){\n    \/\/ Sanitize e-mail address\n    $field = filter_var(trim($field), FILTER_SANITIZE_EMAIL);\n    \n    \/\/ Validate e-mail address\n    if(filter_var($field, FILTER_VALIDATE_EMAIL)){\n        return $field;\n    } else{\n        return FALSE;\n    }\n}\nfunction filterString($field){\n    \/\/ Sanitize string\n    $field = filter_var(trim($field), FILTER_SANITIZE_STRING);\n    if(!empty($field)){\n        return $field;\n    } else{\n        return FALSE;\n    }\n}\n \n\/\/ Define variables and initialize with empty values\n$nameErr = $emailErr = $messageErr = &quot;&quot;;\n$name = $email = $subject = $message = &quot;&quot;;\n \n\/\/ Processing form data when form is submitted\nif($_SERVER&#x5B;&quot;REQUEST_METHOD&quot;] == &quot;POST&quot;){\n \n    \/\/ Validate user name\n    if(empty($_POST&#x5B;&quot;name&quot;])){\n        $nameErr = &quot;Please enter your name.&quot;;\n    } else{\n        $name = filterName($_POST&#x5B;&quot;name&quot;]);\n        if($name == FALSE){\n            $nameErr = &quot;Please enter a valid name.&quot;;\n        }\n    }\n    \n    \/\/ Validate email address\n    if(empty($_POST&#x5B;&quot;email&quot;])){\n        $emailErr = &quot;Please enter your email address.&quot;;     \n    } else{\n        $email = filterEmail($_POST&#x5B;&quot;email&quot;]);\n        if($email == FALSE){\n            $emailErr = &quot;Please enter a valid email address.&quot;;\n        }\n    }\n    \n    \/\/ Validate message subject\n    if(empty($_POST&#x5B;&quot;subject&quot;])){\n        $subject = &quot;&quot;;\n    } else{\n        $subject = filterString($_POST&#x5B;&quot;subject&quot;]);\n    }\n    \n    \/\/ Validate user comment\n    if(empty($_POST&#x5B;&quot;message&quot;])){\n        $messageErr = &quot;Please enter your comment.&quot;;     \n    } else{\n        $message = filterString($_POST&#x5B;&quot;message&quot;]);\n        if($message == FALSE){\n            $messageErr = &quot;Please enter a valid comment.&quot;;\n        }\n    }\n    \n    \/\/ Check input errors before sending email\n    if(empty($nameErr) &amp;&amp; empty($emailErr) &amp;&amp; empty($messageErr)){\n        \/\/ Recipient email address\n        $to = 'webmaster@example.com';\n        \n        \/\/ Create email headers\n        $headers = 'From: '. $email . &quot;\\r\\n&quot; .\n        'Reply-To: '. $email . &quot;\\r\\n&quot; .\n        'X-Mailer: PHP\/' . phpversion();\n        \n        \/\/ Sending email\n        if(mail($to, $subject, $message, $headers)){\n            echo '&lt;p class=&quot;success&quot;&gt;Your message has been sent successfully!&lt;\/p&gt;';\n        } else{\n            echo '&lt;p class=&quot;error&quot;&gt;Unable to send email. Please try again!&lt;\/p&gt;';\n        }\n    }\n}\n?&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html lang=&quot;en&quot;&gt;\n&lt;head&gt;\n    &lt;meta charset=&quot;UTF-8&quot;&gt;\n    &lt;title&gt;Contact Form&lt;\/title&gt;\n    &lt;style type=&quot;text\/css&quot;&gt;\n        .error{ color: red; }\n        .success{ color: green; }\n    &lt;\/style&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h2&gt;Contact Us&lt;\/h2&gt;\n    &lt;p&gt;Please fill in this form and send us.&lt;\/p&gt;\n    &lt;form action=&quot;contact.php&quot; method=&quot;post&quot;&gt;\n        &lt;p&gt;\n            &lt;label for=&quot;inputName&quot;&gt;Name:&lt;sup&gt;*&lt;\/sup&gt;&lt;\/label&gt;\n            &lt;input type=&quot;text&quot; name=&quot;name&quot; id=&quot;inputName&quot; value=&quot;&lt;?php echo $name; ?&gt;&quot;&gt;\n            &lt;span class=&quot;error&quot;&gt;&lt;?php echo $nameErr; ?&gt;&lt;\/span&gt;\n        &lt;\/p&gt;\n        &lt;p&gt;\n            &lt;label for=&quot;inputEmail&quot;&gt;Email:&lt;sup&gt;*&lt;\/sup&gt;&lt;\/label&gt;\n            &lt;input type=&quot;text&quot; name=&quot;email&quot; id=&quot;inputEmail&quot; value=&quot;&lt;?php echo $email; ?&gt;&quot;&gt;\n            &lt;span class=&quot;error&quot;&gt;&lt;?php echo $emailErr; ?&gt;&lt;\/span&gt;\n        &lt;\/p&gt;\n        &lt;p&gt;\n            &lt;label for=&quot;inputSubject&quot;&gt;Subject:&lt;\/label&gt;\n            &lt;input type=&quot;text&quot; name=&quot;subject&quot; id=&quot;inputSubject&quot; value=&quot;&lt;?php echo $subject; ?&gt;&quot;&gt;\n        &lt;\/p&gt;\n        &lt;p&gt;\n            &lt;label for=&quot;inputComment&quot;&gt;Message:&lt;sup&gt;*&lt;\/sup&gt;&lt;\/label&gt;\n            &lt;textarea name=&quot;message&quot; id=&quot;inputComment&quot; rows=&quot;5&quot; cols=&quot;30&quot;&gt;&lt;?php echo $message; ?&gt;&lt;\/textarea&gt;\n            &lt;span class=&quot;error&quot;&gt;&lt;?php echo $messageErr; ?&gt;&lt;\/span&gt;\n        &lt;\/p&gt;\n        &lt;input type=&quot;submit&quot; value=&quot;Send&quot;&gt;\n        &lt;input type=&quot;reset&quot; value=&quot;Reset&quot;&gt;\n    &lt;\/form&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre><\/div>\n\n\n<h5 class=\"wp-block-heading\">Penjelasan Kode<\/h5>\n\n\n\n<p>Kalian mungkin berpikir tentang apa kode itu. OK, mari kita\nlangsung ke dalamnya.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Fungsi <strong><em>filterName()<\/em><\/strong> (baris no-03) memvalidasi nilai input sebagai nama orang. Nama yang valid hanya dapat berisi karakter alfabet (a-z, A-Z).<\/li><li>Fungsi <strong><em>filterEmail()<\/em><\/strong> (baris no-14) memvalidasi nilai input sebagai alamat email.<\/li><li>Fungsi <strong><em>filterString() <\/em><\/strong>(baris no-25) hanya membersihkan nilai input dengan menghilangkan tag HTML dan karakter khusus. Itu tidak memvalidasi nilai input terhadap apa pun.<\/li><li>Atribut <strong><em>action=&#8221;contact.php&#8221;<\/em><\/strong> (baris no-111) di dalam tag <strong><em>&lt;form><\/em><\/strong> menentukan bahwa file <strong><em>contact.php<\/em><\/strong> yang sama menampilkan formulir serta memproses data formulir.<\/li><li>Kode PHP di dalam atribut nilai <strong><em>&lt;input><\/em><\/strong> dan <strong><em>&lt;textarea><\/em><\/strong> mis. <strong>&lt;?php echo $name; ?><\/strong> menampilkan nilai prefilled ketika form ditampilkan kembali setelah kesalahan validasi.<\/li><li>Kode PHP di dalam kelas <strong><em>.error <\/em><\/strong>mis. <strong><em>&lt;span class=&#8221;error&#8221;> &lt;?php echo $nameErr; ?> &lt;\/span><\/em><\/strong> kesalahan tampilan untuk bidang terkait.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Membersihkan dan Memvalidasi Formulir Data Seperti yang kalian lihat dalam tutorial sebelumnya, proses menangkap dan menampilkan data formulir yang dikirimkan cukup sederhana. Dalam tutorial ini<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-493","post","type-post","status-publish","format-standard","hentry","category-php"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Belajar PHP : Form Validation - WebHozz Code<\/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:\/\/www.webhozz.com\/code\/php-form-validation\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Belajar PHP : Form Validation - WebHozz Code\" \/>\n<meta property=\"og:description\" content=\"Membersihkan dan Memvalidasi Formulir Data Seperti yang kalian lihat dalam tutorial sebelumnya, proses menangkap dan menampilkan data formulir yang dikirimkan cukup sederhana. Dalam tutorial ini\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webhozz.com\/code\/php-form-validation\/\" \/>\n<meta property=\"og:site_name\" content=\"WebHozz Code\" \/>\n<meta property=\"article:published_time\" content=\"2019-09-14T08:23:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-09-14T08:23:18+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.webhozz.com\\\/code\\\/php-form-validation\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.webhozz.com\\\/code\\\/php-form-validation\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.webhozz.com\\\/code\\\/#\\\/schema\\\/person\\\/3b2b79dc317236b0dde4b1fda37263e1\"},\"headline\":\"PHP : Form Validation\",\"datePublished\":\"2019-09-14T08:23:17+00:00\",\"dateModified\":\"2019-09-14T08:23:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.webhozz.com\\\/code\\\/php-form-validation\\\/\"},\"wordCount\":359,\"articleSection\":[\"PHP\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.webhozz.com\\\/code\\\/php-form-validation\\\/\",\"url\":\"https:\\\/\\\/www.webhozz.com\\\/code\\\/php-form-validation\\\/\",\"name\":\"Belajar PHP : Form Validation - WebHozz Code\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.webhozz.com\\\/code\\\/#website\"},\"datePublished\":\"2019-09-14T08:23:17+00:00\",\"dateModified\":\"2019-09-14T08:23:18+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.webhozz.com\\\/code\\\/#\\\/schema\\\/person\\\/3b2b79dc317236b0dde4b1fda37263e1\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.webhozz.com\\\/code\\\/php-form-validation\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.webhozz.com\\\/code\\\/php-form-validation\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.webhozz.com\\\/code\\\/php-form-validation\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.webhozz.com\\\/code\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP : Form Validation\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.webhozz.com\\\/code\\\/#website\",\"url\":\"https:\\\/\\\/www.webhozz.com\\\/code\\\/\",\"name\":\"WebHozz Code\",\"description\":\"Tutorial Web &amp; Pemrograman Indonesia\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.webhozz.com\\\/code\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.webhozz.com\\\/code\\\/#\\\/schema\\\/person\\\/3b2b79dc317236b0dde4b1fda37263e1\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f222cb0ed38f2100d666bb262fd38d4f0d8e5673698208e40ff83118f10a4e8e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f222cb0ed38f2100d666bb262fd38d4f0d8e5673698208e40ff83118f10a4e8e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f222cb0ed38f2100d666bb262fd38d4f0d8e5673698208e40ff83118f10a4e8e?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"url\":\"https:\\\/\\\/www.webhozz.com\\\/code\\\/author\\\/dody\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Belajar PHP : Form Validation - WebHozz Code","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:\/\/www.webhozz.com\/code\/php-form-validation\/","og_locale":"en_US","og_type":"article","og_title":"Belajar PHP : Form Validation - WebHozz Code","og_description":"Membersihkan dan Memvalidasi Formulir Data Seperti yang kalian lihat dalam tutorial sebelumnya, proses menangkap dan menampilkan data formulir yang dikirimkan cukup sederhana. Dalam tutorial ini","og_url":"https:\/\/www.webhozz.com\/code\/php-form-validation\/","og_site_name":"WebHozz Code","article_published_time":"2019-09-14T08:23:17+00:00","article_modified_time":"2019-09-14T08:23:18+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webhozz.com\/code\/php-form-validation\/#article","isPartOf":{"@id":"https:\/\/www.webhozz.com\/code\/php-form-validation\/"},"author":{"name":"admin","@id":"https:\/\/www.webhozz.com\/code\/#\/schema\/person\/3b2b79dc317236b0dde4b1fda37263e1"},"headline":"PHP : Form Validation","datePublished":"2019-09-14T08:23:17+00:00","dateModified":"2019-09-14T08:23:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webhozz.com\/code\/php-form-validation\/"},"wordCount":359,"articleSection":["PHP"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.webhozz.com\/code\/php-form-validation\/","url":"https:\/\/www.webhozz.com\/code\/php-form-validation\/","name":"Belajar PHP : Form Validation - WebHozz Code","isPartOf":{"@id":"https:\/\/www.webhozz.com\/code\/#website"},"datePublished":"2019-09-14T08:23:17+00:00","dateModified":"2019-09-14T08:23:18+00:00","author":{"@id":"https:\/\/www.webhozz.com\/code\/#\/schema\/person\/3b2b79dc317236b0dde4b1fda37263e1"},"breadcrumb":{"@id":"https:\/\/www.webhozz.com\/code\/php-form-validation\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webhozz.com\/code\/php-form-validation\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.webhozz.com\/code\/php-form-validation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webhozz.com\/code\/"},{"@type":"ListItem","position":2,"name":"PHP : Form Validation"}]},{"@type":"WebSite","@id":"https:\/\/www.webhozz.com\/code\/#website","url":"https:\/\/www.webhozz.com\/code\/","name":"WebHozz Code","description":"Tutorial Web &amp; Pemrograman Indonesia","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webhozz.com\/code\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.webhozz.com\/code\/#\/schema\/person\/3b2b79dc317236b0dde4b1fda37263e1","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f222cb0ed38f2100d666bb262fd38d4f0d8e5673698208e40ff83118f10a4e8e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f222cb0ed38f2100d666bb262fd38d4f0d8e5673698208e40ff83118f10a4e8e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f222cb0ed38f2100d666bb262fd38d4f0d8e5673698208e40ff83118f10a4e8e?s=96&d=mm&r=g","caption":"admin"},"url":"https:\/\/www.webhozz.com\/code\/author\/dody\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webhozz.com\/code\/wp-json\/wp\/v2\/posts\/493","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webhozz.com\/code\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webhozz.com\/code\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webhozz.com\/code\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webhozz.com\/code\/wp-json\/wp\/v2\/comments?post=493"}],"version-history":[{"count":1,"href":"https:\/\/www.webhozz.com\/code\/wp-json\/wp\/v2\/posts\/493\/revisions"}],"predecessor-version":[{"id":494,"href":"https:\/\/www.webhozz.com\/code\/wp-json\/wp\/v2\/posts\/493\/revisions\/494"}],"wp:attachment":[{"href":"https:\/\/www.webhozz.com\/code\/wp-json\/wp\/v2\/media?parent=493"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webhozz.com\/code\/wp-json\/wp\/v2\/categories?post=493"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webhozz.com\/code\/wp-json\/wp\/v2\/tags?post=493"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}