การทำ ฟอร์ม Login ติดต่อกับ mysql

การสร้างแบบฟอร์ม login รวมหลายเว็บ เพื่อศึกษา... เผื่อเว็บไหนรันไม่ผ่าน กร๊ากกกก

<body>
<form action=”login.php” method=”post” name=”login”>
username <input type=”text” name=”user” /><br />
password <input type=”password” name=”pass” /><br />
<input type=”submit”  value=”&nbsp; Log in &nbsp;”/>
</form>
<?
$name = $_POST['user'];
$pass = $_POST['pass'];
$host = “localhost”; //ชื่อโฮสต์
$user = “root”; //ชื่อผู้ใช้
$password = “****”; //รหัสผ่าน
$dbname = “test”; //ชื่อฐานข้อมูล
$tbname = “login”; //ชื่อตาราง
$con = mysql_connect ($host,$user,$password);
if(!$con) {
echo  (“not connect database”);
} else {
echo (“welcome”);
}
mysql_select_db($dbname);
$sql = “select * from $tbname where username=’$name’ and password=’$pass’ “; //เช็คค่าข้อมูลที่ส่งมาจากฟอร์ม
$result = mysql_db_query($dbname, $sql);
mysql_query(“SET NAMES tis620″);
$num_rows = mysql_num_rows($result);
if($num_rows==1){
echo “ยินดีต้นรับผู้ดูแลระบบ”;
}else {
echo “<BR><FONT COLOR=red>ข้อมูลที่คุณกรอกไม่ถูกต้อง กรุณา Login ใหม่อีกครั้ง</FONT>”;
}
?>
</body>

/*จาก http://teerapuch.wordpress.com/2010/03/23/%E0%B8%AA%E0%B8%A3%E0%B9%89%E0%B8%B2%E0%B8%87%E0%B8%A3%E0%B8%B0%E0%B8%9A%E0%B8%9A-login-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-phpmysql/  */


    การทำระบบ Login โดยใช้ฐานข้อมูล มีหลายคนถามกันเข้ามา โดยวิธีทำนั้นจะมีหลายแบบด้วยกันแล้วแต่ว่าเราจะเขียน แต่ในที่นี้ผมจะเขียนในส่วนที่สามารถนำไปประยุกต์ต่อกันได้ ลองมาดูขั้นตอนการทำ
ขั้นตอนกาทำ
1. ให้เราสร้าง Database ขั้นมาก่อนเพื่อใช้ในการเก็บค่า user และ pass
# phpMyAdmin MySQL-Dump
# http://phpwizard.net/phpMyAdmin/
#
# Host: localhost Database : test
# --------------------------------------------------------
#
# Table structure for table 'user_login'
#

CREATE TABLE user_login (
id int(11) NOT NULL auto_increment,
user_log char(15) NOT NULL,
pass_log char(15) NOT NULL,
PRIMARY KEY (id)
);

#
# Dumping data for table 'user_login'
#

INSERT INTO user_login VALUES ( '1', 'guest', '1234');
2. หลังจากนั้นให้เราสร้างฟอร์ม Login ในที่นี้ผมใช้ชื่อไฟล์ว่า form_login.php (* ถ้าฟอร์มที่คุณสร้างนั้นไม่ใช้ภาษา php สามารถ save เป็นไฟล์ HTML ได้)
ใครงงดูโค้ดที่นี่ form_login.php
<?
session_start();
?>
<html>
<head>
<title>webthaidd.com</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
</head>
<body bgcolor="#FFFFFF">
<form name="form1" method="post" action="check.php">
User :
<input type="text" name="username_log"> //ชื่อตัวแปลที่ใช้ในการส่งค่า
<br>
Pass :
<input type="password" name="password_log"> //ชื่อตัวแปลที่ใช้ในการส่งค่า
<? echo $code_error;?>
<br>
<input type="submit" name="Submit" value="Login">
</form>
</body>
</html>

