demonxiii เขียน:คือ ผมอ่านแล้วลองเขียนมานานพอควร แต่บางครั้งก็มีปัญหาคือ เลยอยากถามว่าจากความเข้าใจที่ได้ลองเขียนนะครับ
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'
[quote="demonxiii"]คือ ผมอ่านแล้วลองเขียนมานานพอควร แต่บางครั้งก็มีปัญหาคือ เลยอยากถามว่าจากความเข้าใจที่ได้ลองเขียนนะครับ
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() อยู่ในตำแหน่งที่ถูกต้อง (อันนี้ผมสงสัยมาก)
ทั้งหมดนี้ผมเข้าใจถูกไมครับ หรือว่ามันมีอะไรเพิ่มเติมอีก เพราะรู้สึกว่าอยู่กะมันนานละ แต่ยังเหมือนไม่เข้าใจมันดี เลยอยากเคลียความเข้าใจกะมันก่อน[/quote]
ข้อ 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