使用PHP获取屏幕分辨率
你不能用纯PHP做。你必须用JavaScript来完成。有几篇关于如何做到这一点的文章。
本质上,你可以设置一个cookie,或者你甚至可以做一些Ajax发送信息到PHP脚本。如果你使用jQuery,你可以做这样的事情:
的jQuery:
$(function() {
$.post('some_script.php', { width: screen.width, height:screen.height }, function(json) {
if(json.outcome == 'success') {
// do something with the knowledge possibly?
} else {
alert('Unable to let PHP know what the screen resolution is!');
}
},'json');
});
PHP(some_script.php)
<?php
// For instance, you can do something like this:
if(isset($_POST['width']) && isset($_POST['height'])) {
$_SESSION['screen_width'] = $_POST['width'];
$_SESSION['screen_height'] = $_POST['height'];
echo json_encode(array('outcome'=>'success'));
} else {
echo json_encode(array('outcome'=>'error','error'=>"Couldn't save dimension info"));
}
?>
所有这一切真的是基本的,但它应该让你到某个地方。通常屏幕分辨率不是你真正想要的。你可能会更感兴趣的是实际的浏览器的视口,因为它实际上是在页面呈现的大小...
凯尔你找到了一种获取浏览器查看端口尺寸的方法吗? – 2012-09-18 17:33:10
@KyleFarris ...我不是很好jQuery和json ..它将如何代码就像是波纹管 '$(function(){ $ .post('header.php',{width:800px },函数(JSON){ 如果(json.outcome == '成功'){ 头,800px.php //做可能是知识的东西 ?}其他{ 的header.php; }} ” json'); });' – 2013-11-26 03:32:26
我不同意你关于视图的决议,但是,答案很好!我想这个信息可能用于统计和禁止。我更喜欢用户代理和IP。屏幕分辨率也不错! – volter9 2014-05-08 02:58:19
使用JavaScript(screen.width
和screen.height
IIRC,但我可能是错的,有一段时间没有做过JS)。 PHP不能做到这一点。
唯一的方法是使用JavaScript,然后获取JavaScript发布到您的PHP(如果你真的需要有res服务器端)。然而,如果他们将javascript关闭,这将完全落在它的脸上。
PHP只能在服务器端工作,而不能在用户主机上工作。使用JavaScript或jQuery获取此信息并通过AJAX或URL发送(?x = 1024 & y = 640)。
这将是?x = 1024&y = 640 – EFraim 2009-10-01 15:06:58
我认为您需要使用&y而不是?y – 2017-10-30 15:52:10
PHP是一种服务器端语言 - 它只在服务器上执行,并将生成的程序输出发送到客户端。因此,没有“客户端屏幕”信息可用。
也就是说,你可以让客户端通过JavaScript告诉你他们的屏幕分辨率是什么。写一个小脚本发送给你screen.width和screen.height - 可能通过AJAX,或者更可能用最初的“跳转页面”找到它,然后重定向到http://example.net/index.php?size=AxB
尽管作为用户说话,更喜欢你设计一个网站来流畅地处理任何屏幕分辨率。我浏览了不同大小的窗户,大多数没有最大化。
+1作为详细解释,而不是最大化您的浏览器窗口。我的浏览器窗口通常大约800像素宽;根据我的屏幕分辨率调整自己的网页是我存在的祸根! – 2009-10-01 15:06:37
直接是不可能的,但...
我写这个简单的代码来在PHP会话上保存屏幕分辨率以在图像库上使用。
<?php
session_start();
if(isset($_SESSION['screen_width']) AND isset($_SESSION['screen_height'])){
echo 'User resolution: ' . $_SESSION['screen_width'] . 'x' . $_SESSION['screen_height'];
} else if(isset($_REQUEST['width']) AND isset($_REQUEST['height'])) {
$_SESSION['screen_width'] = $_REQUEST['width'];
$_SESSION['screen_height'] = $_REQUEST['height'];
header('Location: ' . $_SERVER['PHP_SELF']);
} else {
echo '<script type="text/javascript">window.location = "' . $_SERVER['PHP_SELF'] . '?width="+screen.width+"&height="+screen.height;</script>';
}
?>
好的解决方案 - 实施并且效果很好。我也拉了http_user_agent(尽管它并不总是被填充/准确)。希望有一种方法可以获取实际的浏览器查看端口大小。 (而不是屏幕资源)。 – 2012-09-18 17:31:46
我喜欢这个解决方案。简单 - 重定向到URL中大小的页面。对于阅读此内容的任何人 - 您可以获取浏览器视口大小 - 请参阅http://*.com/questions/8794338其中说(使用jquery)使用.height()和.width()函数。 – Ukuser32 2016-02-24 17:02:41
良好的解决方案,但请您可以为我们提供一个使用cookie而不是会话吗? – 2016-08-04 16:53:21
我发现在我的html里面使用CSS在我的php里为我做了诡计。
<?php
echo '<h2 media="screen and (max-width: 480px)">';
echo 'My headline';
echo '</h2>';
echo '<h1 media="screen and (min-width: 481px)">';
echo 'My headline';
echo '</h1>';
?>
如果屏幕大小为480px或更小,则会输出较小的标题。 所以没有必要通过使用JS或类似的任何变量。
这不起作用 – 2016-08-04 16:57:01
您可以尝试RESS(响应式设计+服务器端组件),请参阅本教程:
在PHP中没有斯坦达到这个信息的方法。但是,如果您正在使用第三方解决方案,则有可能。对于PHP 51Degrees设备探测器有你需要的属性:
为您提供了宽度和用户的像素屏幕的高度。为了使用这些属性,您需要从sourceforge下载检测器。然后,你需要包括以下两行的文件/文件,它是需要检测屏幕的高度和宽度:
<?php
require_once 'path/to/core/51Degrees.php';
require_once 'path/to/core/51Degrees_usage.php';
?>
其中path /到/核心的路径,你从SourceForge下载的“核心”目录。最后,使用性质:
<?php
echo $_51d['ScreenPixelsHeight']; //Output screen height.
echo $_51d['ScreenPixelsWidth']; //Output screen width.
?>
请记住这些变量可以包括“未知”的价值有些时候,当设备无法确定。
JS:
$.ajax({
url: "ajax.php",
type: "POST",
data: "width=" + $("body").width(),
success: function(msg) {
return true;
}
});
ajax.php
if(!empty($_POST['width']))
$width = (int)$_POST['width'];
这可以很容易地使用Cookie来完成。此方法允许页面根据屏幕高度和宽度(或浏览器视图端口高度和宽度值)检查存储的cookie值,如果它们不同,则会重置cookie并重新加载页面。代码需要允许用户首选项。如果关闭持久性cookie,请使用会话cookie。如果这不起作用,你必须使用默认设置。
- 的Javascript:检查高度&宽度设置cookie
- 的Javascript:如果设置,检查是否screen.height & screen.width(或任何你想要的)饼干
- 的Javascript的电流值相匹配:如果cookie未设置或与当前值不匹配,则: a。 Javascript:创建持久性或会话cookie,命名(例如)'shw'为当前屏幕的值。高亮& screen.width。 b。 Javascript:使用window.location.reload()重定向到SELF。当它重新加载时,它将跳过第3步。
- PHP:$ _COOKIE ['shw']包含值。
- 继续阅读关于本页PHP
例如,,我正在使用网上找到的一些常用cookie功能。确保setCookie返回正确的值。 我把这段代码放在head标签后面。显然这个函数应该在一个源文件中。
<head>
<script src="/include/cookielib.js"></script>
<script type=text/javascript>
function setScreenHWCookie() {
// Function to set persistant (default) or session cookie with screen ht & width
// Returns true if cookie matches screen ht & width or if valid cookie created
// Returns false if cannot create a cookies.
var ok = getCookie("shw");
var shw_value = screen.height+"px:"+screen.width+"px";
if (! ok || ok != shw_value) {
var expires = 7 // days
var ok = setCookie("shw", shw_value, expires)
if (ok == "") {
// not possible to set persistent cookie
expires = 0
ok = setCookie("shw", shw_value, expires)
if (ok == "") return false // not possible to set session cookie
}
window.location.reload();
}
return true;
}
setScreenHWCookie();
</script>
....
<?php
if(isset($_COOKIE["shw"])) {
$hw_values = $_COOKIE["shw"];
}
<script type="text/javascript">
if(screen.width <= 699){
<?php $screen = 'mobile';?>
}else{
<?php $screen = 'default';?>
}
</script>
<?php echo $screen; ?>
你不能在JavaScript中设置一个php变量。 – japetko 2016-10-13 10:50:00
为了解释这个问题:首先php在服务器端执行ie。在到达浏览器之前,而JavaScript在到达浏览器后执行。 – reverbnation 2016-10-14 06:44:07
解决方案:使可扩展的网络设计......(我们应该怎么说呢适当的网页设计)格式化应该做的客户端,我也希望信息,将向下传递到服务器,但信息是仍然有用(每行有多少种对象)但仍然网页设计应该是流畅的,因此每个行元素都不应该被放入表格中,除非它的实际表格(和数据会缩放到它的单个单元格),如果您使用div您可以将每个元素堆叠在一起,并且窗口应该在合适的位置“断开”该行。 (只需要适当的CSS)
这是通过JavaScript,而不是PHP来完成的。 PHP只能在服务器端执行。虽然嗅探用户的屏幕分辨率,但请记住,并非所有用户都是全屏浏览! – sjstrutt 2009-10-01 15:03:19
一种CSS设计渲染大小的方式:http://*.com/questions/19186243/javascript-to-get-screen-width-in-php-variable – 2014-07-31 10:06:25
使用JavaScript获取此信息并通过AJAX发送 – Elyor 2015-08-13 11:29:17