Php可以检测IP,主机名,客户端代理等。可以通过php检测客户端浏览器的监控大小/分辨率吗?
答案 0 :(得分:25)
不,它不能。 PHP在服务器上运行,因此它无法检测客户端设置,除非您采取特定的客户端步骤将信息传递给服务器上的PHP脚本。
答案 1 :(得分:5)
请注意我们中的一些人喜欢我们的浏览器非最大化。也许你最好不要试图检测浏览器大小而不是屏幕分辨率。我认为JS要么做得非常相似,但我实际上并不知道情况就是这样。
另外,盲人的屏幕阅读器的分辨率是多少?
答案 2 :(得分:4)
您必须将PHP与JavaScript结合使用,例如this example:
$url = $_SERVER['PHP_SELF'];
if( isset($HTTP_COOKIE_VARS["res"]) )
$res = $HTTP_COOKIE_VARS["res"];
else {
?>
<script language="javascript">
<!--
go();
function go()
{
var today = new Date();
var the_date = new Date("August 31, 2020");
var the_cookie_date = the_date.toGMTString();
var the_cookie = "res="+ screen.width +"x"+ screen.height;
var the_cookie = the_cookie + ";expires=" + the_cookie_date;
document.cookie=the_cookie
location = '<?echo "$url";?>';
}
//-->
</script>
<?php
}
//Let's "split" the resolution results into two variables
list($width, $height) = split('[x]', $res);
//Take the width and height minus 300
$tb_width = $width-300;
$tb_height = $height-300;
//Make the table
print("<table align=center border=1 width=" .$tb_width . " height=" . $tb_height . " >
<tr><td align=center>Your screen resolution is " . $width . " by " . $height . ".<br>
The width/height of this table is " . $tb_width . " by " . $tb_height . ".</td></tr>
</table>");
答案 3 :(得分:2)
我也在寻找这个,但发现这些答案都没有真正回答这个问题!实际上,PHP无法知道屏幕分辨率,因为它在服务器端运行。由于该信息不会在HTTP环境变量中传递,因此我们需要另一条路径。 Javascript是另一种选择。
以下示例是一个PHP页面,用于检查HTTP请求中传递的resolution
变量。如果它没有找到resolution
变量,那么它会在页面上创建一个简短的JavaScript来传递该变量,并在重定向中将高度和宽度返回到自身。当然,在重定向后再次加载页面时,所有变量都将被设置,PHP将知道分辨率。
<?php
if(!isset($_GET['resolution'])) {
echo "<script language=\"JavaScript\">
<!--
document.location=\"$PHP_SELF?resolution=1&width=\"+screen.width+\"&height=\"+screen.height;
//-->
</script>";
} else {
// Code to be displayed if resolution is detected
if(isset($_GET['width']) && isset($_GET['height'])) {
echo "Width: " . $_GET['width'] . " and Height: " . $_GET['height'] . "<br />";
} else {
echo "Resolution not detected.";
}
}
?>
最后我发现这是一个非常令人不满意的解决方案。它有效,但它很难看,增加了URL并需要重定向。不过,它可能会激励某人发布更好的答案。仅供参考,信用到期,这个答案的灵感来自this post。
答案 4 :(得分:2)
我知道这不是最好的答案,所以不用担心。
<script>
/*
JAVASCRIPT IS ON TELL THE DEVELOPER#
*/
// GET BROWSER WIDTH AND HEIGHT
var bh=screen.height;
var bw=screen.width;
window.location="?doSubmit=do&js=yes&bh="+bh+"&bw="+bw+"";
</script>
<noscript>
<!--
JAVASCRIPT IS OFF TELL THE DEVELOPER#
-->
<meta http-equiv='refresh' content='0;url=?doSubmit=do&js=off&bh=off&bw=off'>
</noscript>
<?
if($_GET["doSubmit"]=="do"){
// VARS
$bh=$_GET["bh"];
$bw=$_GET["bw"];
$js=$_GET["js"];
// PRINT HTML ?>
<table>
<tr><td><strong>Browser Width:</strong></td><td><?=$bw;?>px</tr>
<tr><td><strong>Browser Height:</strong></td><td><?=$bh;?>px</tr>
<tr><td><strong>JavaScript Detection (y/n):</strong></td><td><?=$js;?></tr>
</table>
答案 5 :(得分:1)
有些人需要浏览器大小才能进行移动开发。在某些情况下,这是必不可少的信息。
使用WURFL和WALL可以解决这个问题,因为大多数手机都不支持JS。
答案 6 :(得分:0)
使用JS无法获取监视器大小,您必须进行轮询:)
答案 7 :(得分:0)
注意,JS可以检查浏览器的窗口大小,但是这个大小包括用户工具栏,滚动条等...浏览器中的实际工作区域取决于那些工具栏大小。