เทคนิคง่ายๆ ตายน้ำตื้น

ช่วยด้วย! ตอนทดสอบบนเครื่องมัน Login ได้ค่ะ แต่พอเอาขึ้น Host แล้วมันไม่ยอมให้ Login ค่ะ

ลองเพิ่ม

$user=$_POST["user];
$passwd=$_POST["passwd];


เข้าไปในโค้ดของของคุณ ก่อนใช้งานตัวแปร $user, $passwd สิครับ

สาเหตุ เนื่องจากบางเซิร์ฟเวอร์มีการป้องกันการส่งค่าตัวแปรผ่านฟอ์รม ที่มาจาก methode Post หรือ Get ดังนั้นคุณควรมีการเขียนโค้ดเพื่อรับค่าตัวแปรนี้ก่อนการใช้งาน ด้วยฟังก์ชั่น $_POST หรือ $_GET
มันไม่ยอมเปลี่ยนไปอีกหน้าครับ? ผมตรวจสอบแล้วมันก็เข้ามาทำงานในฟังก์ชั่นเรียบร้อยแล้ว

จากโค้ด คุณใช้

header("Location : logout.php");

ผมแนะนำให้คุณเปลี่ยนการ Redirect เป็น

echo "<META HTTP-EQUIV=refresh CONTENT=\"0; URL=logout.php\">";

เนื่องจากฟังก์ชั่น header มีข้อจำกัดค่อนข้างมากครับ ซึ่งโดยปกติ การใช้ header ที่ไม่สำเร็จมักเกิดการการที่เรามีโค้ดอื่นๆที่แสดงข้อความ ก่อนหน้าโค้ดนี้ครับ
Login แล้วมันไม่ยอมจำชื่อผมครับ? ผมใช้ Cookie เก็บชื่อ Login ไว้แต่พอเปลี่ยนหน้า มันไม่มีชื่อผมแล้วครับ

การใช้งาน Cookie ที่เป็นปัญหามากที่สุดคือเรามักลืมใส่

ob_start();

ที่บรรทัดแรกของโค้ดเราครับ

ก็เหมือนกับฟังก์ชั่น header ข้างบนละครับ ตัวแปร Cookie จะไม่ทำงานหากมีโค้ดที่แสดงข้อความก่อนหน้า ปฏิบัติมาก่อน เพื่อกันลืม หากเราต้องการใช้ Cookie ในหน้าใด ให้เราแทรกฟังก์ชั่น ob_start(); ไว้ตอนบนสุดของโค้ดก่อนทุกครั้ง และอีกหนึ่งเรื่องคือ ผมแนะนำให้ใช้ $_COOKIE แทนอย่างอื่นครับ เช่น

$user=$_COOKIE["user];

แถมอีก 1 ข้อ Cookie จะทำงานบนไดเร็คทอรี่เดียวกันเท่านั้นครับไม่สามารถใช้กับหน้าที่อยู่ต่างกันคนละไดเร็คทอรี่ได้ เช่น Cookie ที่สร้างจาก webboard/index.php เป็นคนละตัวกันกับ Cookie ที่สร้างจาก member/login.php
ผู้เขียน goragod โพสต์เมื่อ 01 เม.ย. 2551 เปิดดู 9,337 ป้ายกำกับ PHP
^