3. ทำการเขียนโค้ดที่ไฟล์ check.php เพื่อตรวจสอบการ Login ของผู้ใช้
<?
session_start();
$hostname = "localhost"; //ชื่อโฮสต์
$user = ""; //ชื่อผู้ใช้
$password = ""; //รหัสผ่าน
$dbname = "test"; //ชื่อฐานข้อมูล
$tblname = "user_login"; //ชื่อตาราง
// เริ่มติดต่อฐานข้อมูล
mysql_connect($hostname, $user, $password) or die("ติดต่อฐานข้อมูลไม่ได้");
// เลือกฐานข้อมูล
mysql_select_db($dbname) or die("เลือกฐานข้อมูลไม่ได้");

// คำสั่ง SQL และสั่งให้ทำงาน
$sql = "select * from $tblname where user_log='$username_log' and pass_log='$password_log'"; //เช็คค่าข้อมูลที่ส่งมาจากฟอร์ม
$dbquery = mysql_db_query($dbname, $sql);

// หาจำนวนเรกคอร์ดข้อมูล
$num_rows = mysql_num_rows($dbquery);
if($num_rows==1){
header("location:http://www.webthaidd.com"); //ไปไปตามหน้าที่คุณต้องการ
}else {
$code_error="<BR><FONT COLOR=\"red\">ข้อมูลที่คุณกรอกไม่ถูกต้อง กรุณา Login ใหม่อีกครั้ง</FONT>";
session_register("code_error");
header("location: form_login.php"); //ไม่ถูกต้องให้กับไปหน้าเดิม
}
?>


4. หลังจากนั้นลองทดสอบดู
user=guest
pass=1234


- ถ้าถูกต้องจะเข้าไปที่เว็บ webthaidd หรือหน้าที่เรากำหนดนั้นๆ
- ถ้าผิดจะแจ้ง error ตามข้อความที่เรากำหนด


/*จากเว็บ http://www.webthaidd.com/php/webthaidd_article_73_.html*/


PHP MySQL กับ Login Form
เริ่มต้นด้วยการสร้างตารางชื่อ member
CREATE TABLE `member` (
`UserID` int(3) unsigned zerofill NOT NULL auto_increment,
`Username` varchar(20) NOT NULL,
`Password` varchar(20) NOT NULL,
`Name` varchar(100) NOT NULL,
`Status` enum('ADMIN','USER') NOT NULL default 'USER',
PRIMARY KEY (`UserID`),
UNIQUE KEY `Username` (`Username`)
) ENGINE=MyISAM AUTO_INCREMENT=3 ;

--
-- Dumping data for table `member`
--

INSERT INTO `member` VALUES (001, 'win', 'win123', 'Weerachai Nukitram', 'USER');
INSERT INTO `member` VALUES (002, 'chai', 'chai123', 'Surachai Sirisart', 'ADMIN');


PHP MySQL Member Login

เกี่ยวกับตารางจะประกอบด้วย UserID , Username , Password , Name , Status โดยช่อง Status เป็นตัวประบุว่าเป็น ADMIN หรือว่า User

ตังอย่าง Code ทั้งหมด

login.php เป็น Form Login
01.<html>
02.<head>
03.<title>ThaiCreate.Com Tutorials</title>
04.</head>
05.<body>
06.<form name="form1" method="post" action="check_login.php">
07.  Login<br>
08.  <table border="1" style="width: 300px">
09.    <tbody>
10.      <tr>
11.        <td> &nbsp;Username</td>
12.        <td>
13.          <input name="txtUsername" type="text" id="txtUsername">
14.        </td>
15.      </tr>
16.      <tr>
17.        <td> &nbsp;Password</td>
18.        <td><input name="txtPassword" type="password" id="txtPassword">
19.        </td>
20.      </tr>
21.    </tbody>
22.  </table>
23.  <br>
24.  <input type="submit" name="Submit" value="Login">
25.</form>
26.</body>
27.</html>


check_login.php เป็น Check Login
01.<?
02.    session_start();
03.    mysql_connect("localhost","root","root");
04.    mysql_select_db("mydatabase");
05.    $strSQL = "SELECT * FROM member WHERE Username = '".trim($_POST['txtUsername'])."'
06.    and Password = '".trim($_POST['txtPassword'])."'";
07.    $objQuery = mysql_query($strSQL);
08.    $objResult = mysql_fetch_array($objQuery);
09.    if(!$objResult)
10.    {
11.            echo "Username and Password Incorrect!";
12.    }
13.    else
14.    {
15.            $_SESSION["UserID"] = $objResult["UserID"];
16.            $_SESSION["Status"] = $objResult["Status"];
17. 
18.            session_write_close();
19.             
20.            if($objResult["Status"] == "ADMIN")
21.            {
22.                header("location:admin_page.php");
23.            }
24.            else
25.            {
26.                header("location:user_page.php");
27.            }
28.    }
29.    mysql_close();
30.?>


