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


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

LogoThai.COM  |  สารสนเทศน่ารู้ ตลาดสด บันเทิงกระจาย  |  ตลาดเศรษฐี (ผู้ดูแล: LesCop)  |  smf ล็อกอินครั้งเดียวทุกระบบ (Single Sign On)
LOGOthai.com

คลิกที่นี่ -->> เปรียบเทียบทำเลและราคาที่ดินวังน้ำเขียวผ่าน GooleMAP | คลิกที่นี้ -->> Upload ภาพ

หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: smf ล็อกอินครั้งเดียวทุกระบบ (Single Sign On)  (อ่าน 9845 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
LesCop
แหลม+คม=หอก
Administrator
เศรษฐีพันล้าน
*

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

เพศ: ชาย
กระทู้: 450


ขอหยุดที่86เอย


ดูรายละเอียด
« เมื่อ: 24 มกราคม 2556 10:05:32 »

ทำ 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(); ?>


ส่วนถ้าต้องการจะทำระบบล็อกอินของเรา ให้ 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 คับ ลองแก้ไปเรื่อยๆ

ที่มา : www.art2bempire.com
แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า


>> เมื่อโกรธจัด อย่าเพิ่งตอบข้อความใคร..
>> เมื่อดีใจ อย่าเพิ่งให้สัญญา..
>> เมื่อเศร้าหนักหนา อย่างเพิ่งตัดสินใจ..
LesCop
แหลม+คม=หอก
Administrator
เศรษฐีพันล้าน
*

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

เพศ: ชาย
กระทู้: 450


ขอหยุดที่86เอย


ดูรายละเอียด
« ตอบ #1 เมื่อ: 24 มกราคม 2556 10:08:43 »

วิธีแก้ไข เอาวิธีง่ายๆก่อน
ถ้าผ่าน 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 ไปเช็ค อย่างน้อยมันก็เอารหัสผ่านมาสับๆ จนเละเทะ เดาไม่ถูกแล้วว่าต้นฉบับมันคือคำว่าอะไร
แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า


>> เมื่อโกรธจัด อย่าเพิ่งตอบข้อความใคร..
>> เมื่อดีใจ อย่าเพิ่งให้สัญญา..
>> เมื่อเศร้าหนักหนา อย่างเพิ่งตัดสินใจ..
แท็ก:
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป:  


:: ข้อตกลงร่วมกัน ::
ห้ามโพสต์รูปลามก หรือสิ่งผิดกฏหมายทุกประเภท
ห้ามโพสต์ข้อความที่ทำให้ผู้อื่นเสียหาย ห้ามใช้วาจาไม่สุภาพ หรือด่าทอ ข้อความหรือเนื้อหาที่เกิดขึ้น ผู้โพสต์ต้องเป็นคนรับผิดชอบเท่านั้น หากเราตรวจสอบว่ามีการโพสต์รูปลามก หรือทำสิ่งผิดกฎหมาย
เราจะลบโพสต์ทันทีโดยไม่ต้องแจ้งให้ทราบล่วงหน้า




คลิกที่นี่ -->> จัดพระของขวัญเข้ารุ่นและพิมพ์

หน้านี้ถูกสร้างขึ้นภายในเวลา 2.518 วินาที กับ 26 คำสั่ง