Long Live The King
ข้าพเจ้าไม่ได้มีพรสวรรค์พิเศษอะไร ข้าพเจ้าเพียงแต่มีความกระหายใคร่รู้อยู่เสมอ ทุ่มเทให้กับสิ่งที่อยากรู้ พากเพียรอย่างทรหด และสำรวจวิจารณ์ความรู้ของตัวเองเป็นประจำ ปัจจัยเหล่านี้คือที่มาของแนวคิดต่างๆ ของข้าพเจ้า .... อัลเบิร์ต ไอน์สไตน์

วันศุกร์ที่ 25 ตุลาคม พ.ศ. 2556

สมัครสมาชิก และ Login แบบ OOP PHP



จากบทความก่อนผมก็จบทิ้งท้ายไว้ด้วยประโยคว่า "เอาไว้เจอกันในบทควาามหน้าครับ วิธีการ Login แบบ OOP PHP" ทีนี้ผมก็มาคิดว่าทำ Login อย่างเดียวมันน้อยไปหรือเปล่า ก็เลยขอเพิ่มวิธีลงทะเบียนสมัครสมาชิกด้วยก็แล้วกัน เพราะว่าผมคงจะขอจบบทความ ที่เกี่ยวกับ OOP PHP ไว้เพียงแค่บทนี้ คิดว่านะครับผม.. บทความนี้เป็นเพียงวิธีการอย่างง่ายเท่านั้นนะครับ เพราะผมก็ทำอย่างยากไม่เป็นเสียด้วยซิ อิอิ... LET'S GO->

SQL สำหรับทดสอบ
CREATE TABLE `members` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL DEFAULT '',
  `password` varchar(255) NOT NULL DEFAULT '',
  `emailaddress` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`user_id`)
);
ไฟล์ที่ต้องมี database.php, MySqlConn.php, ซึ่งเป็นไฟล์ที่ยกมาจากบทความก่อนหน้านี้ที่เกี่ยวกับ OOP
ก่อนที่จะเริ่มผมก็ต้องขอ อัพเดท function where(); ก่อนถามว่าทำไม ก็เพราะว่าฟังก์ชั่นเดิมไม่สามารถใช้
Logical Operators ได้คือ and กับ or  ดังนั้นผมก็จะอัพเดทเสียใหม่ดังนี้

ไฟล์ MySqlConn.php
public function where($data, $opera='')
    {
        if(!empty($data)){
            $keys = array_keys($data);
            $where = "WHERE ";
            for($i = 0; $i < count($data); $i++)  
           {  
                if(is_string($data[$keys[$i]])){  
                    $where .= $keys[$i]."='".$data[$keys[$i]]."'";  
                    if($i != count($data)-1){ $where .= " $opera ";}  
                }                
               
            }
            
            $this->_where = $where;
        }
    }
จากโค้ดด้านบน จะรับ parameter มาสองตัว ตัวแรกเป็นแบบ array ส่วนตัวที่สองเป็น Operators พอตอนใช้งานเราก็
เรียกแบบนี้
$data = array(
'username' => $_POST['username'],
'password' => $_POST['password'],
);

$Db->where($data, 'or');
ok ครับเรามาเริ่มวิธีสมัครสมาชิกแบบ OOP ได้แล้วซึ่งขอบอกว่าไม่ยากเลยครับ

เราจะสร้าง form กันก่อนแแบบนี้
<div id="signup">
<form name="form1" method="post" action="index.php">
    name: <input type="text" name="username"/><br/>
    pass: <input type="password" name="password"/><br/>
    pass confirm: <input type="password" name="conpassword"/><br/>
    email: <input type="text" name="email"/><br/>
    <input type="submit" name="signup" value="Submit"/>
</form>
</div>  
หลังจากนั้นเราก็จะรับค่า username กับ email ไปเช็คกับฐานข้อมูล ว่า email หรือ username นี้มีการใช้งานไปแล้วหรือยัง
แบบนี้
เริ่มด้วยการนำเข้าไฟล์ MySqlConn.php
include_once('MySqlConn.php');
ตามด้วยการสร้างอ็อบเจกต์
$Db = new MySqlConn;

