[英]How can I detect browser and OS of user and use this to dynamically modify my MySQL database query from a PHP page
如果用户在特定操作系统上使用特定浏览器,则我需要能够运行mysql查询并省略某些结果。 我的数据库查询是通过AMFPHP服务进行的,并且我有一个javascript browserDetect脚本,可以用来获取用户浏览器和操作系统。
理想情况下,我想在用户到达我的页面时运行browserDetect脚本,然后将其存储在PHP会话变量中,但是我看不到如何将javascript vars传递给PHP会话。 这将允许我的数据库查询脚本查找会话并相应地修改查询。 我还尝试在AMFPHP脚本中包含浏览器检测脚本,但这没有用-我意识到这是服务器端还是客户端的问题。
还有什么其他解决方案对我有用?
谢谢
为什么不只用PHP来实现呢? PHP还能够获取浏览器和操作系统。
$_SERVER['HTTP_USER_AGENT']
包含浏览器和操作系统...
就像@thedom所说的那样,只需在PHP中使用$_SERVER['HTTP_USER_AGENT']
。 您的用户代理(除非用户修改)将包含浏览器,浏览器版本和操作系统。 这是我的:
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.15 (KHTML, like Gecko) Chrome/10.0.612.1 Safari/534.15
但是,如果要使用javascript,则必须执行与实现ajax登录相同的操作。
我基本上将其放在脚本的顶部(login.php)
session_id($_POST['PHPSESSID']);
session_start();
这将在页面中运行javascript以检测会话(index.php)
$sessionid = ($_COOKIE['PHPSESSID']) ? $_COOKIE['PHPSESSID'] : $_GET['PHPSESSID'];
<script type="text/javascript">var session = "$sessionid";</script>
然后我发布到另一个脚本(login.php)(在这种情况下要通过ajax登录)
$.post("ajax/login.php",PHPSESSID=" + session);
使用JQuery。
您可以将browserDetect的javascript的结果设置为javascript cookie,PHP可以从中读取cookie
另一个解决方案是让javascript发出一个包含OS / Browser的ajax请求,但是更好的方法可能是解析用户代理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.