PHP อ่านความกว้างของจอภาพ
PHP ไม่สามารถอ่านค่าความกว้างของจอภาพได้ครับ ต้องอ่านด้วย Javascript เ้ราสามารถใช้เทคนิคการส่งค่าจาก Javascript ไปยัง PHP ด้วยการ Submit ผ่าน Form มาประยุกต์ใช้ ได้ครับ
มีข้อควรระวังนะครับ หากมีการ submit ค่ามาจากฟอร์มอื่นๆ ในแบบ GET หากผ่านฟอร์มนี้แล้ว ค่าจะกลายเป็น POST แทน ดังนั้นหากต้องการรับค่าอื่นๆที่ส่งมายังฟอร์มนี้ ให้ทำการรับค่าด้วย $_REQUEST แทน
<?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 แทน