ใช้ session ในซับโดเมน ที่ต่างโฮส ภาคต่อ

เริ่มโดย ฉันไม่มีตัวตน, 11 กรกฎาคม 2013, 12:03:36

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

ฉันไม่มีตัวตน

ใครอยากได้ความรู้ อ่านที่นี่ก่อนเลย 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"

icez

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

จบฮะ :)
























ความจริงมันก็มีวิธีน่ะนะให้ใช้ session ข้ามเครื่องได้ แต่ต้องเปลี่ยนวิธีเก็บ session (session.save_handler) จาก files เป้น memcache หรืออะไรพวกนี้แทนครับ แล้วชี้ไปที่ memcache server ตัวเดียวกัน
[direct=http://www.thzhost.com/]THZHost[/direct] SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ

ฉันไม่มีตัวตน

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

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

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

ขอบคุณครับ ลองโค้ดด้านบนมาทั้งวัน :wanwan004:

ฉันไม่มีตัวตน

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

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

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

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

เพื่อนๆมีความเห็นยังไงบ้างครับ บอกหมดเปลือกเลยผม  :-[ แต่ถึงไม่บอก พวกแฮคเค้าก็คงเดาหลักการออกอยู่แล้วเนอะ

MapTwoZa

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

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

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

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

ปล. คิดไปคิดมา session ใน memcache มันมั่วได้ด้วยหรอ ถ้าไม่มี namespace  :-X
แต่ถ้าเป็นเก็บ variable ทั่วไปปรกติก็ใช้ namespace เอา
Good code quality Developer :D

ฉันไม่มีตัวตน

ขอบคุณมากเลยคุณ 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 งานเข้าสิ :-[

icez

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

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

http://www.wikihow.com/Create-a-Secure-Session-Managment-System-in-PHP-and-MySQL
[direct=http://www.thzhost.com/]THZHost[/direct] SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ

ฉันไม่มีตัวตน

อ้างถึงจาก: icez ใน 12 กรกฎาคม 2013, 14:15:55
เออ เพิ่งนึกได้

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

http://www.wikihow.com/Create-a-Secure-Session-Managment-System-in-PHP-and-MySQL
เข้าเว็บไปมึนตึบเลย เปิดดิกคำต่อคำเลยทีเดียว :wanwan004: อันนี้คือดึง session ข้ามแชร์โฮส กับแชร์โฮสหรือเปล่าครับคุณ icez

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

xvlnw.com

เป็นกระทู้ที่ดีจริงๆ เก็บไว้ก่อน :)
[direct=https://cloudhost.in.th/wordpress-hosting]ツ ⓌⓄⓇⒹⓅⓇⒺⓈⓈ ⒽⓄⓈⓉⒾⓃⒼ [/direct] :wanwan014:  :D
[direct=https://cloudhost.in.th/cloudhosting.html]Cloud Hosting[/direct] [direct=https://cloudhost.in.th/cloudvps.html]Cloud Server[/direct] [direct=https://cloudhost.in.th/vpshosting.html]Cloud VPS Hosting[/direct] [direct=https://cloudhost.in.th/windowsvps.html]Cloud Windows[/direct] Tel: 080-348-0843 LINE: ixvlnw

icez

อ้างถึงจาก: ฉันไม่มีตัวตน ใน 12 กรกฎาคม 2013, 15:35:57
อ้างถึงจาก: icez ใน 12 กรกฎาคม 2013, 14:15:55
เออ เพิ่งนึกได้

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

http://www.wikihow.com/Create-a-Secure-Session-Managment-System-in-PHP-and-MySQL
เข้าเว็บไปมึนตึบเลย เปิดดิกคำต่อคำเลยทีเดียว :wanwan004: อันนี้คือดึง session ข้ามแชร์โฮส กับแชร์โฮสหรือเปล่าครับคุณ icez

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


ถึงจะไม่ค่อยอยากแนะนำให้ทำแบบนี้เท่าไหร่ก็เถอะนะ
[direct=http://www.thzhost.com/]THZHost[/direct] SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