所以,我正在尝试为网络应用程序创建登录功能。
登录由 JSON 接口(interface)处理。用户输入用户名和密码并进行检查,如果正确,JSON 接口(interface)会发回一个 token 。我想这就是 session 应该开始的地方。
<script>
$(document).ready(function(){
$("#loginForm").validate({
rules: {
username: {
required: true,
digits: true
},
password: {
required: true
}
},
submitHandler: function(form) {
data = JSON.stringify({
"jsonrpc": "2.0",
"method": "login",
"params": {
"params": {
"username": $('#username').val(),
"password": $('#password').val()
}
}
});
$.ajax({
url:"http://domain.local:1234/trip",
type:"POST",
crossDomain: true,
dataType: "json",
data : data,
headers: {
'Content-Type': "application/json; charset=utf-8"
},
success: function(data){
if(data.result.token != null) {
window.location.href = "functions/login.php?token=" + data.result.token;
}
else $("#result").html("Invalid username and/or password.");
}
});
return false;
}
});
});
</script>
我的login.php
是 session 处理应该发生的地方(对吗?)。如果可能的话,我不想使用cookie。到目前为止,这是我唯一拥有的东西(这是我第一次尝试 session )。
<?php
session_start();
$token = $_POST['token'];
?>
当用户登录时,我需要将它们发送到overview.php。当存在 token 时,应该从 login.php
文件完成此操作,还是应该从 index.php
完成此操作,而不是前往 login.php
?
此外,如何检查用户访问的页面上是否有事件 session ?我需要每个页面上的 token 才能对 JSON 接口(interface)进行新调用。
最后,当用户需要注销时,我想我只会将他们带到 logout.php
或类似的东西并在那里结束 session ?
非常感谢您的帮助!
最佳答案
这些是可用于简单(不安全)登录系统的基本设置。
登录.php:
<?php
session_start();
if(isset($_GET['token']) && !empty($_GET['token']))
$_SESSION['token']== $_GET['token'];
if(isset($_SESSION['token'] && [OTHER CHECKS YOU MIGHT WANT TO DO TO SEE WETHER HE IS LOGGED IN]){
header('Location: overview.php');
}
?>
注销.php
<?php
session_start();
unset($_SESSION['token']);
//redirect to desired page
?>
此外,在您只想向登录用户显示的每个页面上,您需要添加 session_start();
并检查他是否仍然使用 $_SESSION[' 登录 token ']
。如果他不再登录,您需要将他重定向到其他地方。
关于php - PHP 中的 session 与 JSON 和 AJAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13156260/