我已经创建了一个rest,它正在处理会话。我想通过android验证这个会话。
我用于访问API的ANDROID代码
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 =“某物”;
session_start();
如果(!isset( $_SESSION‘’Id‘)\ $sessionID != $_SESSION’‘Id’){
echo "Invalid session";
die();
}否则{
echo "Session is active.";
}
//关闭这里的PHP标记
发布于 2017-02-24 06:19:46
我不确定你能不能使用Android的会话。会话的想法是使用浏览器的cookie来存储会话ID,我认为Android应用程序不允许cookie。
但是,您可以做的是类似的事情:
1.在中生成一个随机字符串
可以使用This function生成随机字符串。
2.使用过期时间将其存储在数据库的某个地方。
基本上,如果您希望会话持续1小时,则存储一个现在等于+1小时的过期时间。
3.将其发送到应用程序并将其存储在应用程序中的某个地方
现在,您将如何使用一个随机字符串,即会话ID。它存储在App端和服务器端。
现在,只要您想要存储会话变量,就可以检索会话ID (从应用程序中发送它,然后检查它是否存在于服务器端)。然后,使用以下属性将变量存储在数据库中:Session_id, var_name, var_value
。
然后,当您想检索会话变量时,可以通过session_id和var_name来实现。
然后,基本上,如果session_id已经过期(当前日期>到期日期),您将删除这个会话id中的所有变量,并生成一个新的空变量。
希望这会有所帮助:)
https://stackoverflow.com/questions/42440244
复制