GORAGOD.com

PHP อ่านความกว้างของจอภาพ

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 แทน