通过android验证RESTAPI(PHP)会话

通过android验证RESTAPI(PHP)会话,php,android,Php,Android,我已经创建了一个RESTAPI,它正在处理一个会话。我想通过android验证该会话 我的ANDROID ACCESS API代码 URL url = new URL("xxx.xxx.x.x./dir/file_name.php"); HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("POST")

我已经创建了一个RESTAPI,它正在处理一个会话。我想通过android验证该会话

我的ANDROID ACCESS API代码

        URL url = new URL("xxx.xxx.x.x./dir/file_name.php");
        HttpURLConnection connection = (HttpURLConnection)url.openConnection();
        connection.setRequestMethod("POST");
        DataOutputStream streamWriter = new   DataOutputStream(connection.getOutputStream());
        streamWriter.write(parameters.getBytes());
        streamWriter.flush();
        streamWriter.close();

        InputStreamReader streamReader = new InputStreamReader(connection.getInputStream());
        BufferedReader br = new BufferedReader(streamReader);
        String line;
        StringBuilder sb = new StringBuilder();

        while ((line = br.readLine()) != null) {
            sb.append(line);
        }
        br.close();
        webResult= sb.toString();
        return webResult;
我的PHP端代码,用于检查该会话(它在浏览器中完美工作)

//从这里开始PHP标记

$sessionID=“某物”

if(!isset($_会话['Id'])|$$sessionID!=$_会话['Id'])) {

}否则{

echo "Session is active.";
}


//在这里关闭PHP标签

我不确定您是否可以使用Android会话。会话的概念是使用浏览器的cookies来存储会话ID,我认为Android应用程序不允许cookies

但是,您可以做类似的事情:

1。您可以在PHP中生成一个随机字符串

可以使用生成随机字符串

2。将其存储在数据库中某个有过期时间的位置

基本上,如果希望会话持续1小时,则存储的过期时间等于now+1小时

3。将其发送到应用程序并将其存储在应用程序中的某个位置

现在,您可以创建一个随机字符串,它是会话ID。它存储在应用程序端和服务器端

现在,只要您想存储会话变量,就可以检索会话ID(您从应用程序发送它,然后检查它是否存在于服务器端)。然后使用以下属性将变量存储在数据库中:
Session\u id、var\u name、var\u value

然后,当您想要检索会话变量时,您可以通过session\u id和var\u name来实现

然后,基本上,如果会话id已过期(当前日期>过期日期),则删除具有此会话id的所有变量,并生成一个新的空变量


希望这有帮助:-)

我不确定您是否可以使用Android会话。会话的概念是使用浏览器的cookies来存储会话ID,我认为Android应用程序不允许cookies

但是,您可以做类似的事情:

1。您可以在PHP中生成一个随机字符串

可以使用生成随机字符串

2。将其存储在数据库中某个有过期时间的位置

基本上,如果希望会话持续1小时,则存储的过期时间等于now+1小时

3。将其发送到应用程序并将其存储在应用程序中的某个位置

现在,您可以创建一个随机字符串,它是会话ID。它存储在应用程序端和服务器端

现在,只要您想存储会话变量,就可以检索会话ID(您从应用程序发送它,然后检查它是否存在于服务器端)。然后使用以下属性将变量存储在数据库中:
Session\u id、var\u name、var\u value

然后,当您想要检索会话变量时,您可以通过session\u id和var\u name来实现

然后,基本上,如果会话id已过期(当前日期>过期日期),则删除具有此会话id的所有变量,并生成一个新的空变量


希望这有帮助:-)

请帮助我感谢www in and vance请帮助我感谢www in and vance实际上我正在寻找只有授权用户才能访问的api安全性。您有其他api安全解决方案吗?。感谢您提供上述帮助。您可以做的第一件事不是完全使用此解决方案,而是仅在用户经过身份验证时生成会话id(并在用户注销时删除会话)。如果您想要一个现有的解决方案,也许可以尝试OAuth。实际上,我正在寻找只有授权用户才能访问的api安全性。您有其他api安全解决方案吗?。感谢您提供上述帮助。您可以做的第一件事不是完全使用此解决方案,而是仅在用户经过身份验证时生成会话id(并在用户注销时删除会话)。如果您想要现有的解决方案,可以尝试OAuth
echo "Invalid session";
die();
echo "Session is active.";