Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android+PHP-保持用户登录_Php_Android - Fatal编程技术网

Android+PHP-保持用户登录

Android+PHP-保持用户登录,php,android,Php,Android,我想让用户登录到使用java no kotlin的android应用程序 问题是:在我的php代码中,在每个特定于用户的操作中,例如:获取用户配置文件、用户消息、编辑等,我检查用户会话id,该id在登录时保存在android的SQLite中,但该会话不会保留在服务器中,如果不使用,它会在2小时后被删除,并且不会返回唯一的id,当一个会话被删除时,下一个使用相同id登录的用户将返回给他,因此两小时后第一个用户将作为不同的用户XD登录 那我该怎么办?我是否要保存用户名和密码,并在每次检查时登录或 登

我想让用户登录到使用java no kotlin的android应用程序

问题是:在我的php代码中,在每个特定于用户的操作中,例如:获取用户配置文件、用户消息、编辑等,我检查用户会话id,该id在登录时保存在android的SQLite中,但该会话不会保留在服务器中,如果不使用,它会在2小时后被删除,并且不会返回唯一的id,当一个会话被删除时,下一个使用相同id登录的用户将返回给他,因此两小时后第一个用户将作为不同的用户XD登录

那我该怎么办?我是否要保存用户名和密码,并在每次检查时登录或

登录检查的某些部分:

检查用户是否登录的PHP代码:

session_id($_POST['conKey']);
session_start();
//1- connect and check if connection key is correct
if (Model::connect() == false) {
    throw new Exception('error, could not connect to the database');
} else if (!isset($_SESSION['conKey'])) {
    throw new Exception('no connection found');
} else if ($_SESSION['conKey'] != $_POST['conKey']) {
    throw new Exception('no connection found');
}
这就是我在登录时用php返回会话id的方式

session_start();

$conKey = session_id();
if (empty($conKey)) {
    throw new Exception('Faild to start session, please make sure your app is allowed to store sessions');
}
$_SESSION['conKey'] = $conKey;
echo json_encode(['connectionKey' => $conKey]);

Java代码第一部分从SQLite登录时发送conKey保存的会话id使用共享首选项存储用户的用户名和密码。您还可以为成功登录生成JWT令牌,并将JWT令牌保存在SharedReferences中

我建议在成功登录后使用不同的方法,而不是会话ID生成令牌。将此令牌保存在数据库中,现在将生成的令牌发送到android客户端。对于每个API命中检查令牌是否匹配。除非删除令牌,否则android客户端将始终登录。

那么这不是编码问题。服务器设置为在特定时间段后自动超时会话。您必须在php配置中增加会话超时。我建议在成功登录生成令牌后使用不同的方法,而不是会话ID。保存在数据库中,发送到android客户端。对于每个API命中,检查令牌是否匹配。除非删除令牌,否则android客户端将始终登录:@Nakul谢谢,这真的很有帮助^ ^我将把它作为答案添加进去。如果有帮助的话。