我正在开发网站和移动(iPhone / iPad,Android)应用程序版本
网站和移动应用访问相同的网址。例如http://xxx.xxx.xxx/register.php
因此,正如您所知,在移动应用上,PHP没有SESSION概念
因此,我需要区分对单个URL上的任何请求的Web浏览器请求或应用程序请求移动设备的内容
注意!!!!使用USER AGENT属性来区分移动Web浏览器不是问题
如何区分请求来自浏览器(PC /移动浏览器)的请求?或从移动应用程序?
而且,我希望在请求时不要使用$ _GET []变量来解决这个问题
请帮帮我
亲切的问候
答案 0 :(得分:1)
您可以使用用户代理字符串来区分不同的浏览器和应用。在PHP中,您可以通过$_SERVER['HTTP_USER_AGENT']
检索它。
答案 1 :(得分:0)
我认为你在这里弄错了几件事。会话仅仅是基于cookie的工件,但不是将原始数据发送到客户端PHP中的PHP,只需发送一个ID。
您可以将PHP设置为通过GET处理会话,但您的应用必须处理此问题。您可以为移动应用和普通用户提供不同的端点。您也可以(在大多数环境中)将用户代理设置为PHP应用程序可以处理的内容。
无论如何,如果您未在移动应用中实施COOKIES(或相关会话),则必须使用自定义标题,GET或POST。
答案 2 :(得分:0)
你的方式错了。有做支持会话的移动浏览器以及禁用会话的桌面浏览器。要检测移动浏览器,唯一的方法是使用用户代理字符串,但这可以很容易地修改。更好的解决方案是实际检测是否启用了会话。你可以用JavaScript做到这一点。在主PHP脚本中启动会话并设置某种变量:
session_start();
$_SESSION['var'] = "test";
然后你可以发送一个AJAX请求来查看它是否真的开始了。这是一个jQuery示例:
var session_check = $.ajax({
url: "/ajax-check-session.php",
type: "get"
});
var sessions = true;
session_check.done(function (session_response, textStatus, jqXHR){
if (session_response != "enabled") {
sessions = false;
}
if (sessions == false) {
// sessions are disabled
}
else {
// sessions are enabled
}
});
和ajax-check-session.php:
session_start();
if (count($_SESSION) == 0) {
echo "Sessions are disabled";
}
echo "enabled";
但是请记住,有意识地禁用会话的人中有很大一部分也故意禁用了javascript。如果您决定使JS成为必要(这通常是一个坏主意),您可以使用<noscript>
标记处理此问题,告诉人们他们需要启用JS才能使用您的网站,然后当他们启用JS时,你可以处理禁用的会话。