ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingผมเขียนระบบเว็บ php อันหนึ่งใกล้เสร็จเเล้ว แต่จะสร้างหน้าใหม่ยังไงครับ
หน้า: 1 [2]  ทั้งหมด   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ผมเขียนระบบเว็บ php อันหนึ่งใกล้เสร็จเเล้ว แต่จะสร้างหน้าใหม่ยังไงครับ  (อ่าน 3231 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
sputtaro
สมุนแก๊งเสียว
*

พลังน้ำใจ: 139
ออฟไลน์ ออฟไลน์

กระทู้: 910



ดูรายละเอียด
« ตอบ #20 เมื่อ: 10 สิงหาคม 2017, 14:40:50 »

ถ้าจบโปรเจคเล็กๆนี้ได้ ผมคิดว่า เป็นการเริ่มต้นของ PHP Developer ที่ดีนะครับ
และอย่าลืมทบทวน และตรวจตรวจสอบตัวเองเสมอ
ตั้งแต่ แนวทางการเขียนโค๊ด PHP เบื้องต้น
หรือแม้กระทั่ง 10 อย่างที่คุณควรทำก่อนเป็น PHP Developer ที่ดี

หวังว่าจะมีนักพัฒนา PHP ที่เก่งฉกาจเพิ่มขึ้นอีกคนนะครับ ขออวยพรด้วยใจจริง
บันทึกการเข้า
Fallen
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 162
ออฟไลน์ ออฟไลน์

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« ตอบ #21 เมื่อ: 11 สิงหาคม 2017, 09:41:01 »

ถ้าจบโปรเจคเล็กๆนี้ได้ ผมคิดว่า เป็นการเริ่มต้นของ PHP Developer ที่ดีนะครับ
และอย่าลืมทบทวน และตรวจตรวจสอบตัวเองเสมอ
ตั้งแต่ แนวทางการเขียนโค๊ด PHP เบื้องต้น
หรือแม้กระทั่ง 10 อย่างที่คุณควรทำก่อนเป็น PHP Developer ที่ดี

หวังว่าจะมีนักพัฒนา PHP ที่เก่งฉกาจเพิ่มขึ้นอีกคนนะครับ ขออวยพรด้วยใจจริง

 wanwan004
ขอบคุณมากครับ สำเร็จได้เพราะท่านเเท้ๆเลย อิอิ จริงๆ ผมเขียนไม่เป็นอะครับ อาศัยเครื่องมือเอามารวมกัน
ด้วยความตั้งใจอยากทำระบบมาใช้งานเเทนเว็บบอร์ด ที่โพสได้จากระบบ comment ของ facebook เเค่นั้นเองอ่ะ
อาจจะมีบักนะ (ท่านไหนผ่านมา บอกผมม่างนะ จะได้แก้ไข อิอิ)

 wanwan017

นี่ครับ (user=1 / pw = 1)
url ปกติ goo.gl/8cd5A3
url rewrite goo.gl/UxC5My

บันทึกการเข้า

sputtaro
สมุนแก๊งเสียว
*

พลังน้ำใจ: 139
ออฟไลน์ ออฟไลน์

กระทู้: 910



ดูรายละเอียด
« ตอบ #22 เมื่อ: 11 สิงหาคม 2017, 10:47:03 »

ผมลองเข้าไปดูแล้วครับ
ที่อยากบอกคือ ล็อกอินเข้าไป แกัไขเสร็จ
แล้วล๊อกเอาท์ออกมา มันยังมีคุ๊กกี้(หรือเซสชั่นค้างอยู่
ทำให้ผมลบข้อมูลได้ แม้จะล๊อกเอาท์ออกมาแล้ว
ควรแก้ไขตัวนี้ด้วยครับ
โดยในไฟล์ที่ล๊อกเอาท์ควรล้างค่าคุ๊กกี้ออกใหเหมด

ประมาณนี้ครับ
<?php
ob_start();
session_start();
$_SESSION['username'] = '';
$_SESSION['password'] = '';
session_unset();
session_destroy();
header("location: ../");
ob_end_flush();   
?>

$_SESSION['username'] กับ $_SESSION['password'] เป็นแค่ตัวอย่างที่ต้องการลบค่านะครับ แก้ให้ตรงกับของคุณ
ผมพยายามสื่อว่า อย่าให้มี คุ๊กกี้ หรือ เซสชั่นหลงเหลืออยู่

**************

ส่วนในฐานข้อมูล
ที่ผมมักจะทำคือ
เพิ่มฟิล์ดอีก 1 ฟิลด์ เพื่อใช้สำหรับ
สั่งไม่ให้แสดงผล มักกำหนดให้เป็น integer เช่น ตั้งชื่อ isactive มีค่าเป็น 1 หรือ 0
ค่าdefault คือ 1 หมายถึงให้มันแสดงผลปกติ
แต่เมื่อไม่ต้องการให้แสดงผล เช่น ไว้บล็อก หรือ ระงับการแสดงผลชั่วคราว ก็กำหนดให้มีค่าเป็น 0

ในคำสั่ง MySQL เวลา SELECT ก็เพิ่มคำว่า AND isactive=1
เมื่อต้องการระงับการแสดงผล(ไม่ใช่การลบออกจากฐานข้อมูล) ก็ UPDATE ... set isactive=0 ....

ค่อยๆปรับแก้ไปเรื่อยๆนะครับ
« แก้ไขครั้งสุดท้าย: 11 สิงหาคม 2017, 10:50:23 โดย sputtaro » บันทึกการเข้า
Fallen
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 162
ออฟไลน์ ออฟไลน์

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« ตอบ #23 เมื่อ: 11 สิงหาคม 2017, 15:43:12 »

ผมลองเข้าไปดูแล้วครับ
ที่อยากบอกคือ ล็อกอินเข้าไป แกัไขเสร็จ
แล้วล๊อกเอาท์ออกมา มันยังมีคุ๊กกี้(หรือเซสชั่นค้างอยู่
ทำให้ผมลบข้อมูลได้ แม้จะล๊อกเอาท์ออกมาแล้ว
ควรแก้ไขตัวนี้ด้วยครับ
โดยในไฟล์ที่ล๊อกเอาท์ควรล้างค่าคุ๊กกี้ออกใหเหมด

ประมาณนี้ครับ
<?php
ob_start();
session_start();
$_SESSION['username'] = '';
$_SESSION['password'] = '';
session_unset();
session_destroy();
header("location: ../");
ob_end_flush();   
?>

$_SESSION['username'] กับ $_SESSION['password'] เป็นแค่ตัวอย่างที่ต้องการลบค่านะครับ แก้ให้ตรงกับของคุณ
ผมพยายามสื่อว่า อย่าให้มี คุ๊กกี้ หรือ เซสชั่นหลงเหลืออยู่

**************

ส่วนในฐานข้อมูล
ที่ผมมักจะทำคือ
เพิ่มฟิล์ดอีก 1 ฟิลด์ เพื่อใช้สำหรับ
สั่งไม่ให้แสดงผล มักกำหนดให้เป็น integer เช่น ตั้งชื่อ isactive มีค่าเป็น 1 หรือ 0
ค่าdefault คือ 1 หมายถึงให้มันแสดงผลปกติ
แต่เมื่อไม่ต้องการให้แสดงผล เช่น ไว้บล็อก หรือ ระงับการแสดงผลชั่วคราว ก็กำหนดให้มีค่าเป็น 0

ในคำสั่ง MySQL เวลา SELECT ก็เพิ่มคำว่า AND isactive=1
เมื่อต้องการระงับการแสดงผล(ไม่ใช่การลบออกจากฐานข้อมูล) ก็ UPDATE ... set isactive=0 ....

ค่อยๆปรับแก้ไปเรื่อยๆนะครับ




ขอบคุณมากครับ ผมเพิ่งเห็นไฟล์ delete และ add มันไม่มีโค๊ดของการล๊อกอินเลย
ดังนั้นถ้ารุ้ path มันก็พิมพ์ url ใส่ id ลบ แก้ได้เลย

 Tongue

ผมจึงเอา code ล๊อกอิน ไปใส่ ในแต่ละไฟล์ (เเยก user/pass )
แต่กำลังงง อยู่ว่า ทำอย่างไร ให้มันเป็นแค่ login ใช้ user /pw  เดียวกัน ใช้ร่วมกัน
เหมือน include เข้ามาอะไรอย่างนั้นครับ หรือ ว่า เอาไปเขียนเป็นไฟล์ต่างหากครับ


ไฟล์ login ผมเป็นแบบนี้อ่ะ ใส่ในหน้าของแต่ละไฟล์ที่ต้องการได้เลย

โค๊ด:
<?php
session_start
();
$userinfo = array(
                
'0'=>'0',
                
'1'=>'1'
                
);

if(isset(
$_GET['logout'])) {
    
$_SESSION['username'] = '';
    
header('Location:  ' $_SERVER['PHP_SELF']);
}

if(isset(
$_POST['username'])) {
    if(
$userinfo[$_POST['username']] == $_POST['password']) {
        
$_SESSION['username'] = $_POST['username'];
    }else {
        
//Invalid Login
    
}
}
?>

<!--n login part1-->

<!--login part2-->
<?php if($_SESSION['username']): ?>
Logged in as <?=$_SESSION['username']?>
<a href="?logout=1">Logout1</a>

<?php endif; ?>


<form name="login" action="" method="post">
Username:</label><input type="text" name="username" value="" /><br />
Password:<input type="password" name="password" value="" /><br /><br>
<input type="submit" name="submit" value="Submit" />

        </form>

บันทึกการเข้า

sputtaro
สมุนแก๊งเสียว
*

พลังน้ำใจ: 139
ออฟไลน์ ออฟไลน์

กระทู้: 910



ดูรายละเอียด
« ตอบ #24 เมื่อ: 11 สิงหาคม 2017, 16:37:46 »

ระบบล็อกอินสำหรับการใช้งานหลายๆคนที่ดี มีประสิทธิภาพ มักจะซับซ้อน เก็บข้อมูลจำนวนมากพอสมควร

แต่ถ้าทำแบบใช้คนเดียว ไม่ต้องการให้ใครเข้ามายุ่ง ก็ไม่ยากครับ
ผมขอแนะนำให้ใช้ หรือหาสคริปท์แจกฟรีทั่วไปมาใช้ก็ได้แล้ว แต่ที่สำตัญ
คุณต้องเปลี่ยนชื่อไฟล์ ชื่อเซสชั่น ไม่ให้เหมือนชาวบ้านเขา
ก็จะปลอดภัยระดับหนึ่ง

ยิ่งถ้ามีระบบตรวจสอบว่าเป็นสมาชิกที่เก็บไว้ในฐานข้อมูลด้วยหรือไม่ ก็จะเพิ่มความปลอดภัยเข้าไปอีก
(ตารางเก็บรายชื่อสมาชิกก็มีแค่เราคนเดียวไงครับ สร้างฟิลด์ชื่อยากๆไว้เช็คข้อมูลที่เก็บไว้เพื่อเช็คด้วย)

****************************

โดยทั่วไปที่ผมออกแบบ จะใช้เซสชั่นที่ไม่ใช่ชื่อ username, password
ผสมกับการเข้ารหัส + วันเวลา

ตัวอย่างนะครับ
public function doLogin($uname,$upassword)

                $crypt_username=$this->CryptInput($uname) ;
      $_SESSION['key1'] = $crypt_username;
      $_SESSION['key2'] = $uname;   
      $crypt_password=$this->CryptInput($upassword) ;
      $_SESSION['key3'] = $crypt_password;      
                date_default_timezone_set("America/New_York");
                $loginday = date("Y-m-d H:i:s");

จะมี 3 เซสชั่น, มีการเข้ารหัสด้วย HMAC2
บันทึกวันเวลาที่เข้าใช้งาน
และอื่นๆ
ส่วนหน้าล็อกเอาท์ก็จะล้างเซสชั่นทั้งหมด

และในหน้าอื่นๆ จะเช็คว่ามีเซสชั่นครบ ถูกต้องหรือไม่
โดยผมเขียนเป็นฟังชั่น
$result = $db->checkLogin($key1,$key2,$key3)
ถ้า $result ไม่ถูกต้อง ก็จะ redirect ไปหน้าอินเด็กซ์

***************************
ลองหาสคริปท์ฟรีมาแกะดูก่อนนะครับ
ระบบการเช็คยูสเซอร์ สำคัญมาก
หวังว่าจะเป็นประโยชน์นะครับ
« แก้ไขครั้งสุดท้าย: 11 สิงหาคม 2017, 16:42:19 โดย sputtaro » บันทึกการเข้า
Fallen
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 162
ออฟไลน์ ออฟไลน์

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« ตอบ #25 เมื่อ: 11 สิงหาคม 2017, 23:32:31 »

ระบบล็อกอินสำหรับการใช้งานหลายๆคนที่ดี มีประสิทธิภาพ มักจะซับซ้อน เก็บข้อมูลจำนวนมากพอสมควร

แต่ถ้าทำแบบใช้คนเดียว ไม่ต้องการให้ใครเข้ามายุ่ง ก็ไม่ยากครับ
ผมขอแนะนำให้ใช้ หรือหาสคริปท์แจกฟรีทั่วไปมาใช้ก็ได้แล้ว แต่ที่สำตัญ
คุณต้องเปลี่ยนชื่อไฟล์ ชื่อเซสชั่น ไม่ให้เหมือนชาวบ้านเขา
ก็จะปลอดภัยระดับหนึ่ง

ยิ่งถ้ามีระบบตรวจสอบว่าเป็นสมาชิกที่เก็บไว้ในฐานข้อมูลด้วยหรือไม่ ก็จะเพิ่มความปลอดภัยเข้าไปอีก
(ตารางเก็บรายชื่อสมาชิกก็มีแค่เราคนเดียวไงครับ สร้างฟิลด์ชื่อยากๆไว้เช็คข้อมูลที่เก็บไว้เพื่อเช็คด้วย)

****************************

โดยทั่วไปที่ผมออกแบบ จะใช้เซสชั่นที่ไม่ใช่ชื่อ username, password
ผสมกับการเข้ารหัส + วันเวลา

ตัวอย่างนะครับ
public function doLogin($uname,$upassword)

                $crypt_username=$this->CryptInput($uname) ;
      $_SESSION['key1'] = $crypt_username;
      $_SESSION['key2'] = $uname;   
      $crypt_password=$this->CryptInput($upassword) ;
      $_SESSION['key3'] = $crypt_password;      
                date_default_timezone_set("America/New_York");
                $loginday = date("Y-m-d H:i:s");

จะมี 3 เซสชั่น, มีการเข้ารหัสด้วย HMAC2
บันทึกวันเวลาที่เข้าใช้งาน
และอื่นๆ
ส่วนหน้าล็อกเอาท์ก็จะล้างเซสชั่นทั้งหมด

และในหน้าอื่นๆ จะเช็คว่ามีเซสชั่นครบ ถูกต้องหรือไม่
โดยผมเขียนเป็นฟังชั่น
$result = $db->checkLogin($key1,$key2,$key3)
ถ้า $result ไม่ถูกต้อง ก็จะ redirect ไปหน้าอินเด็กซ์

***************************
ลองหาสคริปท์ฟรีมาแกะดูก่อนนะครับ
ระบบการเช็คยูสเซอร์ สำคัญมาก
หวังว่าจะเป็นประโยชน์นะครับ


ขอบคุณมากนะครับ wanwan017
บันทึกการเข้า

doodee17
Newbie
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 15



ดูรายละเอียด
« ตอบ #26 เมื่อ: 12 สิงหาคม 2017, 05:43:42 »

ข้อมูลดีดี

ขอเก็บความรู้ด้วยครับ
บันทึกการเข้า
หน้า: 1 [2]  ทั้งหมด   ขึ้นบน
พิมพ์