ถามความเข้าใจเรื่อง SESSION ครับ

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderators: mindphp, ผู้ดูแลกระดาน

demonxiii
PHP Sr. Member
PHP Sr. Member
Posts: 54
Joined: 04/01/2009 7:54 pm

ถามความเข้าใจเรื่อง SESSION ครับ

Post by demonxiii » 09/03/2009 12:17 am

คือ ผมอ่านแล้วลองเขียนมานานพอควร แต่บางครั้งก็มีปัญหาคือ เลยอยากถามว่าจากความเข้าใจที่ได้ลองเขียนนะครับ

1. SESSION ต้องมีการใช้ session_start() ทุกครั้งใช่ไมครับ

2. SESSION จะเป็นการจำค่าตัวแปรนั้นๆ ในหน้า PAGE ซึ่งแม้รีเฟรช ค่านั้นก็ยังอยู่ แต่เมื่อไปหน้าอื่น SESSION นั้นจะคงอยู่เหมือนเดิม แต่หากเราไม่เรียกฟังชั่น session_start() แม้เราเรียกตัวแปร SESSION นั้นออกมา ก็ไม่มีค่าเพราะถือว่าไม่มีการเรียกใช้ SESSION ถูกไมครับ ?

3. unset คำสั่งนี้ใช้ เคลียค่า SESSION เฉพาะตัว แล้วถ้า session_destroy() จะเคลียค่า SESSION ทุกตัวออกหมดเลยใช่ไมครับ

4. การเรียก session_start() จะต้องเรียกก่อนที่ส่งผลออกไป เช่น คำสั่ง echo หรือ อะไรที่เป็นการแสดงผล หากมีการส่งผลไปแล้วจะทำให้ session ERROR

5. การประกาศค่า $_SESSION('x') แม้มีการส่งการแสดงผลออกไปแล้ว แล้วก็ยังกำหนดตัวแปรได้อยู่ ? กรณีที่ session_start() อยู่ในตำแหน่งที่ถูกต้อง (อันนี้ผมสงสัยมาก)

ทั้งหมดนี้ผมเข้าใจถูกไมครับ หรือว่ามันมีอะไรเพิ่มเติมอีก เพราะรู้สึกว่าอยู่กะมันนานละ แต่ยังเหมือนไม่เข้าใจมันดี เลยอยากเคลียความเข้าใจกะมันก่อน

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 22541
Joined: 22/09/2008 6:18 pm
Contact:

Re: ถามความเข้าใจเรื่อง SESSION ครับ

Post by mindphp » 09/03/2009 1:37 am

demonxiii wrote:คือ ผมอ่านแล้วลองเขียนมานานพอควร แต่บางครั้งก็มีปัญหาคือ เลยอยากถามว่าจากความเข้าใจที่ได้ลองเขียนนะครับ

1. SESSION ต้องมีการใช้ session_start() ทุกครั้งใช่ไมครับ

2. SESSION จะเป็นการจำค่าตัวแปรนั้นๆ ในหน้า PAGE ซึ่งแม้รีเฟรช ค่านั้นก็ยังอยู่ แต่เมื่อไปหน้าอื่น SESSION นั้นจะคงอยู่เหมือนเดิม แต่หากเราไม่เรียกฟังชั่น session_start() แม้เราเรียกตัวแปร SESSION นั้นออกมา ก็ไม่มีค่าเพราะถือว่าไม่มีการเรียกใช้ SESSION ถูกไมครับ ?

3. unset คำสั่งนี้ใช้ เคลียค่า SESSION เฉพาะตัว แล้วถ้า session_destroy() จะเคลียค่า SESSION ทุกตัวออกหมดเลยใช่ไมครับ

4. การเรียก session_start() จะต้องเรียกก่อนที่ส่งผลออกไป เช่น คำสั่ง echo หรือ อะไรที่เป็นการแสดงผล หากมีการส่งผลไปแล้วจะทำให้ session ERROR

5. การประกาศค่า $_SESSION('x') แม้มีการส่งการแสดงผลออกไปแล้ว แล้วก็ยังกำหนดตัวแปรได้อยู่ ? กรณีที่ session_start() อยู่ในตำแหน่งที่ถูกต้อง (อันนี้ผมสงสัยมาก)

ทั้งหมดนี้ผมเข้าใจถูกไมครับ หรือว่ามันมีอะไรเพิ่มเติมอีก เพราะรู้สึกว่าอยู่กะมันนานละ แต่ยังเหมือนไม่เข้าใจมันดี เลยอยากเคลียความเข้าใจกะมันก่อน
ข้อ 1. ขึ้นอยู่กับ config ของ php ครับแต่แนะนำให้ ใช้ session_start() เมื่อจะใช้งาน Session
ข้อ 2. SESSION เป็นตัวแปล Supper global สามารถส่งไปใช้งานหน้าอื่นๆได้ หรือ จะเรียกใช้มันเมื่อไรก็ได้ ถ้า ข้อ 1. OK แล้ว
ข้อ 3. unset เป็น function ที่ใช้ยกเลิกตัวแปลครับ ใช้กับ ตัวแปลปรกติ หรือ ตัวแปลข้อ 2. ก็ได้ เช่นเมื่อเราประกาศ $_SESSION[yyy] ส่วน session_destroy() อันนี้เข้าใจถูกแล้วครับ
ข้อ 4. ใช่ครับ แต่ก็มีวิธีแก้ไข ถ้าจำเป็นต้องส่ง output ออกก่อนใช้ session_start() ลองดูในบทความครับ
ข้อ 5. การประกาศค่า $_SESSION('x') เขียนผิดนะครับ ต้องเขียนเป็น $_SESSION['x'] เป็นตัวแปล Supper global กำหนดเป็น array ซึ่ง กำหนดกี่มิติก็ได้ เช่นถ้าจะกำหนดเป็น 2 มิติก็ เขียนเป็น $_SESSION['x']['y'] = 'mindphp.com'
:-D
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