PHP MySQL Member Login

ไฟล์นี้จะทำการตรวจสอบ Username และ Password และสถานะของสมาชิกว่าเป็น Admin หรือว่า User ถ้า Admin จะกระโดดไปหน้า admin_page.php และถ้าเป็น User จะกระโดดไปหน้า user_page.php

admin_page.php เป็นหน้าหลักของ Admin
01.<?
02.    session_start();
03.    if($_SESSION['UserID'] == "")
04.    {
05.        echo "Please Login!";
06.        exit();
07.    }
08. 
09.    if($_SESSION['Status'] != "ADMIN")
10.    {
11.        echo "This page for Admin only!";
12.        exit();
13.    }  
14.     
15.    mysql_connect("localhost","root","root");
16.    mysql_select_db("mydatabase");
17.    $strSQL = "SELECT * FROM member WHERE UserID = '".$_SESSION['UserID']."' ";
18.    $objQuery = mysql_query($strSQL);
19.    $objResult = mysql_fetch_array($objQuery);
20.?>
21.<html>
22.<head>
23.<title>ThaiCreate.Com Tutorials</title>
24.</head>
25.<body>
26.  Welcome to Admin Page! <br>
27.  <table border="1" style="width: 300px">
28.    <tbody>
29.      <tr>
30.        <td width="87"> &nbsp;Username</td>
31.        <td width="197"><?=$objResult["Username"];?>
32.        </td>
33.      </tr>
34.      <tr>
35.        <td> &nbsp;Name</td>
36.        <td><?=$objResult["Name"];?></td>
37.      </tr>
38.    </tbody>
39.  </table>
40.  <br>
41.  <a href="edit_profile.php">Edit</a><br>
42.  <br>
43.  <a href="logout.php">Logout</a>
44.</body>
45.</html>


PHP MySQL Member Login

หน้าหลักของ Admin จะมีการตรวจสอบ Session ว่าผ่านการ Login มาหรือไม่ และตรวจสอบสถานะด้วยว่าเป็น Admin หรือไม่


user_page.php เป็นหน้าหลักของ User
01.<?
02.    session_start();
03.    if($_SESSION['UserID'] == "")
04.    {
05.        echo "Please Login!";
06.        exit();
07.    }
08. 
09.    if($_SESSION['Status'] != "USER")
10.    {
11.        echo "This page for User only!";
12.        exit();
13.    }  
14.     
15.    mysql_connect("localhost","root","root");
16.    mysql_select_db("mydatabase");
17.    $strSQL = "SELECT * FROM member WHERE UserID = '".$_SESSION['UserID']."' ";
18.    $objQuery = mysql_query($strSQL);
19.    $objResult = mysql_fetch_array($objQuery);
20.?>
21.<html>
22.<head>
23.<title>ThaiCreate.Com Tutorials</title>
24.</head>
25.<body>
26.  Welcome to User Page! <br>
27.  <table border="1" style="width: 300px">
28.    <tbody>
29.      <tr>
30.        <td width="87"> &nbsp;Username</td>
31.        <td width="197"><?=$objResult["Username"];?>
32.        </td>
33.      </tr>
34.      <tr>
35.        <td> &nbsp;Name</td>
36.        <td><?=$objResult["Name"];?></td>
37.      </tr>
38.    </tbody>
39.  </table>
40.  <br>
41.  <a href="edit_profile.php">Edit</a><br>
42.  <br>
43.  <a href="logout.php">Logout</a>
44.</body>
45.</html>


PHP MySQL Member Login

หน้าหลักของ User จะมีการตรวจสอบ Session ว่าผ่านการ Login มาหรือไม่ และตรวจสอบสถานะด้วยว่าเป็น User หรือไม่

