ข้ามไปยังเนื้อหาหลัก
itOffside
Onmobile อ่าน 5 นาที 28 ความเห็น

PHP Workshop ระบบสมาชิก แบบละเอียด ตอนที่ 2

PHP
PHP Workshop ระบบสมาชิก แบบละเอียด ตอนที่ 2

ในตอนที่ 1 นั้นเป็นการสร้างฐานข้อมูลเพื่อใช้ในระบบสมาชิก และในบทความนี้(ตอนที่2)เป็นการเขียนโปรแกรมโดยใช้ Netbeans IDE โดยเริ่มจากการสร้างโปรเจ็คและเขียนไปทีละส่วนงาน เพื่อให้ผู้อ่านทุกคนสามารถเข้าใจได้ง่าย ในบทความนี้จะเขียนอธิบายเกี่ยวกับการเข้าสู่ระบบ เริ่มจากการสร้างหน้าจอและการเขียนโค๊ด และท้ายบทความจะเขียนขั้นตอนการทำงาน

- เปิด Netbeans IDE ขึ้นมาแล้วสร้าง Project ชื่อว่า "member" โดยขั้นตอนการสร้าง Project สามารอ่านได้จากบทความนี้ คลิกที่นี้เพื่ออ่าน
php-workshop-member-06

- สร้างไฟล์ signin.php (ไฟล์หน้าจอเข้าสู่ระบบ)? โดยให้คุณคลิกขวาที่ Soruce files -> New -> PHP FIle... แล้วตั้งชื่อไฟล์ signin.php และนำ Code ด้านล่างไปใส่ในไฟล์

<?php
session_start();
$_SESSION['frmAction'] = md5('itoffside.com' . rand(1,999999));
?>
<html>
<head>
<meta charset="UTF-8">
<title>เข้าสู่ระบบสมาชิก</title>
</head>
<body>
<form name="signin" action="signin-action.php" method="POST">
<table border="0">
<thead>
<tr>
<th></th>
<th>เข้าสู่ระบบ</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: right; width: 200px;">Username :</td>
<td><input type="text" name="username" value="" size="25" /></td>
</tr>
<tr>
<td style="text-align: right;">Password :</td>
<td><input type="password" name="password" value="" size="20" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="ตกลง" name="submit" /></td>
</tr>
</tbody>
</table>
<input type="hidden" name="frmAction" value="<?php echo $_SESSION['frmAction']; ?>" />
</form>
</body>
</html>

- หลังจากสร้างหน้าจอเข้าสู่ระบบแล้วให้สร้างไฟล์ชื่อ "config.php" แล้วนำ Code ไปวางใส่ในไฟล์
อธิบาย code : ไฟล์ที่ใช้ในการเชื่อมต่อฐานข้อมูล mysql และสามารถเปลี่ยนค่าตัวแปรรหัสผ่านเข้า SQL? หรือชื่อฐานข้อมูลที่ต้องการเชื่อมต่อ

<?php
/*
* set var
*/
$cfHost = "localhost";
$cfUser = "root";
$cfPassword = "";
$cfDatabase = "mydata";

/*
* connection mysql
*/
$meConnect = mysql_connect($cfHost,$cfUser,$cfPassword) or die("Error conncetion mysql...");
$meDatabase = mysql_select_db($cfDatabase);
mysql_query("SET NAMES UTF8");
?>

- แทรกแถวข้อมูลใส่ตาราง member ซึ่งในบทความนี้จะแทรก user ชื่อ admin และรหัสผ่าน 1234 ลงไป โดยให้ผู้อ่านคัดลอกแล้วนำไป run ที่ PHPMYAdmin

INSERT INTO `mydata`.`member` (`id`, `username`, `password`, `firstname`, `lastname`, `sex`, `phone`, `email`, `active`, `create_date`, `modified_date`) VALUES (NULL, 'admin', '81dc9bdb52d04dc20036dbd8313ed055', 'ขจร', 'ปรามาร', '1', '0811448147', 'it@itoffside.com', '2', '2014-02-13 02:11:04', '');

