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



这里的新手

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

作为大学项目的一部分,我正在使用LaravelJetstream和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 AppHttpControllers;
use AppModelsFlag;
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获取数据,请使用:标志::find($id(;

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

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

class FlagVerification extends Controller
{
public function VerifyFlags(IlluminateHttpRequest $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">

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

相关内容

最新更新