我是 Laravel 新手。我有一个用 Laravel 编写的管理员登录表单、一个模型 Admin、AdminLoginController 和 HTML。我想从中获取数据,并检查 SQL 数据库中的管理数据。例如,一个人使用他/她的电子邮件和密码登录表单。点击提交按钮后,数据将与MySQL数据库(PHPMyadmin)中的数据进行比较。如果登录成功,它将被重定向到“主页”视图。
<form
action="{{
url('home/admin/',[$info->id])
}}"
method="post"
role="form"
style="
width: 900px;
display: flex;
flex-direction: row;
align-items: flex-end;
"
>
@method('post')
{{ csrf_field() }}
<div
class="input-label"
style="
flex: 1;
display: flex;
flex-direction: column;
"
>
<label for="email">Email:</label>
<label for="password">Password:</label>
</div>
<div
class="input-box"
style="
flex: 6;
display: flex;
flex-direction: column;
"
>
<input type="text" id="email" name="email" step="any" min="0" max="100" value="{{$info->email}}"/>
<input type="text" id="password" name="password" step="any" min="0" max="100" value="{{$info->password}}"/>
</div>
<div>
<input type="submit" value="Submit"/>
</div>
</form>
我初始化了数据变量$info:
<?php
$info = [];
?>
这是我的控制器:
public static function loginCheckAdmin(Request $request): bool
{
$email = $request->email;
$password = $request->password;
if (Admin::query()->find($email) === null)
{
return false;
}
else
{
$fetchedPassword = Admin::query()->where('email',$email)->get('password');
if ($fetchedPassword === $password)
{
return true;
}
else
{
return false;
}
}
}
public static function redirectAdminToHome(Request $request)
{
if (self::loginCheckAdmin($request) === true)
{
$email = $request->email;
$id = Admin::query()->where('email',$email)->get('id');
redirect()->to('home/admin'.$id);
self::updateAdminLoginTime($request);
}
else
{
self::denyUserAccess($request);
}
}
public static function denyUserAccess(Request $request)
{
echo("Invalid login process!");
}
public static function updateAdminLoginTime(Request $request)
{
$email = $request->email;
$lastLoginTime = Carbon::now()->toDateTimeString();
Admin::query()->where('email',$email)->update(['last_login_time',$lastLoginTime]);
}
所以我想问如何初始化$info,因为服务器总是说“尝试读取数组上的属性“id””,以及如何使用数据库验证数据。感谢您的帮助!
只需使用微风包进行 Laravel 基本登录
在项目根目录中打开cmd
它处理基本的用户注册和身份验证。