คัยเทพเรื่อง session กับ cookie ช่วยหน่อยครับ

เริ่มโดย itum, 04 มิถุนายน 2009, 09:58:07

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

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

itum

คือผมจะทำเช็ค สมชิกของบอร์ด smf นะครับในหน้า index ที่สร้างไว้ ถ้าไม่ login ไม่สามารถเห้นข้อความหรือตอบกระทู้ได้

ในหน้าแรกที่เราสร้างไว้ พอจะมีวิธีไม่ครับ ว่าจะเช็คค่ายังไง ไล่หาตัวแปรในบอร์ดไม่เจออะครับ

หน้าแรกสร้างไว้ใน โดเมนหลัก บอร์ดสร้างเป้นซับโดเมน พอจะมีวิธีเช็คไม่ครับ

ขอบคุณครับ

:-*

itum


jatuphum

domain.com  กับ  sub.domain.com  อันนี้จะมองเป็นคนละโดเมนจึงทำให้ cookie , session ใช้ด้วยกันไม่ได้

อีกวิธีก็เก็บ status ไว้ที่ database โดยมี sessionID เป็น index  เวลาส่งจาก domain.com --> sub.domain.com ก็ส่ง sessionID ไปกับ Url ด้วย    :P

nos

 การใช้งาน SESSION ข้าม Subdomain บน Server ถ้ายังไม่เข้าใจว่ามันจะทำไปทำไม ผมจะลองยกตัวอย่างให้ เช่น การทำเว็บไซต์ ที่มีหลาย Subdomain เช่น http://www.domain.com และ http://sub.domain.com แต่ต้องการให้ทั้งหมดของเว็บไซต์ สามารถ login เข้าใช้งานเพียงครั้งเดียว หรือ การทำ blog แบบที่ให้ user เป็นแบบ subdomain

ปกติแล้ว SESSION สามารถใช้งานข้ามไดเร็คทอรี่ได้ภายใน domain เดียวกัน ไม่เหมือน Cookie ที่สามารถใช้งานได้เฉพาะไดเร็คทอรี่ใด ไดเร็คทอรี่หนึ่งเท่านั้น SESSION จึงเหมาะที่จะเก็บสถานะการ login มากกว่า Cookie เนื่องจากไม่ต้องกังวลว่าจะอยู่ในไดเร็คทอรี่ใด แต่ SESSION ก็ยังไม่สามารถใช้งานได้ในกรณีที่เว็บเราแบ่งเป็น subdomain แต่! ปัญหานี้แก้ไขได้ครับ

.htaccess
php_value session.cookie_domain ".mysite.com"

สร้างไฟล์ .htaccess แล้วใส่โค้ดนี้ลงไป แล้วก็เอาไปวาง ที่ root ของ Server จะใช้ได้ตลอดทุก subdomain ครับ (ถ้าไม่ได้ ก็ใส่ไฟล์นี้ ที่ root ของทุก subdomain เลยครับ)
การกำหนดค่าที่ถูกต้องของวิธีนี้ คือตุ้องมี จุด อยู่หน้า โดเมนด้วยนะครับ ถึงจะทำงาน

PHP
ini_set('session.cookie_domain', '.mysite.com') // ใส่บรรทัดบนสุดของเพจ
session_start();

เขียนลงบนโค้ด PHP โดยตรงในตำแหน่งที่ต้องการจะเรียกใช้ session ซึ่งก็คือ session_start(); วิธีนี้มีข้อเสียที่ต้องเขียนในทุกครังที่เรียกใช้ ไม่เหมือนกับวิธีแรกครับ ที่ไม่ต้องแก้ไขโค้ด

ยังมีอีกวิธีนึงที่พอประยุกต์ใช้ได้ครับ คือการใช้ session ที่กำหนดเอง

PHP
session_id($_GET[PHPSESSID]);
session_start();

วิธีนี้คือการใช้ session ที่กำหนดเองครับ โดยตอนเริ่มต้อนเราต้องกำหนดค่า $_GET[PHPSESSID] ไว้ก่อนด้วยตัวเอง อาจได้มาโดยการสุ่มก็ได้ แต่ในเวลาที่ต้องการจะให้ใช้งาน session เดียวกัน ก็ให้ทำการส่งค่านี้ไปยัง เพจที่ต้องการใช้ session เดียวกันได้ เช่น xxx.php?phpsessid=avsbeikmnrv เป็นต้น ก็จะทำให้เพจนั้นๆ ใช้ session เดียวกันกับต้นทางได้ ไม่ว่าจะอยู่ subdomain ไหนก็ตาม


