CodeIgniter のフォームで CSRF を有効にする方法は知っていますが、この機能を CodeIgniter のクラシック リンクに実装する方法がわかりません (たとえば、管理領域でプライベート メッセージや投稿などを追加/削除するため)。
今、私はこのようなものを使用しています:
見る
<?php echo anchor('account/delete_private_message/'.$obj->pmID, 'delete mesage', array('onclick' => 'return confirm(\'Do you really want to delete this private message?\');', 'class' => 'delete-message-button')); ?>
コントローラ
function delete_private_message($pmID = '')
{
$deleted_pm = $this->account_model->delete_pm($pmID);
if($deleted_pm)
{
$this->session->set_flashdata('status', 'PM was deleted successfully');
}
else
{
$this->session->set_flashdata('status', 'Error');
}
redirect('account/private_messages');
}
モデル
function delete_pm($pmID)
{
$return = 0;
if(!empty($pmID))
{
$this->db->where('pmID', $pmID);
$result = $this->db->delete('private_messages');
}
return $result;
}
ユーザーがポップアップで [OK] をクリックすると、メッセージは削除されます。
問題は、トークンをリンクとユーザーのセッションに追加して検証する方法などです。これを適切に機能させる方法がわかりません。
編集:生成されたトークンをリンクの最後に追加する必要があると思います:
アカウント/delete_private_message/1239/dfdf6e7re67a6e87r6e87r69876bn3
値 dfdf6e7re67a6e87r6e87r69876bn3 も現在のユーザーのセッションにあり、コントローラーでそれらを確認します。とはいえ、具体的にどうすればいいのかわからない。だから、どんな助けも大歓迎です。