如何从 Laravel 中的表单获取并传递数据,并使用 SQL 数据库中的数据检查其有效性?

问题描述 投票:0回答:1

我是 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””,以及如何使用数据库验证数据。感谢您的帮助!

php html laravel forms validation
1个回答
0
投票

只需使用微风包进行 Laravel 基本登录

在项目根目录中打开cmd

  • php artisan 微风:安装
  • php 工匠迁移
  • npm 安装
  • npm 运行开发

它处理基本的用户注册和身份验证。

© www.soinside.com 2019 - 2024. All rights reserved.