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

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

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

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

กระทู้: 4,817



ดูรายละเอียด
« เมื่อ: 11 กรกฎาคม 2013, 12:03:36 »

ใครอยากได้ความรู้ อ่านที่นี่ก่อนเลย http://www.thaiseoboard.com/index.php/topic,324857.0.html

ขอบอกแนวทางอีกครั้ง ผมจะทำเว็บแยกซับโดเมน โดยมีการล็อกอินครั้งเดียวที่ domain.com (main) แล้วดึง session ไปใช้กับซับโดเมนที่อยู่ต่างโฮสกัน
domain.com สมาชิก
chat.domain.com ไม่มีระบบสมาชิก
pic.domain.com ไม่มีระบบสมาชิก

ตอนนี้เทสที่แชร์โฮส โค้ดด้านล้างผมลองหมดละ มันไม่ได้ หรือผมใส่ผิดที่ก็ไม่รู้นะ ใครพอจะรู้ช่วยแนะนำให้ทีสิครับ wanwan017

วิธีที่ 1
โค๊ด:
ใส่โค้ดที่ domain.com/index.php
ini_set('session.cookie_domain', '.domain.com');
session_start();

ใส่โค้ดที่ chat.domain.com/index.php
ini_set('session.cookie_domain', '.domain.com');
session_start();

วิธีที่ 2
โค๊ด:
ใส่โค้ดที่ domain.com/index.php
session_set_cookie_params(0, '/', '.domain.com');
session_start();

ใส่โค้ดที่ chat.domain.com/index.php
session_set_cookie_params(0, '/', '.domain.com');
session_start();

วิธีที่ 3
โค๊ด:
ใส่โค้ดที่ domain.com/index.php
ini_set('session.cookie_domain', '.domain.com');
$_SESSION['save_url']=$_SERVER['REQUEST_URI'];
session_start();

ใส่โค้ดที่ chat.domain.com/index.php
ini_set('session.cookie_domain', '.domain.com');
$_SESSION['save_url']="chat.domain.com".$_SERVER['SCRIPT_NAME'];
session_start();

วิธีที่ 4
โค๊ด:
ใส่โค้ดที่ domain.com/.htaccess ถ้ายังไม่ได้ก็ใส่ไว้ที่ซับโดเมนทุกซับ
php_value session.cookie_domain ".domain.com"
« แก้ไขครั้งสุดท้าย: 11 กรกฎาคม 2013, 12:05:27 โดย ฉันไม่มีตัวตน » บันทึกการเข้า
icez
Verified Seller
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,886



ดูรายละเอียด
« ตอบ #1 เมื่อ: 11 กรกฎาคม 2013, 12:09:58 »

session มันเก็บข้อมูลที่ฝั่ง server ครับ หมายความว่าถ้า server คนละเครื่องกันก็ใช้งาน session ข้ามกันไม่ได้แล้ว

จบฮะ Smiley
























ความจริงมันก็มีวิธีน่ะนะให้ใช้ session ข้ามเครื่องได้ แต่ต้องเปลี่ยนวิธีเก็บ session (session.save_handler) จาก files เป้น memcache หรืออะไรพวกนี้แทนครับ แล้วชี้ไปที่ memcache server ตัวเดียวกัน
« แก้ไขครั้งสุดท้าย: 11 กรกฎาคม 2013, 12:10:45 โดย icez » บันทึกการเข้า

THZHost SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ
ฉันไม่มีตัวตน
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 4,817



ดูรายละเอียด
« ตอบ #2 เมื่อ: 11 กรกฎาคม 2013, 12:16:50 »

นั่นไงผมว่าแล้วข้าม server ไม่ได้ งั้นหาวิธีต่อไป 555+

จะลองดึงคุ้กกี้ของ domain.com PHPSSID มาใช้ สมมติถ้ามันทำได้แต่ก็เสี่ยงถูกปลอมคุ้กกี้อยู่ดีเนอะ ใครรู้ PHPSSID ก็ปลอมคุ้กกี้เป็นเราได้(เดาๆเอานะ)

เออๆ...ถ้าผมปิด browser session ก็จะจบ คนปลอมคุกกี้ก็จะหลุดไปด้วย เอาใหม่ๆ ชักจะมึน

