用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2487|回复: 8
收起左侧

将屏幕分辨率传给PHP,转换后为0

[复制链接]
发表于 2014-2-13 16:53:12 | 显示全部楼层 |阅读模式
PHP复制代码
 
                $row = '<script type="text/javascript">document.write(window.screen.width)</script>';
                echo $row . "<br />";
                echo intval($row);
 
复制代码


第一个输出的是 1440   第二个输出的是 0.  为什么?
发表于 2014-2-13 19:59:05 | 显示全部楼层
这个竟然能输出1440?
你是怎么做到的 js 和 PHP 混合的。。。。。。
发表于 2014-2-13 22:20:09 | 显示全部楼层
Hex 发表于 2014-2-13 19:59
这个竟然能输出1440?
你是怎么做到的 js 和 PHP 混合的。。。。。。

这么写我也觉得很奇怪

不过测试的结果的确是这样的

输出1440是没有问题的

但是转成int后就变成0了

不知道为什么

其实我的目的是想在服务器端得到客户端屏幕的宽度

@Hex 大神有什么建议么?
发表于 2014-2-13 23:06:21 | 显示全部楼层
我自己想到一个是用cookie。在客户端用javascript设置一个cookie,在服务器端用php读取。
发表于 2014-2-14 12:25:46 | 显示全部楼层
dolphin836 发表于 2014-2-13 22:20
这么写我也觉得很奇怪

不过测试的结果的确是这样的

哈哈,我知道为什么可以显示数字了。

原因就是:这个数字是由浏览器显示的,而不是由 PHP 输出的,PHP 只输出了 <script>...</script>这部分代码,然后浏览器就运行了这个代码,然后你就能看到数字了。

这也就解释了为什么 intval($row); 的结果是 0 了,因为实际上 $row 是一个字符串,也就是 <script>...</script> 所以转换成数字就是  0。

你如果想让 PHP 接收到 JS 的数据,必须想办法把 JS 数据发送给 PHP,比如用 AJAX。

PHP 与 JS 不能混合使用。

 楼主| 发表于 2014-2-14 12:27:09 | 显示全部楼层
使用cookie的方式有一个问题

就是第一次打开网站的时候无法得到cookie值
发表于 2014-2-14 14:15:22 | 显示全部楼层
dolphin 发表于 2014-2-14 12:27
使用cookie的方式有一个问题

就是第一次打开网站的时候无法得到cookie值

你说的没错。

所以你这个需求可能就有问题,屏幕分辨率的信息本身就不应该让 PHP 来处理,这应该是在浏览器端处理的事情。

 楼主| 发表于 2014-2-18 10:14:17 | 显示全部楼层
Hex 发表于 2014-2-14 14:15
你说的没错。

所以你这个需求可能就有问题,屏幕分辨率的信息本身就不应该让 PHP 来处理,这应该是在浏 ...

是的。是因为在自己对javascript不够熟悉,就想用PHP来处理。看了下别人的瀑布流原理,服务器端应该只负责提供数据,显示在前台通过javascript来控制才是对的。谢谢Hex大神。
发表于 2014-2-18 10:32:51 | 显示全部楼层
dolphin 发表于 2014-2-18 10:14
是的。是因为在自己对javascript不够熟悉,就想用PHP来处理。看了下别人的瀑布流原理,服务器端应该只负 ...

哈哈,原来是做瀑布流~高端~~

本版积分规则