ธันวาคม 11, 2018, 04:56:54 AM *
ยินดีต้อนรับคุณ, บุคคลไม่รู้ว่าใคร กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
หน้า: [1]   ลงล่าง
  พิมพ์  
login ผ่านเวปให้กับ ตัว SMF ด้วย ต้องทำยังไงครับ SMF ทำได้รึเปล่าครับ?  (อ่าน 11830 ครั้ง)
ขั้น 3 : ซุปเปอร์สตาร์ *** ออฟไลน์ ออฟไลน์ เพศ: ชาย พลังสะสม: 371
กันยายน 27, 2010, 06:58:18 PM
ผลงาน: 44
kajakoon
แฟนคลับ
ขั้น 3 : ซุปเปอร์สตาร์
***

ผลงาน: 44
ออฟไลน์ ออฟไลน์

เพศ: ชาย
พลังสะสม: 371

SLeePinG_FoReSt

« เมื่อ: กันยายน 27, 2010, 06:58:18 PM »
คือผมนำเอา SMF ไปใช้กับเวปที่ผมเขียนขึ้นมาเอง อยากให้การ login ผ่านเวปผมเป็นการ login ให้กับ ตัว SMFด้วย ต้องทำยังไงครับ

- ๐SLeePinG_FoReSt ๐ -
ไร้คอนเซปต์ ****** ออฟไลน์ ออฟไลน์ เพศ: ชาย พลังสะสม: 9130 นิค ณ ระยอง
กันยายน 27, 2010, 07:12:47 PM
ผลงาน: 6767
nick_indy
๛ เทพไร้คอนเซปต์ ๛
ไร้คอนเซปต์
******

ผลงาน: 6767
ออฟไลน์ ออฟไลน์

เพศ: ชาย
พลังสะสม: 9130


นิค ณ ระยอง

เว็บไซต์
« ตอบ #1 เมื่อ: กันยายน 27, 2010, 07:12:47 PM »
ศึกษา จาก ssi_examples.php ได้เลยครับ
เพราะ SSi ถูกเรียกใช้ แบบตัวอย่างในไฟล์แหละครับ
ขั้น 3 : ซุปเปอร์สตาร์ *** ออฟไลน์ ออฟไลน์ เพศ: ชาย พลังสะสม: 371
กันยายน 28, 2010, 12:12:25 AM
ผลงาน: 44
kajakoon
แฟนคลับ
ขั้น 3 : ซุปเปอร์สตาร์
***

ผลงาน: 44
ออฟไลน์ ออฟไลน์

เพศ: ชาย
พลังสะสม: 371

SLeePinG_FoReSt

« ตอบ #2 เมื่อ: กันยายน 28, 2010, 12:12:25 AM »
ขอบคุณมากครับ

ขอถามอีกหน่อยน่ะครับ ถ้าเกิดจะให้การลงทะเบียนจากเวปที่เราทำเป็นเหมือนการลงทะเบียน SMFด้วย  เราสามารถinsertข้อมูลusername password เข้าไปให้กับตาราง ข้อมูล ของ SMF ได้เลยไหมครับ คือผมเห็นตัว SMF มันเข้ารหัส md5 ไว้ คือง่ายๆน่ะครับ ผมอยากให้มีการลงทะเบียน และ login แค่ครั้งเดียวสามารถใช้ได้ทั้ง เวปผมแล้วก็ตัวบอร์ด นะครับ
ขั้น 4 : แฟนคลับบอร์ด *** ออฟไลน์ ออฟไลน์ เพศ: ชาย พลังสะสม: 837
กันยายน 28, 2010, 09:30:56 AM
ผลงาน: 577
๑ LiveRAngel ๑
แฟนคลับ
ขั้น 4 : แฟนคลับบอร์ด
***

ผลงาน: 577
ออฟไลน์ ออฟไลน์

เพศ: ชาย
พลังสะสม: 837

« ตอบ #3 เมื่อ: กันยายน 28, 2010, 09:30:56 AM »
รู้สึก SMF Version ใหม่ๆจะเข้ารหัสแบบ sha นะครับ วิธีเทียบค่าก็

passwd = sha1($username.$password);

มันจะเอาชื่อ username + รหัสผ่าน แล้วค่อยเอาไปเข้ารหัสแบบ sha ถึงจะได้ค่า hash มาไว้เก็บลงฐานข้อมูล
ถ้าจะทำฟอร์มเก็บค่าแยกต่างหาก ก็ให้ใช้หลักการประมาณนี้ครับ
ขั้น 3 : ซุปเปอร์สตาร์ *** ออฟไลน์ ออฟไลน์ เพศ: ชาย พลังสะสม: 371
กันยายน 29, 2010, 09:17:58 AM
ผลงาน: 44
kajakoon
แฟนคลับ
ขั้น 3 : ซุปเปอร์สตาร์
***