edit_profile.php เป็นหน้าสำหนับแก้ไขข้อมูชส่วนตัวของ User และ Admin
01.<?
02.    session_start();
03.    if($_SESSION['UserID'] == "")
04.    {
05.        echo "Please Login!";
06.        exit();
07.    }
08.     
09.    mysql_connect("localhost","root","root");
10.    mysql_select_db("mydatabase");
11.    $strSQL = "SELECT * FROM member WHERE UserID = '".$_SESSION['UserID']."' ";
12.    $objQuery = mysql_query($strSQL);
13.    $objResult = mysql_fetch_array($objQuery);
14.?>
15.<html>
16.<head>
17.<title>ThaiCreate.Com Tutorials</title>
18.<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
19.<body>
20.<form name="form1" method="post" action="save_profile.php">
21.  Edit Profile! <br>
22.  <table width="400" border="1" style="width: 400px">
23.    <tbody>
24.      <tr>
25.        <td width="125"> &nbsp;UserID</td>
26.        <td width="180">
27.          <?=$objResult["UserID"];?>
28.        </td>
29.      </tr>
30.      <tr>
31.        <td> &nbsp;Username</td>
32.        <td>
33.          <?=$objResult["Username"];?>
34.        </td>
35.      </tr>
36.      <tr>
37.        <td> &nbsp;Password</td>
38.        <td><input name="txtPassword" type="password" id="txtPassword" value="<?=$objResult["Password"];?>">
39.        </td>
40.      </tr>
41.      <tr>
42.        <td> &nbsp;Confirm Password</td>
43.        <td><input name="txtConPassword" type="password" id="txtConPassword" value="<?=$objResult["Password"];?>">
44.        </td>
45.      </tr>
46.      <tr>
47.        <td>&nbsp;Name</td>
48.        <td><input name="txtName" type="text" id="txtName" value="<?=$objResult["Name"];?>"></td>
49.      </tr>
50.      <tr>
51.        <td> &nbsp;Status</td>
52.        <td>
53.          <?=$objResult["Status"];?>
54.        </td>
55.      </tr>
56.    </tbody>
57.  </table>
58.  <br>
59.  <input type="submit" name="Submit" value="Save">
60.</form>
61.</body>
62.</html>



PHP MySQL Member Login


save_profile.php เป็นหน้าสำหนับบันทึกแก้ไขข้อมูลส่วนตัวของ User และ Admin
01.<?
02.    session_start();
03.    if($_SESSION['UserID'] == "")
04.    {
05.        echo "Please Login!";
06.        exit();
07.    }
08.    mysql_connect("localhost","root","root");
09.    mysql_select_db("mydatabase");
10.     
11.    if($_POST["txtPassword"] != $_POST["txtConPassword"])
12.    {
13.        echo "Password not Match!";
14.        exit();
15.    }
16.    $strSQL = "UPDATE member SET Username = '".trim($_POST['txtPassword'])."'
17.    ,Name = '".trim($_POST['txtName'])."' WHERE UserID = '".$_SESSION["UserID"]."' ";
18.    $objQuery = mysql_query($strSQL);
19.     
20.    echo "Save Completed!<br>";      
21.     
22.    if($_SESSION["Status"] == "ADMIN")
23.    {
24.        echo "<br> Go to <a href='admin_page.php'>Admin page</a>";
25.    }
26.    else
27.    {
28.        echo "<br> Go to <a href='user_page.php'>User page</a>";
29.    }
30.     
31.    mysql_close();
32.?>


PHP MySQL Member Login

สำหรับหน้านี้เมื่อทีการบันทึกเสร็จสิ้นแล้ว โปรแกรมจะตรวจสอบว่าเป็น User หรือว่า Admin ถ้า Admin จะชี้ลิ้งค์ไปหน้า admin_page.php และถ้าเป็น User จะชี้ลิ้งค์ไปหน้า user_page.php


logout.php เป็นหน้า Logout หรือ Clear Session
1.<?
2.    session_start();
3.    session_destroy();
4.    header("location:login.php");
5.?>


/* จากเว็บ http://www.thaicreate.com/community/php-mysql-login-form-check-username-password.html*/



ขอบคุณทุกเว็บ...