比较用户提交的数据,然后发回响应
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">
希望我已经回答了你的问题:)
这里是新手
我为这个神秘的标题道歉,我是 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">
希望我已经回答了你的问题:)