【发布时间】:2017-07-28 19:33:09
【问题描述】:
我有一个问题我已经尝试解决了很长时间。我已经阅读了有关 PHP 会话的课程,并提出了使用 localstorage 的建议,但无济于事
问题:
我正在使用 angularJS 和 PHP 后端,我有 2 个视图,一个“login.html”和另一个“info.html”,2 个控制器(一个用于登录功能,另一个用于选择用户数据)。我设法进行了身份验证阶段,但是对于第二步,我希望当用户进行身份验证时,它将被重定向到其他视图(info.html),其中将显示该用户的所有信息。如何存储来自登录功能的数据并在第二个控制器(第二个 Web 服务)中使用它
login.php
<?php
session_start();
$_SESSION['token'] = true;
$data = json_decode(file_get_contents("php://input"));
$connect = mysqli_connect("localhost", "root", "", "test");
if(count($data) > 0)
{
$Email=mysqli_real_escape_string($connect, $data->Email);
$mdp=mysqli_real_escape_string($connect, $data->mdp);
$query = 'SELECT * FROM `client` WHERE (EmailClient = "'.$Email.'" AND mdp= "'.$mdp.'")';
$q = mysqli_query($connect , $query);
if(mysqli_num_rows($q) > 0 )
{
$token = md5($Email.time()."51395+81519851");
$query = "UPDATE client SET token = '".$token."' WHERE EmailClient = '".$Email."'";
mysqli_query($connect , $query);
$_SESSION["logged_in"] = true;
$_SESSION["token"] = $token;
$_SESSION["Email"] = $Email;
$result['token'] = $token;
$resultstring=json_encode($result);
$resultstring=str_replace("null", '""', $resultstring);
echo $resultstring;
exit;
}
?>
loginCtrl
app.controller('loginCtrl', function($scope, $location,$state,$http,$window){
$scope.submit = function()
{
data = {
'Email' : $scope.Email,
'password' : $scope.password
};
$http.post('http://localhost/deb/login.php', data)
.success(function(data, status, headers, config,result)
{
console.log(data);
$state.go('info');
}
})
.error(function(data, status, headers, config, result)
{
console.log('error');
});
}
});
信息控制:
app.controller('infoCtrl', function($scope, $http,$state,$filter){
$scope.loadColis = function(){
$http.get("http://localhost/deb/info.php")
.success(function(data){
$scope.names = data;
});
}
info.php
<?php
session_start();
$connect = mysqli_connect("localhost", "root", "", "test");
$output = array();
$query = "SELECT Name,Adresse FROM client WHERE token = '".$_SESSION['token']."'";
$result = mysqli_query($connect, $query);
if(mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_array($result))
{
$output[] = $row;
}
echo json_encode($output);
}
?>
我不知道如何获取用户认证数据,请问我该怎么做?
提前致谢
【问题讨论】:
-
你好。请查看bobby-tables.com 并了解 SQL 注入以及如何防止它们。实际上你的代码根本不安全。
-
使用会话存储或 cookie 在整个应用程序中访问您经过身份验证的数据。
-
@Indhu,你能告诉我我该怎么做吗!
-
@Twinfriends 谢谢你,我正在咨询你的建议,我会处理这个。谢谢
标签: php angularjs authentication