ขอบคุณครับ ลองโค้ดด้านบนมาทั้งวัน wanwan004
« แก้ไขครั้งสุดท้าย: 11 กรกฎาคม 2013, 12:18:53 โดย ฉันไม่มีตัวตน » บันทึกการเข้า
ฉันไม่มีตัวตน
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 4,817



ดูรายละเอียด
« ตอบ #3 เมื่อ: 12 กรกฎาคม 2013, 11:39:22 »

ตกลงจะลองแบบนี้ครับคุณ icez (เน้นแชร์โฮสก่อน อะไรหนักๆใช้ vps เช่น pic)
เนื่องจากใช้ session ข้ามโฮสนั้น ต้องใช้เมมแคช(ซึ่งต้องใช้ vps, server) และเค้าบอกว่าเมมแคชเหมาะกับเว็บเดียวในหนึ่งโฮส(ไม่งั้นแคชจะมั่ว) ใช้งบเยอะน่าดูสำหรับการเริ่มต้น Tongue

จากที่ผมลอง session เพียวๆ มันจะเก็บคุ้กกี้ PHPSESSID ในเครื่องเราด้วย เพื่ออ้างอิงกับทาง server แสดงว่าหากใครปลอมคุ้กกี้ตัวนี้ได้ ก็ปลอมเป็นเราได้

domain.com session, cookie(ลิมิตหน้า, ที่ไม่สำคัญ)

forum.domain.com cookie จะเข้ารหัสไอดีที่สำคัญๆ หรือทำโค้ดสัก 12หลัก เพื่อยืนยันตัวตนกับดีบีก่อน action
forum.domain.com/admin session ต้องใช้พาสที่สองล็อกอิน

เพื่อนๆมีความเห็นยังไงบ้างครับ บอกหมดเปลือกเลยผม  Embarrassed แต่ถึงไม่บอก พวกแฮคเค้าก็คงเดาหลักการออกอยู่แล้วเนอะ
« แก้ไขครั้งสุดท้าย: 12 กรกฎาคม 2013, 11:46:09 โดย ฉันไม่มีตัวตน » บันทึกการเข้า
MapTwoZa
ก๊วนเสียว
*

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

กระทู้: 366



ดูรายละเอียด
« ตอบ #4 เมื่อ: 12 กรกฎาคม 2013, 13:00:15 »

ผมว่าใช้หลายๆเว็บก็ได้นะ memcache แต่ต้องมี namespace ซักหน่อยเพื่อไม่ให้มั่ว
โดยรวมๆ น่าจะ 3 วิธีครับ

1. เก็บลง cookie ไม่แนะนำ เพราะนั่นหมายความว่าเราจะยก session ทั้งหมดลงไปใน cookie ไม่ปลอดภัย
2. memcache server ตามที่คุณ icez แนะนำ
3. ถ้าจะใช้ sharehost อย่างเดียว ไม่มีตัวเลือกมากกว่านี้ ก็ให้เขียน php sync session data ระหว่าง server ครับ เช่นการใช้ web service แต่วิธีนี้ก็เป็นคอขวดนะครับ  Lips Sealed

ให้ดีหาคนใจดีให้แชร์ memcache server ดีกว่า
แล้วก็ set namespace ใน key ด้วยครับ ให้ดี hash มันอีกรอบได้ไม่ไปซ้ำกับของเค้า
เช่น session.yourweb_keyname
อย่าลืมใช้ session_id() เพื่อ set namespace + session id เองด้วยล่ะ

หรือไม่ก็เปิด  vps เป็น memcache server แล้วหาคนมาช่วยแชร์ 55+

ปล. คิดไปคิดมา session ใน memcache มันมั่วได้ด้วยหรอ ถ้าไม่มี namespace  Lips Sealed
แต่ถ้าเป็นเก็บ variable ทั่วไปปรกติก็ใช้ namespace เอา
« แก้ไขครั้งสุดท้าย: 12 กรกฎาคม 2013, 13:14:26 โดย MapTwoZa » บันทึกการเข้า

Good code quality Developer Cheesy
ฉันไม่มีตัวตน
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 4,817



ดูรายละเอียด
« ตอบ #5 เมื่อ: 12 กรกฎาคม 2013, 13:26:33 »

ขอบคุณมากเลยคุณ MapTwoZa

