繁体   English   中英

如何检测用户的浏览器和操作系统,并使用它来动态修改PHP页面中的MySQL数据库查询

[英]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

详细信息: 如何使用PHP读取Javascript cookie

另一个解决方案是让javascript发出一个包含OS / Browser的ajax请求,但是更好的方法可能是解析用户代理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM