PHP会话在Angular 6项目中不起作用
我使用angular 6作为前端,PHP作为后端WAMP,我想建立一个登录系统。当某人输入有效凭证时,我希望他被重定向到 我有auth.php,当有人输入有效的用户名/密码时,它会设置会话变量,然后verify.php检查会话变量是否已设置。 虽然应用程序将我重定向到主页,但verify.php无法查看会话变量 这些是我的档案: login-form.component.ts 它从html中获取用户名和密码并将其发送到服务 auth.service.ts getSomeData在user.service.ts中实现 有没有办法解决会话中的此问题,或者我必须使用另一种方法签入会话PHP会话在Angular 6项目中不起作用,php,angular,session,localhost,angular6,Php,Angular,Session,Localhost,Angular6,我使用angular 6作为前端,PHP作为后端WAMP,我想建立一个登录系统。当某人输入有效凭证时,我希望他被重定向到 我有auth.php,当有人输入有效的用户名/密码时,它会设置会话变量,然后verify.php检查会话变量是否已设置。 虽然应用程序将我重定向到主页,但verify.php无法查看会话变量 这些是我的档案: login-form.component.ts 它从html中获取用户名和密码并将其发送到服务 auth.service.ts getSomeData在user.ser
谢谢。您不能在一个域上设置会话而在另一个域上使用,从您的代码可以清楚地看出您使用的是两个不同的端口,如果您想使用会话,javascript和PHP必须在同一个域/端口上 如果您想使用不同的域/端口,则必须找到其他方法,如基于令牌的身份验证,即在auth.php中成功登录后创建一个令牌,该令牌将保存在数据库中,并在成功响应中发回该令牌 在您的应用程序中,将该令牌保存到存储器或任何您喜欢的位置,并使用该令牌从PHP API检索使用数据 因此,当您在user.service.ts中进行调用时,您的URL应该包含令牌
YOUR_TOKEN = '1234'//received after successfull login and saved in local storage
return this.http.get<myData>('http://localhost/angular6-app/api/verify.php?token='+YOUR_TOKEN);
p、 注销时,请确保过期或从angulare存储和数据库中删除令牌。您不能在一个域上设置会话并在另一个域上使用,从您的代码可以清楚地看出,您使用的是两个不同的端口,如果要使用会话,javascript和PHP必须在同一域/端口上 如果您想使用不同的域/端口,则必须找到其他方法,如基于令牌的身份验证,即在auth.php中成功登录后创建一个令牌,该令牌将保存在数据库中,并在成功响应中发回该令牌 在您的应用程序中,将该令牌保存到存储器或任何您喜欢的位置,并使用该令牌从PHP API检索使用数据 因此,当您在user.service.ts中进行调用时,您的URL应该包含令牌
YOUR_TOKEN = '1234'//received after successfull login and saved in local storage
return this.http.get<myData>('http://localhost/angular6-app/api/verify.php?token='+YOUR_TOKEN);
p、 s注销时,请确保过期或从angulare存储和数据库中删除令牌。一旦构建ngApp并使其生效,您将获得会话值,并将应用程序和API保留在同一目录中,您可以使用上述相同方法。因为您将使用相同的端口/域访问API。一旦构建ngApp并使其生效并将应用程序和API保持在同一目录中,您将获得会话值,您可以使用上述相同的方法。因为您将使用相同的端口/域访问API。谢谢您的建议!通过将令牌保存到存储器,您指的是本地存储器或会话存储器?您可以使用angulare中的本地或会话存储器,这取决于您的需要,也可以存储用户的完整会话,而不是创建令牌,这只是给您一个想法。现在一切都取决于你如何使用用户数据谢谢你的建议!通过将令牌保存到存储器,您指的是本地存储器或会话存储器?您可以使用angulare中的本地或会话存储器,这取决于您的需要,也可以存储用户的完整会话,而不是创建令牌,这只是给您一个想法。现在,这完全取决于您如何使用用户数据
include 'config.php';
header('Access-Control-Allow-Origin: http://localhost:4200');
$postdata = file_get_contents("php://input");
if(isset($postdata) && !empty($postdata)) {
$request = json_decode($postdata);
$username = $request->username;
$password = $request->password;
$sql = "select * from user where username = '$username'";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
if($row['username'] == $username && password_verify($password, $row['password'])) //kanei verify me to hash pou exei ginei
{
$_SESSION['username'] = $username;
$_SESSION['loggedin'] = true;
?>
{
"success": true,
"message": "You have logged in"
}
<?php
}
else {
?>
{
"success": false,
"message": "Invalid credentials"
}
<?php
}
}
?>
<?php
session_start();
header('Access-Control-Allow-Origin: http://localhost:4200');
if (isset($_SESSION['loggedin'])) {
?>
{
"success": true,
"message": "You have the right."
}
<?php
}
else {
?>
{
"success": false,
"message": "You DONT have the right."
}
<?php
}
?>
export class HomeComponent implements OnInit {
message = "Loading..."
constructor(private user: UserService) { }
ngOnInit() {
this.user.getSomeData().subscribe(data => {
this.message = data.message;
})
}
getSomeData() {
return this.http.get<myData>('http://localhost/angular6-app/api/verify.php');
}
YOUR_TOKEN = '1234'//received after successfull login and saved in local storage
return this.http.get<myData>('http://localhost/angular6-app/api/verify.php?token='+YOUR_TOKEN);
$token = $_GET['token'];
// check if token is valid in your database and send response