- เมื่อคุณสร้างแถวข้อมูลเสร็จแล้วต่อจากนั้นคุณก็สร้างไฟล์ "signin-action.php" แล้วนำ code ด้านล่างไปใส่ในไฟล์

<?php

session_start();
echo "<meta charset=\"UTF-8\">";
if (isset($_SESSION['frmAction']) == isset($_POST['frmAction'])) {

/*
* include file
*/
include 'config.php';

/*
* set var
*/
$username = mysql_real_escape_string(trim($_POST['username']));
$password = mysql_real_escape_string(trim(md5($_POST['password'])));

/*
* unset var
*/
unset($_SESSION['frmAction']);

/*
* logical programming&Database
*/
$meSQL = "SELECT id,username,active FROM member WHERE username='{$username}' AND password='{$password}' AND active != 0";
$meQuery = mysql_query($meSQL);
$meCount = mysql_num_rows($meQuery);
if ($meCount == 1) {
$meResult = mysql_fetch_assoc($meQuery);
$_SESSION['id'] = $meResult['id'];
$_SESSION['username'] = $meResult['username'];
$_SESSION['active'] = $meResult['active'];
$_SESSION['checkSign'] = 'itoffside';
echo "เข้าสู่ระบบสำเร็จ";
echo "<br/>";
echo "<a href='mainpage.php'>ไปหน้าจัดการข้อมูล</a>";
} else {
echo "ไม่สามารถเข้าสู่ระบบได้เนื่องจากรหัสผิดพลาด";
echo "<br/>";
echo "<a href='signin.php'>กลับไปหน้าเดิม</a>";
}
} else {
echo "มีข้อผิดพลาดระหว่าง Session!";
echo "<br/>";
echo "<a href='signin.php'>กลับไปหน้าเดิม</a>";
}
?>

- ไฟล์ config.php เป็นไฟล์เชื่อมต่อฐานข้อมูลจะถูกเรียกใช้เมื่อมีการเชื่อมต่อฐานข้อมูล โดยส่วนมากมักจะเรียกใช้แบบ include,require
- ไฟล์ signin.php หน้าจอการเข้าสู่ระบบ โดยระบบผู้ใช้และผู้ดูแลสามารถใช้งานในหน้าจอเดียวกันได้
- ไฟล์ signin-action ทำหน้าที่ตรวจสอบข้อมูลจากการส่งค่า POST มาจากไฟล์ signin.php หากมีข้อมูลถูกต้องก็สามารถเข้าถึงและจัดการข้อมูลได้

อ่านต่อ บทความต่อไปของ PHP Workshop ระบบสมาชิก แบบละเอียด ตอนที่ 3

Onmobile

โปรแกรมเมอร์