if (isset($_POST['signup'])) {

$data = array(
    'username' => $_POST['username'],
    'emailaddress' => $_POST['email'],
);

$Db->where($data, 'or');
$num = $Db->num_rows('members');
if ($num > 0) {
   echo '<font color="red">Sorry Username หรือ Email นี้ได้ถูกใช้งานไปแล้ว</font>';
}
else{
   $data = array(
   'username' => $_POST['username'],
   'password' => $_POST['password'],
   'emailaddress' => $_POST['email'],
   );

   $Db->insert('members', $data);

}

}
จากโค้ดด้านบนเราส่ง username กับ email ไปเช็คว่ามีการใช้งานแล้วหรือยังด้วยฟังก์ชั่นสองฟังก์ชั่นคือ
$Db->where($data, 'or');
$num = $Db->num_rows('members');//นับแถว
ถ้า $num มากกว่า 0 ก็คือ 1 ขึ้นไปแสดงว่าถูกใช้งานแล้ว แต่ถ้าเป็น 0 ก็ให้ insert ข้อมูลที่ต้องการด้วยฟังก์ชั่น
$Db->insert('members', $data);
เพียงแค่นี้เราก็ได้ระบบการสมัครสมาชิกแล้ว ที่เหลือเราก็เพิ่มเติมการ validate ในรูปแบบต่างตามต้องการ ตัวอย่าง

ไฟ register.php
<h1>Signup Here</h1>
<?php
include_once('MySqlConn.php');
$Db = new MySqlConn;

if (isset($_POST['signup'])) {

$data = array(
    'username' => $_POST['username'],
    'emailaddress' => $_POST['email'],
);
$Db->where($data, 'or');
$num = $Db->num_rows('members');
if ($num > 0) {
    echo '<font color="red">Sorry Username หรือ Email นี้ได้ถูกใช้งานไปแล้ว</font>';
}
else {
    $data = array(
        'username' => $_POST['username'],
        'password' => $_POST['password'],
        'emailaddress' => $_POST['email'],
    );
    if(!empty($data['username']) && !empty($data['password'])
     && !empty($data['emailaddress'])  ){

    if($_POST['password'] == $_POST['conpassword']){    
    $Db->insert('members', $data);
    echo "<font color='blue'>Success ขอบคุณที่ท่านได้สมัครสมาชิกกับเรา</font>";
    }
    else{
        echo '<font color="red">การยืนยัน Password ไม่ตรงกัน</font>';
    }

    }
    else{
        echo '<font color="red">กรุณากรอกข้อมูลให้ครบ</font>';
    }
}
}
?>
เสร็จแล้วสำหรับการสมัครสมาชิก ต่อไปก็ Login ต่อเลยครับ อันนี้ง่ายมากๆเลยครับ เพราะเราก็อปเอาโค้ดวิธีสมัครสมาชิก
มาใช้นั่นเอง แต่คราวนี้เราใช้ operator เป็น and แบบนี้ $Db->where($data, 'and');
สร้าง form กันก่อน

ไฟ login.php
<h1>Login Here</h1>
<div id="login">
<form name="form1" method="post" action="index.php">
    name: <input type="text" name="username"/><br/>
    pass: <input type="password" name="password"/><br/>
    <input type="submit" name="login" value="Submit"/>
</form>
</div>  
จากนั้นสร้างอ็อบเจ็กต์
<?php
$DbLogin = new MySqlConn;
if (isset($_POST['login'])) {

$data = array(
    'username' => $_POST['username'],
    'password' => $_POST['password'],
);

$DbLogin->where($data, 'and');
$num = $DbLogin->num_rows('members');
if ($num > 0) {
    echo '<font color="blue">ไชโย Login สำเร็จแล้ว....</font>';
}
else {
    echo 'อ้าว!.. Username หรือ Password ไม่ถูกต้องนะ';
}

}
?>
เพียงเท่านี้เราก็ได้วิธีการ Signup และ Login แบบ OOP ไว้ใช้งานแล้ว ที่เหลือท่านก็ลองไปปรับปรุง พัฒนากัน
ต่อไปดูนะครับ แล้วอย่าลืมนำมา บอกเล่าเก้าสิบ เฮ้ย!... บอกเล่าสู่กันฟังบ้างนะครับ

สำหรับบทความที่เกี่ยวกับ OOP PHP Object-oriented programming ก็คงจะจบไว้ก่อนเพียงเท่านี้....
ผิดพลาดอย่างไรก็ต้องขอ อภัย ด้วยครับ......



2 ความคิดเห็น:

  1. คือว่า ไฟ MySqlConn.php ผมก็อป ไปใส่ ไว้ใน ดรีม เเร้วมันเป็นตัว สีดำหมดเลย อะครับ
    ทำไงดี

    ตอบลบ
  2. ความคิดเห็นนี้ถูกผู้เขียนลบ

    ตอบลบ

© Bookneo, AllRightsReserved.

ขับเคลื่อนโดย Blogger Designed by Nikhorn Thongchuay