比较用户提交的数据,然后发回响应

Comparing user submitted data, then sending a response back

这里是新手

我为这个神秘的标题道歉,我是 Laravel 和 PHP 的新手。

作为大学项目的一部分,我正在使用 Laravel Jetstream 和 LiveWire 构建一个 CTF 应用程序。

用户将提交他们找到的标志,我希望将该数据与数据库条目进行比较。 如果他们的标志是正确的,我希望显示:

<span
    class="inline-flex px-2 text-xs font-semibold leading-5 text-green-800 bg-green-100 rounded-full">
    Flag Correct!
</span>

如果他们弄错了,我希望显示这个:

<span
    class="inline-flex px-2 text-xs font-semibold leading-5 text-red-800 bg-red-100 rounded-full">
    Flag Incorrect
</span>

我已经准备好大部分代码,但我不确定如何获得与 LiveWire 一起使用的逻辑或路由。 我有一个控制器,FlagVerification 有一些逻辑,但我主要停留在如何在控制器和视图之间移动这些信息,以及如何使用 LiveWire 更新用户看到的内容

到目前为止,这是我的控制器:

<?php

namespace App\Http\Controllers;

use App\Models\Flag;

class FlagVerification extends Controller
{
    function VerifyFlags()
    {
        // Get first flag from db
        $flag1 = Flag::where('id', 1)->value('flags');

        // Compare User input with $flag1
        // TODO: Pass whatever user entered from table to controller?
        if ($flag1 == 'OBR{1FA528F41E8945C}') {
            return $flag1;
        // If User entered wrong flag, update view.
        } else {
            // Manipulate table to show "incorrect flag"
            return 'Incorrect Flag';
        }
    }
}

这就是前端的样子,它可能有助于更好地了解目标 imgur[.]com/a/U8ItJuT

我知道这个问题很多,所以任何指点或提示都将不胜感激

谢谢!

首先,如果你想通过id获取数据,使用: Flag::find($id);

在你的代码中,你检查的不是用户数据,而是检查数据库中的数据:OBR{1FA528F41E8945C}

如果你想用你的数据库数据检查来自用户的数据,你的代码应该是这样的:

class FlagVerification extends Controller
{
    public function VerifyFlags(Illuminate\Http\Request $request)
    {
        $flag = Flag::find(1);

        // use $flag->name or property name from your model
        if ($flag->name === $request->flag) {
            return view('path_to_your_response_blade', ['flag' => $flag]);
        } else {
            // return to view flag false or smth else
            return view('path_to_your_response_blade', ['flag' => false]);
        }
    }
}

这是你的 html:

<input type="radio" name="flag" value="test" placeholder="flag1">

希望我已经回答了你的问题:)