ผลงาน: 44
ออฟไลน์ ออฟไลน์

เพศ: ชาย
พลังสะสม: 371

SLeePinG_FoReSt

« ตอบ #4 เมื่อ: กันยายน 29, 2010, 09:17:58 AM »
ขอบคุณมากๆครับ

คือผมเอา smf _1-1-11 มาใช้น่ะครับ คืออยากเอามาเป็นเวปบอร์ดของเวปเพราะไม่มีแวลาทำเองแล้ว พยายามคิดว่าจะให้
มันเป็นส่วนเดียวกันให้กลมกลืนที่สุดน่ะครับ พยายหา ตัว session จับอยู่ แต่ไม่รู้ว่าตัวไหน ก็เลยจะเอาข้อมูลของการลงทะเบียนของผมไปยัดลงtableของ smf เลย เห็นเวอร์ชั้นนี้เข้าmd5 อย่างเดียวรึเปล่าไหนจะมีการตั้งสถาณะสมาชิกอะไรอีกมากมาย ถ้ามีวิธีที่ง่ายกว่ายังไงหรือมีชุดเวปบอร์ดที่นำมาประยุคใช้ได้ง่ายกว่า ขอคำแนะนำด้วยนะครับ แต่ขอวิธีการก่อนน่ะครับ อยากลองพยายามดู ขอบคุณที่มาตอบมากๆครับ
ไร้คอนเซปต์ ******* ออฟไลน์ ออฟไลน์ เพศ: ชาย พลังสะสม: 18055
กันยายน 29, 2010, 10:29:24 AM
ผลงาน: 1730
อาร์ตทูบี
Administrator
ไร้คอนเซปต์
*******

ผลงาน: 1730
ออฟไลน์ ออฟไลน์

เพศ: ชาย
พลังสะสม: 18055


เว็บไซต์
« ตอบ #5 เมื่อ: กันยายน 29, 2010, 10:29:24 AM »
แปปนะคับ เดี๋ยวเขียนให้ดู วิธีเรียกตัวแปรมาใช้
ไร้คอนเซปต์ ******* ออฟไลน์ ออฟไลน์ เพศ: ชาย พลังสะสม: 18055
กันยายน 29, 2010, 10:48:51 AM
ผลงาน: 1730
อาร์ตทูบี
Administrator
ไร้คอนเซปต์
*******

ผลงาน: 1730
ออฟไลน์ ออฟไลน์

เพศ: ชาย
พลังสะสม: 18055


เว็บไซต์
« ตอบ #6 เมื่อ: กันยายน 29, 2010, 10:48:51 AM »
ตามความเข้าใจผม คุณกำลังจะทำ Single Sign On (ล็อกอินครั้งเดียว ทุกระบบ)

วิธีดึงตัวแปรของ SMF มาใช้โดยคร่าวๆนะครับ
โค๊ด:
<?php require("./SSI.php"); // ตรงนี้สำคัญ ต้อง link กับไฟล์ ssi.php ก่อน แล้วเราจะสามารถเอาตัวแปรของ smf มาใช้ได้?>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<li>
$context['user']['is_guest']  คือ
<?php 
echo $context['user']['is_guest'];
?>

</li>

<li>
$context['user']['name'] คือ
<?
echo $context['user']['name'];
?>
</li>
<li>
$ID_MEMBER คือ
<?
echo $ID_MEMBER;
?>

</li>
<?php ssi_logout(); ?>
ผลที่ได้ระหว่าง login กับ logout จะเป็นแบบนี้ครับ
http://www.art2bempire.com/board/test.php

ส่วนถ้าต้องการจะทำระบบล็อกอินของเรา ให้ smf รู้ว่าเราล็อกอินอยู่ด้วย จะยุ่งยากนิดหน่อย
หลักการจะเป็นแบบนี้ครับ
1. มันจะไปเขียนค่าลงตาราง log_online
2. มันจะดึงค่าต่างๆของ user เก็บไว้ในตัวแปร $context , $user_info, $user_settings โดยรายละเอียดต่างๆจะเก็บอยู่ใน $context["ชื่อฟิล"]
3. มันจะเอาค่าต่างๆไปอัพเดตข้อมูลผ่านฟังก์ชั่น updateMemberData และ updateSettings

