簡體   English   中英

PHP表單中的Laravel CSRF令牌

[英]Laravel csrf token within PHP form

我創建了一個小助手功能來接受朋友的請求。 該函數位於一個PHP文件中(很明顯),看起來像這樣:

(僅相關部分)

foreach($friendrequests as $request){
    $username = DB::table('users')->where('id', $request->sender_id)->value('name');
    $notify .= '<li>';
    $notify .= '<strong><a href="/profile/'.$username.'">'.$username.'</a></strong><br>möchte dein Freund sein';
    $notify .= '<form action="/friend/request/accept/'.$request->sender_id.'" method="post"><input type="hidden" name="_token" value="csrf_field();"><button type="submit">Akzeptieren</button></form>';
    $notify .= '<form action="/friend/request/deny/'.$request->sender_id.'" method="post"><input type="hidden" name="_token" value="csrf_field();"><button type="submit">Ablehnen</button></form>';
    $notify .= '</li>';
}

我知道這有點亂。 我是Laravel的新手。

無論如何,有兩種形式。 一種用於接受,另一種用於拒絕請求。 現在,我正在努力的是csrf令牌。

如何在PHP幫助程序文件中實現此功能? 我知道如何在刀片模板中使用它們,但是我似乎無法使其在助手功能中起作用。

嘗試將_token隱藏元素添加到您的代碼中,如下所示。 您還可以使用csrf_token() 幫助函數在表單內添加表單令牌。

foreach($friendrequests as $request){
        $username = DB::table('users')->where('id', $request->sender_id)->value('name');
        $notify .= '<li>';
        $notify .= '<strong><a href="/profile/'.$username.'">'.$username.'</a></strong><br>möchte dein Freund sein';
        $notify .= '<form action="/friend/request/accept/'.$request->sender_id.'" method="post"><input type="hidden" name="_token" value="'.Session::token().'"><button type="submit">Akzeptieren</button></form>';
        $notify .= '<form action="/friend/request/deny/'.$request->sender_id.'" method="post"><input type="hidden" name="_token" value="'.Session::token().'"><button type="submit">Ablehnen</button></form>';
        $notify .= '</li>';
    }

您已經添加了字段,但是需要將csrf_token()值連接到字符串。 現在,它將按csrf_token意義將csrf_token打印為值。

嘗試這個:

$notify .= '<form action="/friend/request/accept/'.$request->sender_id.'" method="post"><input type="hidden" name="_token" value="' . csrf_token() . '"><button type="submit">Akzeptieren</button></form>';

此外, csrf_field()函數將回顯帶有令牌值的輸入字段到當前請求, csrf_token()將僅顯示令牌值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM