A-AA+then

PHP ไม่สามารถอ่านค่าความกว้างของจอภาพได้ครับ ต้องอ่านด้วย Javascript เ้ราสามารถใช้เทคนิคการส่งค่าจาก Javascript ไปยัง PHP ด้วยการ Submit ผ่าน Form มาประยุกต์ใช้ ได้ครับ

<?php  
    if ( isset($_POST[screenwidth] ) )// มีการส่งค่า screenwidth มา
    {
        $_SESSION[screenWidth] = (int)$_POST[screenwidth];
       // บันทึกลง cookie ไว้ เวลาใช้อ่านจากค่านี้
        setCookie( "screen_width" , $_SESSION[screenWidth] , time() + 3600 * 24 * 365 );
    }
    else if ( (int)$_COOKIE[screen_width] == 0  )// ตรวจสอบว่ามี screenwidth บันทึกไว้หรือไม่
    {
       // สร้างฟอร์มสำหรับส่งค่า screenwidth กลับมา
        echo '<form method="post" action="index.php" name="frm_sw">';
       // input สำหรับค่า screen width
        echo '<input type="text" name="screenwidth" />';
       // สำหรับค่า อื่นๆที่ส่งมาด้วย ให้ระวังว่าค่าที่ส่งกลับ อาจกลายเป็น post แทน
        foreach ( $_REQUEST as $name => $value )
        {
            echo '<input type="text" name="'.$name.'" value="'.$value.'" />';
        };
        echo '</form>';
        echo '<script type="text/javascript">';
        echo 'frm_sw.screenwidth.value=screen.width;';
       // ทำการ submit form
        echo 'frm_sw.submit();';
        echo '</script>
';
    }
    else// กำหนดไว้แล้ว บันทึกลง session
    {
        $_SESSION[screenWidth] = (int)$_COOKIE[screen_width];
    };

   // ตรวจสอบว่าการบันทึกค่าถูกต้อง
    if ( $_SESSION[screenWidth] == 0 )
    {
        echo '<center style="color:red;"><br /><br /><br /><br /><br /><br />กรุณาเปิดการทำงานของ Cookie และ Javascript</center>';
        exit();
    };
?>

มีข้อควรระวังนะครับ หากมีการ submit ค่ามาจากฟอร์มอื่นๆ ในแบบ GET หากผ่านฟอร์มนี้แล้ว ค่าจะกลายเป็น POST แทน ดังนั้นหากต้องการรับค่าอื่นๆที่ส่งมายังฟอร์มนี้ ให้ทำการรับค่าด้วย $_REQUEST แทน

Relate

^