บทความนี้จะสอนในส่วนของระบบสมาชิก ซึ่งจะมีการสมัครสมาชิก (Register) การเข้าสู่ระบบ (Login) และการออกจากระบบ (Logout) บทความนี้จะต่อเนื่องจากบทความตอนที่ 2 นะครับ เพราะจะมีคำสั่งหรือโค๊ดบางส่วนที่อาจจะทำให้งง ไม่รู้ที่มาของมัน ให้กลับไปศึกษาตอนที่ 2 ให้หายงงก่อนครับ
อันดับแรก ก่อนที่เราจะสร้างฟอร์มสำหรับกรอกข้อมูล การลงทะเบียนสมาชิก และฟอร์มเข้าสู่ระบบ เราจะต้องมีปลั๊กอินสำหรับเป็นผู้ช่วยในการตรวจสอบความถูกต้องของข้อมูล ซึ่ง Bootstrap เองก็มีปลั๊กอินตัวหนึ่งให้สามารถเรียกใช้งาน และมีคุณสมบัติที่เจ๋งฝุดๆเลยครับ ให้ดาวน์โหลดจากเว็บนี้ครับ http://bootstrapvalidator.com/
ให้ Extact ไฟล์แล้วเปลี่ยนชื่อโฟลเดอร์ว่า btvalidate แล้วเอาไปไว้ในตำแหน่งเดียวกับไฟล์ index.php ดังรูป ให้สังเกตุโฟลเดอร์ที่ 3 ชื่อ btvalidate นะครับ ให้ทำตามนี้เลย (ขออนุญาติรีไซเคิลรูปจากบทความก่อนมาลงประกอบ เพื่อช่วยGoogleประหยัดพื้นที่จัดเก็บรูปครับ อิอิ)
เท่านี้ก็ถือว่าเรามีเครื่องมือสำหรับก้าวไปสู่ Step ต่อไปครบแล้วครับ
เราจะเริ่มที่ไฟล์ register.php ก่อนครับ ให้สร้างไฟล์ register.php ไว้ข้างนอกสุด ในตำแหน่งเดียวกับไฟล์ index.php ดูตามรูปข้างบนก็ได้คับ จากนั้นเราจะพิมพ์คำสั่งดังนี้
<?php session_start(); if (!empty($_POST['btRegister'])) { require('bin/connectdb.php'); //ไฟล์เก็บคำสั่งเชื่อมต่อกับฐานข้อมูล connectdb.php ศึกษาจาก http://php-for-ecommerce.blogspot.com/2014/07/webboard-php-mysql-2.html#connectdb $msgError=''; $username = ''; $pass = ''; $email = ''; $name = ''; $mem_image = ''; $fileType = ''; $filename = ''; //ตรวจสอบ Username ว่ามีค่าว่างหรือไม่ if (!empty($_POST['mem_user'])) { $username = $_POST['mem_user']; //Patternตรวจสอบการกรอกข้อมูลรองรับ a-z,A-Z,ตัวเลข ตั้งแต่ 4-20 ตัวอักษร //ศึกษาเพิ่มเติมจาก http://php-for-ecommerce.blogspot.com/2012/09/validate-form-regular-expression.html $chkInputUser = '/^[a-zA-Z0-9]{4,20}$/'; if (!preg_match($chkInputUser, $username, $regs)) { //ตรวจสอบการกรอกข้อมูลของ Username ผ่าน $msgError .= 'Username ต้องมีขนาดตัวอักษร 4-20 ตัวอักษรภาษาอังกฤษและตัวเลขเท่านั้น<br />'; } //ตรวจสอบ Username ว่าซ้ำหรือไม่ $rs_username = mysql_query("SELECT COUNT(*) As cUsername FROM tbl_member WHERE mem_user='$username' "); $show_rs_username = mysql_fetch_assoc($rs_username); if ($show_rs_username['cUsername'] > 0) { $msgError .= 'Username นี้มีผู้ใช้งานแล้ว<br />'; } } else {//ถ้ามีค่าว่างให้แจ้งเออเร่อดังนี้ $msgError .= 'กรุณากรอก Username ด้วย<br />'; } //ตรวจสอบรหัสผ่านว่ามีค่าว่างหรือไม่ if (!empty($_POST['mem_pass']) && !empty($_POST['repass'])) { $pass = $_POST['mem_pass']; $repass = $_POST['repass']; if ($pass != $repass) {//ตรวจสอบรหัสผ่านว่าตรงกันทั้งสองช่องหรือไม่ $msgError .= 'รหัสผ่านทั้งสองช่องไม่ตรงกัน<br />'; } } else {//ถ้ามีค่าว่างให้แจ้งเออเร่อดังนี้ $msgError .= 'กรุณากรอกรหัสผ่านทั้งสองช่องด้วย<br />'; } //ตรวจสอบอีเมลว่ามีค่าว่างหรือไม่ if (!empty($_POST['mem_email'])) { $email = $_POST['mem_email']; $chkInputEmail = '/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9._-])+\.([a-zA-Z])+$/'; //Patternตรวจสอบอีเมล //ศึกษาเพิ่มเติมจาก http://php-for-ecommerce.blogspot.com/2012/09/validate-form-regular-expression.html if (!preg_match($chkInputEmail, $email, $regs)) { //ตรวจสอบการกรอกข้อมูลEmailผ่าน $msgError .= 'รูปแบบอีเมลไม่ถูกต้อง<br />'; } //ตรวจสอบอีเมลว่าซ้ำหรือไม่ $rs_email = mysql_query("SELECT COUNT(*) As cEmail FROM tbl_member WHERE mem_email='$email' "); $show_rs_email = mysql_fetch_assoc($rs_email); if ($show_rs_email['cEmail'] > 0) { $msgError .= 'อีเมลนี้มีผู้ใช้งานแล้ว<br />'; } } else {//ถ้ามีค่าว่างให้แจ้งเออเร่อดังนี้ $msgError .= 'กรุณากรอกอีเมลด้วย<br />'; } //ตรวจสอบ ชื่อเรียกในเว็บ ว่ามีค่าว่างหรือไม่ if (!empty($_POST['mem_name'])) { $name = $_POST['mem_name']; //ตรวจสอบชื่อเรียกในเว็บว่าซ้ำหรือไม่ $rs_name = mysql_query("SELECT COUNT(*) As cName FROM tbl_member WHERE mem_name='$name' "); $show_rs_name = mysql_fetch_assoc($rs_name); if ($show_rs_name['cName'] > 0) { $msgError .= 'ชื่อนี้มีผู้ใช้งานแล้ว<br />'; } } else {//ถ้ามีค่าว่างให้แจ้งเออเร่อดังนี้ $msgError .= 'กรุณากรอกชื่อ ชื่อแสดงในเว็บ ด้วย<br />'; } //ถ้ารูปประจำตัวไม่เป็นค่าว่าง if (!empty($_FILES['mem_image']['name'])) { $mem_image = $_FILES['mem_image']; $fileType = strtolower(end(explode('.', $mem_image['name']))); if ($fileType != 'jpeg' && $fileType != 'jpg' && $fileType != 'png' && $fileType != 'gif') { //ตรวจสอบนามสกุลไฟล์ ถ้าไม่มี .jpeg,jpg,png,gif ให้แสดงเออเร่อดังนี้ $msgError .= 'นามสกุลไฟล์ไม่ถูกต้อง<br />'; } else {//หากมีนามสกุลไฟล์ถูกต้อง ให้ใช้ตัวแปร $filename รับชื่อรูปประจำตัว $filename = date("dmyHis") . '.' . $fileType; } } if (empty($msgError)) {//หากไม่มีข้อความเออเร่อ แสดงว่ากรอกข้อมูลถูกต้องหมดแล้ว //ให้บันทึกลงฐานข้อมูล mysql_query("INSERT INTO tbl_member(mem_user,mem_pass,mem_email,mem_name ,mem_image) VALUE('$username','$pass','$email','$name','$filename')"); if (!empty($filename)) {//ตรวจสอบชื่อไฟล์ ถ้าไม่เป็นค่าว่าง ให้อัพโหลดไฟล์รูปประจำตัวไปเก็บไว้ใน โฟลเดอร์ images/member move_uploaded_file($mem_image['tmp_name'], "images/member/" . $filename); } //สร้างตัวแปร session มารับค่าเพื่อแจ้งใหสมาชิกทราบว่า ลงทะเบียนเสร็จแล้ว $_SESSION['message_success'] = 'ลงทะเบียนเสร็จสมบูรณ์แล้ว'; } else {//หากมีข้อความเออเร่อ //ให้สร้างตัวแปร sessiion มารับค่าเพื่อแจ้งให้สมาชิกถึงปัญหาที่เกิดขึ้น $_SESSION['message_error']= $msgError; } } ?> <html> <head> <?php require('head.php'); ?> <link rel="stylesheet" type="text/css" href="btvalidate/dist/css/bootstrapValidator.min.css"/> <script type="text/javascript" src="btvalidate/dist/js/bootstrapValidator.min.js"></script> <title>สมัครสมาชิก</title> </head> <body> <?php require('menu.php'); ?> <div class="container"> <?php require('header.php'); ?> <div class="row ws-content"> <div class="col-md-4 col-sm-4 col-md-offset-4 col-sm-offset-4"> <h1>สม้ครสมาชิก</h1> <?php //พบตัวแปร session ชื่อ message_success แสดงว่าลงทะเบียนเสร็จสมบูรณ์แล้ว if (!empty($_SESSION['message_success'])) { ?> <div class="alert alert-success" role="alert"> <?php //ให้แสดงข้อความแจ้งให้สมาชิกทราบดังนี้ echo $_SESSION['message_success']; ?><br /> <span>คลิก <a href="login.php">ที่นี้</a> เพื่อเข้าสู่ระบบ</span> </div> <?php $_SESSION['message_success'] = ''; } ?> <?php //พบตัวแปร session ชื่อ message_error แสดงว่ามีปัญหาเกิดขึ้น จากการกรอกข้อมูลของสมาชิก if (!empty($_SESSION['message_error'])) { ?> <div class="alert alert-danger" role="alert"> <?php //ให้แสดงข้อความแจ้งให้สมาชิกทราบดังนี้ echo $_SESSION['message_error']; ?> </div> <?php $_SESSION['message_error'] = ''; } ?> <form method="post" enctype="multipart/form-data" id="registrationForm" name="registrationForm" action=""> <div class="form-group"> <label for="username">Username</label> <input type="text" class="form-control" id="mem_user" name="mem_user" placeholder="Username"> </div> <div class="form-group"> <label for="password">รหัสผ่าน</label> <input type="password" class="form-control" id="mem_pass" name="mem_pass" placeholder="รหัสผ่าน"> </div> <div class="form-group"> <label for="repassword">ยืนยันรหัสผ่าน</label> <input type="password" class="form-control" id="repass" name="repass" placeholder="ยืนยันรหัสผ่าน"> </div> <div class="form-group"> <label for="name">ชื่อแสดงในเว็บ</label> <input type="text" class="form-control" id="mem_name" name="mem_name" placeholder="ชื่อแสดงในเว็บ"> </div> <div class="form-group"> <label for="email">Email</label> <input type="text" class="form-control" id="mem_email" name="mem_email" placeholder="อีเมล"> </div> <div class="form-group"> <label for="image member">รูประจำตัว</label> <input type="file" id="mem_image" name="mem_image"> </div> <div class="form-group"> <input type="submit" class="btn btn-primary" name="btRegister" value="ลงทะเบียน" > <input type="reset" class="btn btn-primary" name="reset" value="Reset"> </div> </form> </div> </div> <?php require('footer.php'); ?> </div> <script> $(document).ready(function() { $('#registrationForm').bootstrapValidator({ feedbackIcons: { valid: 'glyphicon glyphicon-ok', invalid: 'glyphicon glyphicon-remove', validating: 'glyphicon glyphicon-refresh' }, fields: { mem_user: {//ตรวจสอบการกรอกข้อมูลของ textfield ชื่อ mem_user (name="mem_user") validators: { notEmpty: {//ตรวจสอบค่าว่างของ mem_user message: 'กรุณากรอก Username ด้วย' }, stringLength: {//ตรวจสอบขนาดตัวอักษรของ mem_user min: 4, max: 20, message: 'Username ต้องมีขนาดตัวอักษร 4-20 ตัวอักษรเท่านั้น' }, regexp: {//ตรวจสอบการกรอกข้อมูลที่รองรับเฉพาะตัวอักษรภาษาอังกฤษและตัวเลขเท่านั้นของ mem_user regexp: /^[a-zA-Z0-9]+$/, message: 'กรอกข้อมูลไม่ถูกต้อง รองรับภาษาอังกฤษและตัวเลขเท่านั้น' }, different: {//ค่าใน mem_user ต้องไม่ตรงกับ mem_pass field: 'mem_pass', message: 'Username ต้องมีค่าไม่ตรงกับรหัสผ่าน' }, remote: {//ส่งค่าไปตรวจสอบในฐานข้อมูลว่ามีผู้ใช้งานชื่อ username นี้แล้วหรือยัง message: 'Username นี้มีผู้ใช้งานแล้ว', url: 'check_data_ajax.php', data: { type: 'username' } } } }, mem_pass: {//ตรวจสอบการกรอกข้อมูลของ textfield ชื่อ mem_pass (name="mem_pass") validators: { notEmpty: {//ตรวจสอบค่าว่าง message: 'กรุณากรอก รหัสผ่าน ด้วย' }, stringLength: {//ตรวจสอบขนาดตัวอักษร min: 4, max: 20, message: 'รหัสผ่านต้องมีขนาด 4-20 ตัวอักษร' } } }, repass: {//ตรวจสอบการกรอกข้อมูลของ textfield ชื่อ repass (name="repass") validators: { notEmpty: {//ตรวจสอบค่าว่าง message: 'กรุณากรอก ยืนยันรหัสผ่าน ด้วย' }, identical: {//ตรวจสอบค่าต้องตรงกับ textfield ชื่อ mem_pass field: 'mem_pass', message: 'ค่าต้องตรงกับรหัสผ่าน' } } }, mem_email: {//ตรวจสอบการกรอกข้อมูลของ textfield ชื่อ mem_email (name="mem_email") validators: { notEmpty: {//ตรวจสอบค่าว่าง message: 'กรุณากรอก Email ด้วย' }, emailAddress: {//ตรวจสอบรูปแบบอีเมลว่ากรอกถูกต้องตามรูปแบบหรือไม่ message: 'รูปแบบอีเมลไม่ถูกต้อง' }, remote: {//ส่งค่าไปตรวจสอบในฐานข้อมูลว่ามีผู้ใช้อีเมลนี้แล้วหรือยัง message: 'Email นี้มีผู้ใช้งานแล้ว', url: 'check_data_ajax.php', data: { type: 'email' } } } }, mem_name: {//ตรวจสอบการกรอกข้อมูลของ textfield ชื่อ mem_name (name="mem_name") validators: { notEmpty: {//ตรวจสอบค่าว่าง message: 'กรุณากรอก ชื่อแสดงในเว็บ ด้วย' }, remote: {//ส่งค่าไปตรวจสอบในฐานข้อมูลว่ามีผู้ใช้ชื่อนี้แล้วหรือยัง message: 'ชื่อนี้ี้มีผู้ใช้งานแล้ว', url: 'check_data_ajax.php', data: { type: 'nameMember' } } } }, mem_image: {//ตรวจสอบการกรอกข้อมูลของ File Field ชื่อ mem_image (name="mem_image") validators: { file: {//ตรวจสอบนามสกุลไฟล์ รองรับ jpeg,jpg,png,gif และขนาดไม่เกิน 2MB extension: 'jpeg,jpg,png,gif', type: 'image/jpeg,image/jpg,image/png,image/gif', maxSize: 2048 * 1024, // 2 MB message: 'รองรับนามสกุล jpg,jpeg,png,gif และขนาดต้องไม่เกิน 2MB' } } } } }); }); </script> </body> </html>
จากนั้นให้สร้างไฟล์ check_data_ajax.php ให้อยู่ในตำแหน่งเดียวกับไฟล์ register.php ซึ่งเป็นไฟล์สำหรับตรวจข้อมูลแบบ AJAX โดยข้อมูลที่เราจะตรวจสอบคือ ตรวจสอบ UserName ว่าซ่ำหรือป่าว , ตรวจสอบ Email ว่ามีคนใช่หรือยัง ,ตรวจสอบชื่อแสดงในเว็บว่าชื่อซ่ำหรือป่าว โดยมันจะทำหน้าที่รับค่าที่ส่งมาจากไฟล์ register.php แบบ AJAX มาตรวจสอบ แล้วส่งค่าผลลัพธุ์จากการตรวจสอบกลับไป เป็นต้น และให้พิมพ์คำสั่งดังนี้ครับ
<?php require('bin/connectdb.php'); $isAvailable = true; switch ($_POST['type']) { case 'email': //ตรวจสอบอีเมลว่าซ้ำหรือไม่ $email = $_POST['mem_email']; $rs_email = mysql_query("SELECT COUNT(*) As cEmail FROM tbl_member WHERE mem_email='$email' "); $show_rs_email = mysql_fetch_assoc($rs_email); if ($show_rs_email['cEmail'] > 0) { $isAvailable = false; } break; case 'nameMember': //ตรวจสอบชื่อเรียกในเว็บว่าซ้ำหรือไม่ $name = $_POST['mem_name']; $rs_name = mysql_query("SELECT COUNT(*) As cName FROM tbl_member WHERE mem_name='$name' "); $show_rs_name = mysql_fetch_assoc($rs_name); if ($show_rs_name['cName'] > 0) { $isAvailable = false; } break; default: //ตรวจสอบ Username ว่าซ้ำหรือไม่ $username = $_POST['mem_user']; $rs_username = mysql_query("SELECT COUNT(*) As cUsername FROM tbl_member WHERE mem_user='$username' "); $show_rs_username = mysql_fetch_assoc($rs_username); if ($show_rs_username['cUsername'] > 0) { $isAvailable = false; } break; } // คืนค่าแบบ JSON echo json_encode(array( 'valid' => $isAvailable, )); ?>
ให้RUNไฟล์นี้ โดยพิมพ์ในWeb Browser ว่า http://localhost/mywb/register.php จะได้ผลลัพธุ์ดังนี้
ถ้าเปิดบนคอมพิวเตอร์หรือโน๊ตบุคตามรูปข้างบนครับ แต่ถ้าเปิดบน Tablet หรือ Smart Phone ต่างๆจะได้ผลลัพธุ์ดังรูปข้างล่างครับ
สำหรับตัวช่วยที่ทำให้เกิดผลลัพธุ์ตามที่กล่าวไปข้างต้น นั่นก็คือ Bootstrap นั่นเองครับ
เมื่อเราทำส่วนของระบบสมัครสมาชิกของWebboardเรียบร้อยแล้ว ต่อไปคือส่วนของการเข้าสู่ระบบ หรือระบบล็อกอิน นั่นเองครับ ให้สร้างไฟล์ login.php ให้อยู่ตำแหน่งเดียวกับไฟล์ register.php และพิมพ์คำสั่งดังนี้
<?php session_start(); if(!empty($_POST['btLogin'])){//มีการคลิกที่ปุ่ม เข้าสู่ระบบ require('bin/connectdb.php');//เรียกไฟล์เชื่อมต่อกับฐานข้อมูล $msgError=''; //ค่า username ,password ไม่เป็นค่าว่าง if(!empty($_POST['mem_user'])&& !empty($_POST['mem_pass'])){ $username=$_POST['mem_user']; $password=$_POST['mem_pass']; //ตรวจสอบ username,password ว่ามีตรงกับฐานข้อมูลหรือไม่ $rs_chk_mb=mysql_query("SELECT mem_name,mem_id,mem_level FROM tbl_member WHERE mem_user='$username' AND mem_pass='$password'"); $show_chk_mb= mysql_fetch_assoc($rs_chk_mb); if(empty($show_chk_mb['mem_name'])){//หากไม่พบข้อมูล username,password ในฐานข้อมูล ให้แสดงข้อความแจ้งเตือนดังนี้ $msgError.='กรอกข้อมูล Username หรือ Password ไม่ถูกต้อง<br />'; }else{//หากพบว่ากรอกข้อมูลถูกต้อง ให้สร้างตัวแปรแบบ session มารับค่าดังนี้ $_SESSION['mem_id']=$show_chk_mb['mem_id'];//รับค่า id สมาชิก $_SESSION['mem_name']=$show_chk_mb['mem_name'];//รับค่าชื่อของสมาชิก $_SESSION['mem_level']=$show_chk_mb['mem_level'];//รับค่าระดับผู้ใช้งานของสมาชิก 1 = admin ,2=สมาชิก } }else{//กรณีที่สมาชิกไม่กรอกข้อมูล แล้วดันทะลึ่งกดปุ่ม เข้าสู่ระบบ ให้แจ้งข้อความดังนี้ $msgError.='กรุณากรอก Username และ Password ด้วย<br />'; } if(empty($msgError)){ //หากสมาชิกพิมพ์รหัสผ่านถูกต้อง ให้Redirect หน้าไปที่ไฟล์ index.php ซึ่งก็คือหน้าโฮมนั่นเอง header("Location:index.php"); }else{ //หากกรอกรหัสผ่านไม่ถูกต้อง ให้สร้างตัวแปร session มารับค่าเพื่อแจ้งให้ทราบถึงปัญหาที่เกิดขึ้น $_SESSION['message_error']=$msgError; } } ?> <html> <head> <?php require('head.php'); ?> <link rel="stylesheet" type="text/css" href="btvalidate/dist/css/bootstrapValidator.min.css"/> <script type="text/javascript" src="btvalidate/dist/js/bootstrapValidator.min.js"></script> <title>เข้าสู่ระบบ MYWEBBOARD</title> </head> <body> <?php require('menu.php'); ?> <div class="container"> <?php require('header.php'); ?> <div class="row ws-content"> <div class="col-md-4 col-sm-4 col-md-offset-4 col-sm-offset-4"> <h1>เข้าสู่ระบบ</h1> <?php if (!empty($_SESSION['message_error'])) { //แสดงปัญที่เกิดขึ้นจากการกรอกรหัสผ่านเข้าสู่ระบบ ?> <div class="alert alert-danger" role="alert"> <?php echo $_SESSION['message_error']; ?> </div> <?php $_SESSION['message_error'] = ''; } ?> <form method="post" enctype="multipart/form-data" id="registrationForm" name="registrationForm" action=""> <div class="form-group"> <label for="username">Username</label> <input type="text" class="form-control" id="mem_user" name="mem_user" placeholder="Username"> </div> <div class="form-group"> <label for="password">รหัสผ่าน</label> <input type="password" class="form-control" id="mem_pass" name="mem_pass" placeholder="รหัสผ่าน"> </div> <div class="form-group"> <input type="submit" class="btn btn-primary" name="btLogin" value="เข้าสู่ระบบ" > </div> </form> </div> </div> <?php require('footer.php'); ?> </div> <script> $(document).ready(function() { //คำสั่งข้างล่างนี้คล้ายไฟล์ register.php ให้ศึกษาจากโค๊ดจากไฟล์ register.php ได้เลยครับ $('#registrationForm').bootstrapValidator({ feedbackIcons: { valid: 'glyphicon glyphicon-ok', invalid: 'glyphicon glyphicon-remove', validating: 'glyphicon glyphicon-refresh' }, fields: { mem_user: { validators: { notEmpty: { message: 'กรุณากรอก Username ด้วย' }, stringLength: { min: 4, max: 20, message: 'Username ต้องมีขนาดตัวอักษร 4-20 ตัวอักษรเท่านั้น' }, regexp: { regexp: /^[a-zA-Z0-9]+$/, message: 'กรอกข้อมูลไม่ถูกต้อง รองรับภาษาอังกฤษและตัวเลขเท่านั้น' }, different: { field: 'mem_pass', message: 'Username ต้องมีค่าไม่ตรงกับรหัสผ่าน' } } }, mem_pass: { validators: { notEmpty: { message: 'กรุณากรอก รหัสผ่าน ด้วย' }, stringLength: { min: 4, message: 'รหัสผ่านต้องไม่น้อยกว่า 4 ตัวอักษร' } } } } }); }); </script> </body> </html>
จากโค๊ดข้างบนเมื่อเรารันคำสั่งโดยพิมพ์ใบโปรแกรม Web Browser ของเราว่า http://localhost/mywb/login.php จะได้ผลลัพธุ์ดังนี้
รูปข้างบนคือแสดงผลบนหน้าจอของคอมพิวเตอร์นะครับ ส่วนรูปข้างล่างจะเป็นการแสดงผลในส่วนของ Smart Phone เช่น iPhone ครับ
สุดท้ายคือส่วนของการออกจากระบบ (Logout) ให้สร้างไฟล์ logout.php ตำแหน่งเดียวกับไฟล์ login.php และให้พิมพ์คำสั่งดังนี้
<?php session_start(); session_destroy();//ล้างค่าในตัวแปร session ทิ้งทั้งหมด header('Location:index.php'); ?>
แล้วพบกันในบทความหน้านะครับ ผมจะสอนทำในส่วนของการจัดการหมวดหมู่ Webboard ของแอดมิน และนำหมวดหมู่มาแสดงในหน้าโฮม (Home Page) กันครับ
ดาวน์โหลด http://bootstrapvalidator.com/ ยังงัยอ่ะครับ
ตอบลบเข้าไปกรอกข้อมูลใน Give it try เรียบร้อย กด Submit แล้วก็ไม่มีอะไรเกิดขึ้นเลยครับ
ลองไปโหลดตัวปลั๊กอินตรวจสอบความถูกต้องเปลี่ยนจาก http://bootstrapvalidator.com/ เป็นของเว็บนี้ http://www.java2s.com/Open-Source/Javascript_Free_Code/Bootstrap/Download_bootstrapvalidator_Free_Java_Code.htm ดูแทนนะครับ
ตอบลบอัพโหลดไฟล์ไม่ได้แก้ไขอย่างไรครับ
ตอบลบ