ความเห็น (28)

  • acharat
    ผม copy Code ของคุณไปลองหัดทำ แต่มีปัญหาครับ ผมไม่สามารถ Login เข้าได้ ขึ้นรหัสไม่ถุกต้องตลอด ทั้งๆที่ เช็คดูใน phpMyAdmin แล้วนะ มันก็ถูก แต่เข้าไม่ได้ งงเลยครับ ยังไง ติดต่อผมมาทาง facebook ก็ได้ครับหลังจากอ่าน ข้อความนี้แล้ว ที่ https://www.facebook.com/e.charat.aa
    • Onmobile ผู้เขียน
      update ฐานข้อมูลตรงฟิล์ดรหัสผ่านใหม่เป็น 81dc9bdb52d04dc20036dbd8313ed055 แล้วแก้ไขโค๊ดในไฟล์ signin-action.php บรรทัด 16 เป็น $password = mysql_real_escape_string(trim(md5($_POST['password'])));
      • thex
        ยังไงหรอครับ update ฐานข้อมูลตรงฟิล์ดรหัสผ่านใหม่เป็น 81dc9bdb52d04dc20036dbd8313ed055
        • Onmobile ผู้เขียน
          ใช่ครับ
  • Art box
    แก้แล้วยังไงก็ login ไม่ผ่าน T..T
    • Onmobile ผู้เขียน
      ถ่ายรูปส่งมาที่เมล์และก็โค๊ดให้ผม ดูหน่อยครับ
      • Art box
        ตอนนี้ login ได้แล้วครับ ตรงส่วน &gt;&gt; name="usename" ตก r ไปตัวนึง แต่ตอนนี้ มีปัญหาใหญ่กว่าเลยครับ พออัพเดทข้อมูลแล้วกดบันทึก มันขึ้นว่า มีปัญหาการบันทึกข้อมูล กรุณากลับไปบันทึกใหม่ แล้วพอสร้างรายชื่อใหม่ มันก็ขึ้นว่า มีปัญหาการบันทึกข้อมูล กรุณากลับไปบันทึกใหม่ เหมือนกันครับ
  • Art box
    ตอนนี้สามารถ แก้ไข เพิ่มผู้ใช้ ได้แล้วนะครับ - -* คำว่า firstname ใน php พอไปดูในดาต้าเบส เขียนเป็น fristname มันเลยบันทึกไม่ได้ แล้วมีวิธีทำให้ password ใน ดาต้าเบสเป็นเลขธรรมดาที่ไม่ต้องเข้ารหัสไหมครับ และอีกอย่าง พอสร้างผู้ใช้ใหม่ มันใช้ชื่อตั้ง login ไม่ผ่านอ่ะครับ
    • Art box
      ได้ละครับ ขอบคุณครับ
      • Onmobile ผู้เขียน
        ครับผม
  • monkeyghost
    update ฐานข้อมูลตรงฟิล์ดรหัสผ่านใหม่เป็น 81dc9bdb52d04dc20036dbd8313ed055 แล้วแก้ไขโค๊ดในไฟล์ signin-action.php บรรทัด 16 เป็น $password = mysql_real_escape_string(trim(md5($_POST[?password?]))); แก้ ยังไง อ่ะครับพอดีผม งง ให้ดรีมแก้ได้ไหมอ่ะครับ
    • Onmobile ผู้เขียน
      แก้ไขโค๊ดในไฟล์ signin-action.php แก้ไขข้อมูลใน phpmyadmin
  • CS17
    พอผม login เข้าสู่ระบบ ในส่วนของหน้า signin-action.php ไม่ขึ้นข้อความอะไรมาเลยครับ ภายในเพจขึ้นหน้าขาวๆ โล่งๆ ไม่สามารถทำในส่วนต่อไปได้ ลองเช็คทั้ง PHPmyAdmin แล้ว ก็ตรงตามโค้ดทุกอย่าง ขอคำแนะนำด้วยครับ
    • Onmobile ผู้เขียน
      การ connect database/table ลองตรวจสอบครับ
  • ทดลองเล่น
    ล็อกอินไม่ได้อ่าฮ ะ ทำตามวิธีแล้วว
    • Onmobile ผู้เขียน
      update ฐานข้อมูลตรงฟิล์ดรหัสผ่านใหม่เป็น 81dc9bdb52d04dc20036dbd8313ed055 แล้วแก้ไขโค๊ดในไฟล์ signin-action.php บรรทัด 16 เป็น $password = mysql_real_escape_string(trim(md5($_POST[‘password’])));
  • เอ็ม
    พี่คัรบ โค๊ด นี่เอาไป แทรกตรงไหน สร้าง ฟิล์ใหม่เหรอครับ INSERT INTO `mydata`.`member` (`id`, `username`, `password`, `firstname`, `lastname`, `sex`, `phone`, `email`, `active`, `create_date`, `modified_date`) VALUES (NULL, 'admin', '81dc9bdb52d04dc20036dbd8313ed055', 'ขจร', 'ปรามาร', '1', '0811448147', 'it@itoffside.com', '2', '2014-02-13 02:11:04', ''); งง นิดๆๆๆ พี่มี facebook ไหมครับ จะได้สอบถาม
    • Onmobile ผู้เขียน
      แทรกใน table mydata ครับ
  • tor
    ผม Login ไม่ได้ครับ ขึ้นว่า ไม่สามารถเข้าสู่ระบบได้เนื่องจากรหัสผิดพลาด
    • Onmobile ผู้เขียน
      update ฐานข้อมูลตรงฟิล์ดรหัสผ่านใหม่เป็น 81dc9bdb52d04dc20036dbd8313ed055 แล้วแก้ไขโค๊ดในไฟล์ signin-action.php บรรทัด 16 เป็น $password = mysql_real_escape_string(trim(md5($_POST[‘password’])));
  • darunee
    md5('itoffside.com' . rand(1,999999)) ตรงนี้ถ้าจะเปลี่ยนนี่เปลี่ยนเป็นได้ไหมคะ
  • เจมส์
    หน้า manager_user-add.php จาก code นี้... เพิ่มผู้ใช้งานใหม่ เพิ่มผู้ใช้งาน <a href="mainpage.php" rel="nofollow">หน้าแรก</a> <a href="manager_user.php" rel="nofollow">จัดการผู้ใช้งาน</a> <a href="update_profile.php" rel="nofollow">แก้ไขข้อมูลส่วนตัว</a> <a href="signout.php" rel="nofollow">ออกจากระบบ</a> ข้อมูลส่วนตัว ชื่อผู้ใช้งาน รหัสผ่าน ชื่อจริง นามสกุลจริง เพศ ชาย | หญิง เบอร์โทรศัพท์ อีเมล์ ระดับผู้ใช้งาน ผู้ใช้ทั่วไป | ผู้ดูแลระบบ &nbsp; &lt;input type=&quot;hidden&quot; name=&quot;frmAction&quot; value=&quot;" /&gt; &lt;?php } else { echo &quot;"; echo "คุณไม่ได้เข้าสู่ระบบ กรุณาเข้าสู่ระบบก่อน!"; echo ""; echo "<a href='signin.php' rel="nofollow">คลิกเพื่อเข้าสู่ระบบ</a>"; } อยากทราบว่าจะทำเป็นสมัครสมาชิกหน้าเว็ได้เลยโดยไม่ต้องเข้าสู่ระบบ แต่เวลาเข้าสู่ระบบให้แยกระบบแบบผadmin กับ user ยังไม่ครัับ
  • ponrchanok
    พอเพิ่มผู้ดูแลระบบเข้าไป มันLogin ไม่ได้ค่ะ แต่ Login ด้วp admin 1234 ได้อย่างเดียวค่ะ มือให้หัดทำค่ะ
    • Onmobile ผู้เขียน
      ต้องเพิ่ม user ไปครับ password เข้ารหัส md5 ไว้ด้วย
  • Prajak
    รบกวนสอบถามครับ เข้าระบบแล้วขึ้นข้อความแบบนี้ Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\xampp\htdocs\mydata\config.php:13 Stack trace: #0 C:\xampp\htdocs\mydata\signin-action.php(10): include() #1 {main} thrown in C:\xampp\htdocs\mydata\config.php on line 13
    • Onmobile ผู้เขียน
      เปิด extension ของ mysql ครับ ที่ php.ini
  • nanew
    ขึ้น ไม่สามารถเข้าสู่ระบบได้เนื่องจากรหัสผิดพลาด ทำยังไงคะ แก้ update ฐานข้อมูลตรงฟิล์ดรหัสผ่านใหม่เป็น 81dc9bdb52d04dc20036dbd8313ed055 แล้วแก้ไขโค๊ดในไฟล์ signin-action.php บรรทัด 16 เป็น $password = mysql_real_escape_string(trim(md5($_POST[‘password’]))); ตามที่บอกแล้วอะคะ ช่วยตอบหน่อยนะคะ
    • Onmobile ผู้เขียน
      ลอง <?php echo md5('1234'); ?> จะได้เป็นรหัส ยาวๆ ให้เอาไปใส่ในฐานข้อมูลครับ แล้วเวลาจะเข้าระบบก็พิมพ์รหัส 1234

แสดงความเห็น

ไม่แสดงบนหน้าเว็บ

บทความที่เกี่ยวข้อง