จริงๆมันไม่มีอะไรหรอก แค่อยากลองทำระบบแยกซับโดเมน หาเรื่องปวดหัวแท้ๆ  wanwan004

งั้นเอาใหม่เริ่มต้นใช้ vps1 อัดสคริปหนักๆ domain.com, pic.domain.com, chat.domain.com ไว้ที่โฮสตัวเดียวก่อนนี่ล่ะ ทำเมมแคชเพื่อดึง session ต่างโฮส

ซับไหนเพิ่งเริ่มเปิดยังเบาๆอยู่เช่น game.domain.com, forum.domain.com ก็กระจายไปแชร์โฮสก่อน แล้วดึง session จาก vps1

พอพวก game.domain.com, forum.domain.com เริ่มจะโดนแชร์โฮสเตะละ ก็ย้ายไป vps2, vps3 แล้วดึง session จาก vps1

ผมเข้าใขเรื่องเมมแคช+session ถูกป่าวเนี่ย คือต้องใช้ domain เดียวกับซับโดเมนใช้ไหม (ไม่ใช่เอา a.com ทำเมมแคช แล้วให้ b.com ดึง session)

ปล.ทุกทีใช้คุ้กกี้ครับ ไม่รู้เรื่องซีเคียวฯเลย พอเจอเพื่อนๆแนะนำให้ใช้ session งานเข้าสิ Embarrassed
บันทึกการเข้า
icez
Verified Seller
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,886



ดูรายละเอียด
« ตอบ #6 เมื่อ: 12 กรกฎาคม 2013, 14:15:55 »

เออ เพิ่งนึกได้

เราแก้ session handler ได้เองนะครับ ลองดูตามนี้

http://www.wikihow.com/Create-...agment-System-in-PHP-and-MySQL
บันทึกการเข้า

THZHost SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ
ฉันไม่มีตัวตน
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 4,817



ดูรายละเอียด
« ตอบ #7 เมื่อ: 12 กรกฎาคม 2013, 15:35:57 »

เออ เพิ่งนึกได้

เราแก้ session handler ได้เองนะครับ ลองดูตามนี้

http://www.wikihow.com/Create-...agment-System-in-PHP-and-MySQL

เข้าเว็บไปมึนตึบเลย เปิดดิกคำต่อคำเลยทีเดียว wanwan004 อันนี้คือดึง session ข้ามแชร์โฮส กับแชร์โฮสหรือเปล่าครับคุณ icez

แต่ถ้าทำไม่ได้ ก็คงเช่า vps ตัวนึงก่อนล่ะ แล้วอัดซับเข้าไปเลย พอซับไหนทำอืด ก็ย้ายไป vps ต่อไป มีใครจะออกโปรฯ vps ฟรี 12 เดือนไหมครับ Embarrassed
บันทึกการเข้า
xvlnw.com
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 5,905



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 12 กรกฎาคม 2013, 16:53:40 »

เป็นกระทู้ที่ดีจริงๆ เก็บไว้ก่อน Smiley
บันทึกการเข้า

icez
Verified Seller
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,886



ดูรายละเอียด
« ตอบ #9 เมื่อ: 12 กรกฎาคม 2013, 23:36:36 »

เออ เพิ่งนึกได้

เราแก้ session handler ได้เองนะครับ ลองดูตามนี้

http://www.wikihow.com/Create-...agment-System-in-PHP-and-MySQL

เข้าเว็บไปมึนตึบเลย เปิดดิกคำต่อคำเลยทีเดียว wanwan004 อันนี้คือดึง session ข้ามแชร์โฮส กับแชร์โฮสหรือเปล่าครับคุณ icez

แต่ถ้าทำไม่ได้ ก็คงเช่า vps ตัวนึงก่อนล่ะ แล้วอัดซับเข้าไปเลย พอซับไหนทำอืด ก็ย้ายไป vps ต่อไป มีใครจะออกโปรฯ vps ฟรี 12 เดือนไหมครับ Embarrassed
มันคือการเขียน session handler เองครับ ยัด session ลงใน mysql...


ถึงจะไม่ค่อยอยากแนะนำให้ทำแบบนี้เท่าไหร่ก็เถอะนะ
บันทึกการเข้า

THZHost SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ
หน้า: [1]   ขึ้นบน
พิมพ์