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

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

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

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

กระทู้: 679



ดูรายละเอียด
« เมื่อ: 04 มิถุนายน 2009, 09:58:07 »

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

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

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

ขอบคุณครับ

 Kiss
บันทึกการเข้า

itum
สมุนแก๊งเสียว
*

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

กระทู้: 679



ดูรายละเอียด
« ตอบ #1 เมื่อ: 05 มิถุนายน 2009, 06:30:51 »

ไม่มีคนรู้เลยหรอครับ

 Kiss
บันทึกการเข้า

jatuphum
ก๊วนเสียว
*

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

กระทู้: 313



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 05 มิถุนายน 2009, 07:01:05 »

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

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

nos
ก๊วนเสียว
*

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

กระทู้: 281



ดูรายละเอียด
« ตอบ #3 เมื่อ: 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
บันทึกการเข้า
chui761
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 9,477



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 05 มิถุนายน 2009, 07:27:28 »

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

ผมพลาดบทความนี้ในเว็บ goragod ไปได้ไงเนี่ย หุๆๆ
บันทึกการเข้า

TOOAds.com
บุคคลทั่วไป
« ตอบ #5 เมื่อ: 05 มิถุนายน 2009, 08:07:16 »

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

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

กระทู้: 283



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 05 มิถุนายน 2009, 09:18:51 »

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

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

แต่ไม่รู้ว่าฐานข้อมูลของเค้าตัวเดียวกันมั้ยอ่ะครับ ผมไม่แน่ใจนะเพราะถ้าส่งผ่าน url เราก็ต้องไป $_GET ค่าตรงหน้าที่เราต้องการใช้ตัวแปรนั้นมั้ยอ่ะครับ  Tongue  Tongue แต่ก็ไม่แน่ใจนะครับ
บันทึกการเข้า

itum
สมุนแก๊งเสียว
*

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

กระทู้: 679



ดูรายละเอียด
« ตอบ #7 เมื่อ: 05 มิถุนายน 2009, 09:34:07 »

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

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

ขอบคุณครับ
บันทึกการเข้า

zZzZ
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,509



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 05 มิถุนายน 2009, 09:46:42 »

+1 nos

 :Smiley
บันทึกการเข้า

ball6847
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 4,174



ดูรายละเอียด
« ตอบ #9 เมื่อ: 05 มิถุนายน 2009, 10:56:30 »

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

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

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

itum
สมุนแก๊งเสียว
*

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

กระทู้: 679



ดูรายละเอียด
« ตอบ #10 เมื่อ: 05 มิถุนายน 2009, 11:16:43 »

การใช้งาน 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
ก๊วนเสียว
*

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

กระทู้: 281



ดูรายละเอียด
« ตอบ #11 เมื่อ: 05 มิถุนายน 2009, 16:32:44 »

ต้องไปแก้ใน CP ครับ ถ้าอัพโปรแกรม FTP มันจะ Hedden ไว้ มันทำงานอยู่ครับ แต่มันมองไม่เห็นต้องผ่าน CP
บันทึกการเข้า
TOOAds.com
บุคคลทั่วไป
« ตอบ #12 เมื่อ: 06 มิถุนายน 2009, 08:52:35 »

ขอบคุณครับ ลืมเซฟ
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์