LogoThai.COM

สารสนเทศน่ารู้ ตลาดสด บันเทิงกระจาย => ตลาดเศรษฐี => ข้อความที่เริ่มโดย: LesCop ที่ 24 มกราคม 2556 10:05:32

LOGOthai.com

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



หัวข้อ: smf ล็อกอินครั้งเดียวทุกระบบ (Single Sign On)
เริ่มหัวข้อโดย: LesCop ที่ 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 (http://www.art2bempire.com/board/index.php?topic=133871.0)


หัวข้อ: Re: smf ล็อกอินครั้งเดียวทุกระบบ (Single Sign On)
เริ่มหัวข้อโดย: LesCop ที่ 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 ไปเช็ค อย่างน้อยมันก็เอารหัสผ่านมาสับๆ จนเละเทะ เดาไม่ถูกแล้วว่าต้นฉบับมันคือคำว่าอะไร

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




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