【问题标题】:Comparing user submitted data, then sending a response back比较用户提交的数据,然后发回响应
【发布时间】:2021-07-21 23:11:36
【问题描述】:

这里是新手

我为这个神秘的标题道歉,我是 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

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

谢谢!

【问题讨论】:

    标签: php laravel controller jetstream


    【解决方案1】:

    首先,如果要通过 id 获取数据,请使用: 标志::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">
    

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

    【讨论】:

      猜你喜欢
      • 2015-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-12
      • 1970-01-01
      • 2013-08-15
      • 2013-06-25
      相关资源
      最近更新 更多