credit by goragod.com

chui761

โอ้ว ตามมาเก็บความรู้ และขอบคุณครับ

ผมพลาดบทความนี้ในเว็บ goragod ไปได้ไงเนี่ย หุๆๆ
[direct=http://secure.hostgator.com/~affiliat/cgi-bin/affiliates/clickthru.cgi?id=amazonnrr]เช่าโฮสเกเตอร์ Promotion ลด 50% click[/direct]|
Hostgator คูปอง Baby plan เดือนแรก 0.01$=TSBSAVE001 หลายเดือนลด 25%=TSBSAVE025 |[direct=http://www.amzhowto.com/websitemap/]สอน Clickbank Amazon CPA/Payday Viglink เช่าโฮสต์นอก จดโดเมนราคาถูก[/direct]
[direct=http://support.hostneverdie.com/aff.php?aff=156]เช่าโฮสต์ไทย hostneverdie[/direct]
[direct=http://hosterbox.com/billing/aff.php?aff=139]Hosterbox Host นอกราคาประหยัด คุณภาพดีไม่แพ้ gator[/direct]

TOOAds.com

ใช้ตัวนี้ครับ $context['user']['is_guest'] เท่าที่ลองมาถ้าเป็นโคดอื่นรู้สึกจะติดคุ๊กกี้ หรือไม่ก็ SESSION
ผมใช้ซับโฟลเดอร์นะ แต่รู้สึกว่าเคยลองซับโดเมนก็ใช้ได้นะครับ

war1ock

อ้างถึงจาก: jatuphum ใน 05 มิถุนายน 2009, 07:01:05
domain.com  กับ  sub.domain.com  อันนี้จะมองเป็นคนละโดเมนจึงทำให้ cookie , session ใช้ด้วยกันไม่ได้

อีกวิธีก็เก็บ status ไว้ที่ database โดยมี sessionID เป็น index  เวลาส่งจาก domain.com --> sub.domain.com ก็ส่ง sessionID ไปกับ Url ด้วย    :P

แต่ไม่รู้ว่าฐานข้อมูลของเค้าตัวเดียวกันมั้ยอ่ะครับ ผมไม่แน่ใจนะเพราะถ้าส่งผ่าน url เราก็ต้องไป $_GET ค่าตรงหน้าที่เราต้องการใช้ตัวแปรนั้นมั้ยอ่ะครับ  :P  :P แต่ก็ไม่แน่ใจนะครับ
[direct=http://www.wannycloset.com]เสื้อผ้าแฟชั่น ร้านเสื้อผ้าออนไลน์[/direct]
[direct=http://www.facebook.com/wannycloset]ติดตามสินค้าแฟชั่นจากร้าน wannycloset[/direct]
[direct=http://www.war1ock.com]Blog(war1ock's blog)[/direct]

itum

ขอบคุณทุกความรู้ที่ให้ครับตอบครับจะเอาไปทำ

แล้วเดียวมารายงานผลนะครับ

ขอบคุณครับ

zZzZ

[direct=http://blackfridayhighlights.com/]PDD Wordpress-Amazon Demo[/direct]
[direct=http://www.facebook.com/pages/PandaDev/275145209179897?__req=hf] Support : PDD Wordpress-Amazon Plugin [/direct]
[direct=http://theworldtopbrands.com]Shopping by brands[/direct]
[direct=http://enduserreview.com]รีวิว[/direct]
[direct=http://findcouponcodesonline.com]Coupon[/direct]

ball6847

SSI ใช้ไม่ได้หรอคับ หรือว่าจะไม่ให้มีรายการกระทู้ขึ้นหากยังไม่ได้ล็อกอิน

ผมว่าใช้ SESSION ไม่น่าจะเหมาะหรอก เพราะถ้าหากสมาชิกเข้ามาที่หน้าหลักก่อนที่จะเข้าบอร์ด ถึงจะล็อกอินไว้แล้ว ก็จะยังไม่มี SESSION อยู่ดีจนกว่าจะเข้าไปรับ SESSION มาจาก SMF

ผมว่า COOKIE น่าจะเหมาะกว่า ผมก็ไม่เคยได้แกะเหมือนกันเลยไม่รู้ว่าเค้า strict directory ไว้ขนาดไหน
We use Ubuntu.

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]

itum

อ้างถึงจาก: nos ใน 05 มิถุนายน 2009, 07:08:01
การใช้งาน SESSION ข้าม Subdomain บน Server ถ้ายังไม่เข้าใจว่ามันจะทำไปทำไม ผมจะลองยกตัวอย่างให้ เช่น การทำเว็บไซต์ ที่มีหลาย Subdomain เช่น http://www.domain.com และ http://sub.domain.com แต่ต้องการให้ทั้งหมดของเว็บไซต์ สามารถ login เข้าใช้งานเพียงครั้งเดียว หรือ การทำ blog แบบที่ให้ user เป็นแบบ subdomain

ปกติแล้ว SESSION สามารถใช้งานข้ามไดเร็คทอรี่ได้ภายใน domain เดียวกัน ไม่เหมือน Cookie ที่สามารถใช้งานได้เฉพาะไดเร็คทอรี่ใด ไดเร็คทอรี่หนึ่งเท่านั้น SESSION จึงเหมาะที่จะเก็บสถานะการ login มากกว่า Cookie เนื่องจากไม่ต้องกังวลว่าจะอยู่ในไดเร็คทอรี่ใด แต่ SESSION ก็ยังไม่สามารถใช้งานได้ในกรณีที่เว็บเราแบ่งเป็น subdomain แต่! ปัญหานี้แก้ไขได้ครับ

.htaccess
php_value session.cookie_domain ".mysite.com"

สร้างไฟล์ .htaccess แล้วใส่โค้ดนี้ลงไป แล้วก็เอาไปวาง ที่ root ของ Server จะใช้ได้ตลอดทุก subdomain ครับ (ถ้าไม่ได้ ก็ใส่ไฟล์นี้ ที่ root ของทุก subdomain เลยครับ)
การกำหนดค่าที่ถูกต้องของวิธีนี้ คือตุ้องมี จุด อยู่หน้า โดเมนด้วยนะครับ ถึงจะทำงาน

PHP
ini_set('session.cookie_domain', '.mysite.com') // ใส่บรรทัดบนสุดของเพจ
session_start();

เขียนลงบนโค้ด PHP โดยตรงในตำแหน่งที่ต้องการจะเรียกใช้ session ซึ่งก็คือ session_start(); วิธีนี้มีข้อเสียที่ต้องเขียนในทุกครังที่เรียกใช้ ไม่เหมือนกับวิธีแรกครับ ที่ไม่ต้องแก้ไขโค้ด

ยังมีอีกวิธีนึงที่พอประยุกต์ใช้ได้ครับ คือการใช้ session ที่กำหนดเอง

PHP
session_id($_GET[PHPSESSID]);
session_start();

วิธีนี้คือการใช้ session ที่กำหนดเองครับ โดยตอนเริ่มต้อนเราต้องกำหนดค่า $_GET[PHPSESSID] ไว้ก่อนด้วยตัวเอง อาจได้มาโดยการสุ่มก็ได้ แต่ในเวลาที่ต้องการจะให้ใช้งาน session เดียวกัน ก็ให้ทำการส่งค่านี้ไปยัง เพจที่ต้องการใช้ session เดียวกันได้ เช่น xxx.php?phpsessid=avsbeikmnrv เป็นต้น ก็จะทำให้เพจนั้นๆ ใช้ session เดียวกันกับต้นทางได้ ไม่ว่าจะอยู่ subdomain ไหนก็ตาม


credit by goragod.com

พี่ครับทำไงดีครับ host ที่ใช้อยู่พออัพ .htaccess
ขึ้นไปแล้วมันมองไม่เห้นเลย
เหมือนมันไม่ทำงานอะครับ
แนะนำหน่อยครับพี่

nos

ต้องไปแก้ใน CP ครับ ถ้าอัพโปรแกรม FTP มันจะ Hedden ไว้ มันทำงานอยู่ครับ แต่มันมองไม่เห็นต้องผ่าน CP

TOOAds.com