User avatar
secivon
PHP Full Member
PHP Full Member
Posts: 35
Joined: 24/03/2009 5:15 pm

Re: ถามความเข้าใจเรื่อง SESSION ครับ

Post by secivon » 24/03/2009 5:26 pm

รบกวนถามต่อครับ ว่าเป็นไปได้หรือเปล่าครับ ที่จะให้ ตัวแปร $_SESSION สามารถมองเห็นกันจากคนละ subdomain

ตอนนี้ subdomain ของตัวหลัก ( admin.example.com ) ต้องการใช้ค่าของ session ที่ set ไว้ใน domain ( example.com) หลักแล้วน่ะครับ
อีกปัญหาก็คือ user เจ้าปัญหา เดี๋ยวก็เข้าเว็บไซท์ผ่าน example.com เดี๋ยวก็ www.example.com :evil:
(พอดีมี process การ"กระโดด" ไปๆมาๆระหว่างเวบไซท์หลักกับเว็บไซท์อื่น ครับ ถ้า user เข้าจาก example.com แล้วในตอนสั่งให้ "กระโดด" กลับ ไปที่ www.example.com มันจะมองไม่เห็น session ที่ set ไว้แล้วน่ะครับ )


ขอบคุณมากครับ :biggrin:
"อย่าเอาแต่โทษเด็ก ถ้าเด็กมันจะห่วย ดูตัวเองบ้างว่าทำบ้านเมืองไว้เป็นยังไง"

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 22541
Joined: 22/09/2008 6:18 pm
Contact:

Re: ถามความเข้าใจเรื่อง SESSION ครับ

Post by mindphp » 24/03/2009 6:03 pm

PHPSESSID
ลองดู function session_set_cookie_params()
โดยกำหนดเช่น
session_set_cookie_params(0, '/', '.ชื่อโดเมนหลัก');
0 คือ lifetime คือ อายุของเซสชันคุกกี้, ในหน่วยวินาที. กำหนดให้เป็น 0 เพื่อให้ เวลา ปิด browser แล้ว ให้ มันมาไป
ก่อนที่จะประกาศ
session_start();

ปล. ถ้าปัญหาตัวเองแก้ได้แล้วก็ลองดูๆ กระทู้อื่นๆ บ้างนะครับเผื่อจะได้ช่วยคนอื่นได้บ้าง :-D :-D
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

User avatar
secivon
PHP Full Member
PHP Full Member
Posts: 35
Joined: 24/03/2009 5:15 pm

Re: ถามความเข้าใจเรื่อง SESSION ครับ

Post by secivon » 24/03/2009 6:56 pm

ขอบคุณมากครับ :mrgreen:

เท่าที่ลองดู work บน host ตัวนึง แต่เหมือนจะยังไม่ work บน host ตัวหลักแฮะ :?
แต่ได้ keyword แล้ว เดี๋ยวจะลองไปศึกษาต่อนะครับ ว่ามันมี PHP / WebServer Configuration อะไรที่เกี่ยวข้องบ้าง

ปล. ถ้าปัญหาตัวเองแก้ได้แล้วก็ลองดูๆ กระทู้อื่นๆ บ้างนะครับเผื่อจะได้ช่วยคนอื่นได้บ้าง :-D :-D
แฮ่ๆ ถ้าเป็นคำถามที่น่าสนใจ ส่วนใหญ่ก็จะไปแจมล่ะครับ :P
แต่ถ้าเกรียนมาขอการบ้านนี่ เห็นมากๆแล้วลมสันดานขึ้นจริงๆ :angry:
"อย่าเอาแต่โทษเด็ก ถ้าเด็กมันจะห่วย ดูตัวเองบ้างว่าทำบ้านเมืองไว้เป็นยังไง"

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 22541
Joined: 22/09/2008 6:18 pm
Contact:

Re: ถามความเข้าใจเรื่อง SESSION ครับ

Post by mindphp » 24/03/2009 7:38 pm

ลอง phpinfo() ดูเกี่ยวกับ การกำหนด ค่าว่า session.name ตั้งเป็น PHPSESSID
_COOKIE["PHPSESSID"] ด้วยว่าถูกกำหนด เป็น ค่าเดียวกันหรือเปล่า
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

User avatar
secivon
PHP Full Member
PHP Full Member
Posts: 35
Joined: 24/03/2009 5:15 pm

Re: ถามความเข้าใจเรื่อง SESSION ครับ

Post by secivon » 25/03/2009 9:55 am

แจ้งความคืบหน้า หลังจากทดสอบดูอีกรอบครับ
ลอง phpinfo() ดูเกี่ยวกับ การกำหนด ค่าว่า session.name ตั้งเป็น PHPSESSID
อันนี้เป็น PHPSESSID ครับ
_COOKIE["PHPSESSID"] ด้วยว่าถูกกำหนด เป็น ค่าเดียวกันหรือเปล่า
$_COOKIE["PHPSESSID"] ในโฮสท์หลักตัวนี้เป็นคนละค่าครับ
แต่ในโฮสท์ที่ทดสอบแล้วได้ผลนี่เป็นตัวเดียวกันครับ


ขอตรวจสอบอะไรอีกหน่อย ได้ข้อมูลเพิ่มแล้วจะมาโพสท์ต่อนะครับ :-D
"อย่าเอาแต่โทษเด็ก ถ้าเด็กมันจะห่วย ดูตัวเองบ้างว่าทำบ้านเมืองไว้เป็นยังไง"

Post Reply

Return to “Programming - PHP”

Users browsing this forum: No registered users and 10 guests