我有一个存储方法,返回如下:
return redirect()->route('hasil.transaksi', ["data" => $data]);
路线如下:
ROUTE::GET('hasil-transaksi', [KasirRajalController::class, 'hasilTransaksi'])->name('hasil.transaksi');
方法返回如下:
public function hasilTransaksi(Request $request)
{
$data["info"] = DB::select("EXEC spx_kasirirj_GetData
@sdata = 2,
@where = '" . $request->no_transaksi . "'
");
dd($data);
}
存储后的URL如下:
http://127.0.0.1:8000/hasil-transaksi?data%5B0%5D%5B%5D=0000260&data%5B0%5D%5Bno_transaksi%5D=KRJ22010001
我想捕获no_transaksi=KRJ22010001以粘贴在上面返回的方法中。但是我不明白,结果是空的。
在此处输入图像描述
求你了,救命?
完整dd($request(:在此处输入图像描述
在您的代码中有很多东西需要检查:
return redirect()->route('hasil.transaksi', ["data" => $data]);
这将执行GET重定向,因此$data
对象将作为GET参数添加并编码(从对象到字符串(。这就是为什么您的URL唯一参数是";数据";(http://127.0.0.1:8000/hasil-transaksi?data=
(,然后是编码数据。
您解码的URL数据看起来像这个data[0][]=0000260&data[0][no_transaksi]=KRJ22010001
。
这种格式看起来有点奇怪,但我没有足够的代码来确认。你可以这样做(假设你不需要0000260
参数[应该键入](:
return redirect()->route('hasil.transaksi', ["no_transaksi" => $data[0]['no_transaksi']]);
这应该会生成一个正确的URL?no_transaksi=xx
,因此$request->no_transaksi
应该可以工作(您也应该清理(。
@where = '" . $request->no_transaksi . "'
正如@Joundill所提到的,原始查询的这一部分是向SQL注入开放的。如果不使用Eloquent、Models或Requests,则至少应该对no_transaksi
请求参数值进行清理和验证。