แต่ถ้าให้ผมแนะนำนะคับ แบบนี้ดีกว่าครับ
ถ้าจะทำระบบล็อกอิน เวลารับค่าแล้ว ให้มันเข้ามาเช็คในตัว smf ให้เสร็จก่อน
แล้วให้มัน redirect page ไปหน้าที่เราต้องการแทน ในกรณีที่ล็อกอินถูกต้อง แล้วค่อยดึงค่าตัวแปรมาใช้จากตัวอย่างด้านบนครับ
ส่วนคำสั่งในการ redirectpage ของ smf ก็จะมีรูปแบบประมาณนี้คับ

ตัวอย่างการใช้
โค๊ด:
redirectexit('action=login2;sa=check;member=' . $ID_MEMBER, $context['server']['needs_login_fix']);

ก็คือให้ค้นหาคำว่า... จากไฟล์ ./sources/LogInOut.php
โค๊ด:
// Some whitelisting for login_url...
if (empty($_SESSION['login_url']))
redirectexit();
else
{

ตรงนี้แหละครับ คือถ้าล็อกอินถูกต้อง เราต้องการให้ไปที่หน้าไหน ก็ใส่ login url เข้าไปครับ
4. แค่นี้ก็จะทำให้เราไม่ต้องสนว่าเราต้องอัพเดตตัวแปรไหนของ SMF บ้าง แต่ให้ SMF มัน authentication user ให้เรา แล้วเราค่อยดึงค่ามาใช้เทียบเอา แบบนี้ง่ายกว่าเยอะครับ ถ้างงตรงไหน ไม่เข้าใจก็เขียนถามไว้คับ มีเวลาจะเข้ามาตอบให้ครับ


อยากเข้าใจ SMF ต้องค่อยๆแกะตัวแปรไป แล้วก็อ่าน comment คับ ลองแก้ไปเรื่อยๆ
ขั้น 3 : ซุปเปอร์สตาร์ *** ออฟไลน์ ออฟไลน์ พลังสะสม: 557
กันยายน 29, 2010, 11:52:58 AM
ผลงาน: 57
amdev
แฟนคลับ
ขั้น 3 : ซุปเปอร์สตาร์
***

ผลงาน: 57
ออฟไลน์ ออฟไลน์

พลังสะสม: 557

เว็บไซต์
« ตอบ #7 เมื่อ: กันยายน 29, 2010, 11:52:58 AM »
ขอบคุณมากๆคับ อยากให้เขียนในส่วนนี้เป็นบทเรียนละเอียดๆ จังเลย
ผมคนหนึ่งที่คิดเหมือนเจ้าของกระทู้ คืออยากทำทำระบบล็อกอินของเราให้smfรู้ว่าเราล็อกอินอยู่ด้วย  ซึ้งจัง ซึ้งจัง ซึ้งจัง
ขั้น 3 : ซุปเปอร์สตาร์ *** ออฟไลน์ ออฟไลน์ เพศ: ชาย พลังสะสม: 371
ตุลาคม 04, 2010, 01:47:28 PM
ผลงาน: 44
kajakoon
แฟนคลับ
ขั้น 3 : ซุปเปอร์สตาร์
***

ผลงาน: 44
ออฟไลน์ ออฟไลน์

เพศ: ชาย
พลังสะสม: 371

SLeePinG_FoReSt

« ตอบ #8 เมื่อ: ตุลาคม 04, 2010, 01:47:28 PM »
ขอบคุณมากๆครับ
ในส่วนล๊อกอิน ก็พอเข้าใจแล้วครับ แต่การจะได้ username password ของ SMF มาก็ต้องไปสมัครในหน้าของ SMF คือผมอยากให้การสมัครสมาชิกของผม(เวปส่วนผม)
เป็นการสมัครสมาชิกของ SMF ด้วยอ่ะครับ
ขั้น 3 : ซุปเปอร์สตาร์ *** ออฟไลน์ ออฟไลน์ เพศ: ชาย พลังสะสม: 371
ตุลาคม 06, 2010, 05:50:40 AM
ผลงาน: 44
kajakoon
แฟนคลับ
ขั้น 3 : ซุปเปอร์สตาร์
***

ผลงาน: 44
ออฟไลน์ ออฟไลน์

เพศ: ชาย
พลังสะสม: 371

SLeePinG_FoReSt

« ตอบ #9 เมื่อ: ตุลาคม 06, 2010, 05:50:40 AM »
แล้วถ้าสมัครสมาชิก เสร็จแล้วให้มันวิ่งไปที่หน้าที่เราต้องการต้องไปแก้ไขโค้ดตรงไหนครับ ซึ้งจัง ซึ้งจัง
ขั้น 3 : ซุปเปอร์สตาร์ *** ออฟไลน์ ออฟไลน์ พลังสะสม: 557
มีนาคม 08, 2011, 10:39:20 AM
ผลงาน: 57
amdev
แฟนคลับ
ขั้น 3 : ซุปเปอร์สตาร์
***

ผลงาน: 57
ออฟไลน์ ออฟไลน์

พลังสะสม: 557

เว็บไซต์
« ตอบ #10 เมื่อ: มีนาคม 08, 2011, 10:39:20 AM »
ขอดันเพื่อหาคำตอบหน่อยคับ ผมลองทำตามที่คุณอาร์ทได้แนะนำแล้วคือใช้การล็อกอินจาก smf ก่อน แล้วให้มัน redirect ไปยังระบบของเราเอง

ตัวอย่างโค้ดที่หน้าล็อกอินของผมคือ รับค่า user&pass มา ผ่านหน้า redirect ของตัว smf

โค๊ด:
// Some whitelisting for login_url...
if (empty($_SESSION['login_url']))
redirectexit('http://www.xxx.com/login.php?user='.$_REQUEST['user'].'&pass='.$_REQUEST['passwrd']);
else
{

ซึ่งหน้าล็อกอินผมก็ทำฟังก์ชั่น setLogin($_GET['user'],$_GET['pass'])

เพื่อส่งค่าให้ระบบของผมมันล็อกอินด้วย

ปัญหาที่ผมคือ ผมต้องรีเฟรชหน้าเว็บบอร์ด ไม่งั้น มันจะไม่เข้าระบบ
เนื่องจากการส่งข้อมูลเป็นแบบ get ข้อมูลตรงนี้จะปลอดภัยหรือเปล่าคับ
tonnam0511
สิงหาคม 31, 2011, 10:03:02 AM
ผลงาน: 0
tonnam0511
บุคคลไม่รู้ว่าใคร
« ตอบ #11 เมื่อ: สิงหาคม 31, 2011, 10:03:02 AM »
ขอบคุณมากคับ ความรุ้เยอะมาก
ไร้คอนเซปต์ ******* ออฟไลน์ ออฟไลน์ เพศ: ชาย พลังสะสม: 18055
กันยายน 02, 2011, 10:57:50 AM
ผลงาน: 1730
อาร์ตทูบี
Administrator
ไร้คอนเซปต์
*******

ผลงาน: 1730
ออฟไลน์ ออฟไลน์

เพศ: ชาย
พลังสะสม: 18055


เว็บไซต์
« ตอบ #12 เมื่อ: กันยายน 02, 2011, 10:57:50 AM »
ตอบคำถาม amdev นะครับ...
ส่ง GET แบบนั้น ไม่ค่อยปลอดภัยคับ
พูดง่ายๆคือ ถ้าส่งพาสเวิร์ผ่าน URL ผลเสียที่เกิดขึ้นคือ Url จะถูกเก็บใน History
แล้ววันนึงถ้ามีคนไปเปิดดู History URL ก็จะดูพาสเวิร์ด เราก็จะรู้ได้โดยทันที โดยเฉพาะเครื่องสาธารณะ อาจส่งผลให้โดนแฮกซ์อีเมล์ ฯลฯ ตามมาได้คับ


วิธีแก้ไข เอาวิธีง่ายๆก่อน
ถ้าผ่าน URL อาจใช้ hash เข้ามาช่วยครับ เข้ารหัสมัน

ยกตัวอย่างเช่น
โค๊ด:
//เอา username มาผสมกับ password ก่อนเอาไปแปลงเป็น hash (SHA Algorithm)
$hashpassword=sha($_REQUEST['user'],$_REQUEST['pass']);

//แล้วจึงค่อยส่ง
redirectexit('http://www.xxx.com/login.php?user='.$_REQUEST['user'].'&pass='.$hashpassword);


แบบนี้จะดีกว่าคับ คือส่ง hash ไปเช็ค อย่างน้อยมันก็เอารหัสผ่านมาสับๆ จนเละเทะ เดาไม่ถูกแล้วว่าต้นฉบับมันคือคำว่าอะไร
diizzeve
มกราคม 20, 2012, 09:41:08 AM
ผลงาน: 0
diizzeve
บุคคลไม่รู้ว่าใคร
« ตอบ #13 เมื่อ: มกราคม 20, 2012, 09:41:08 AM »
ขอบคุณคะ VIP VIP VIP
Tawuncc
เมษายน 19, 2012, 04:24:48 PM
ผลงาน: 0
Tawuncc
บุคคลไม่รู้ว่าใคร
« ตอบ #14 เมื่อ: เมษายน 19, 2012, 04:24:48 PM »
 โอ้โห โอ้โห
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป:  

Powered by MySQL Powered by PHP Valid XHTML 1.0! Valid CSS!