Laravel 针对 "refresh" 页面的保护功能

Laravel protect function against "refresh" page

当我打开网页时,laravel 通过我的自定义 class 和功能将我发送到手机上的短信,但是当我按 F5 或刷新网页时可能会阻止发送?

controller

public function index()
{
    $phoneNumber = $user['mobile_phone'];
    $smsMessage= $user['smsMessage'];
    SendTextMessage::SendMessage($phoneNumber, $smsMessage);

    return view('welcome');
}

如果您只在用户访问欢迎页面时才发送消息,那么您可以在会话中设置一个标志并检查会话值是否不存在才发送消息。

use Session;
public function index()
{
    if(!Session::has('message_sent')){
       SendTextMessage::SendMessage($phoneNumber, $smsMessage);
       Session::put('message_sent', true);
     }
    
    return view('welcome');
}

尝试:

public function index()
{
   if(url()->previous()!=url()->current()){
      SendTextMessage::SendMessage($phoneNumber, $smsMessage);
   }

   
    return view('welcome');
}

URL历史存储在session中,可以作为页面刷新的解决方案。