浏览器”;像“;return按钮,包含会话


Browser "like" return button, with sessions

im正在尝试创建一个类似浏览器的返回按钮。

为此,我创建了下面的代码,将请求::标头('ferer')推送到我的会话::get('martBacklinks')

到目前为止,与会话中的最新请求不同的每个Request::header('ferer')都将被推送到会话数组中。下一件事我需要做,这就是我的困境。当我点击返回按钮时,我当然会被重定向到会话数组中的最后一个url。这里唯一的错误是,我需要确保当点击返回按钮时,它不应该运行代码将Request::header('ferer')推送到会话中

    View::composer('backend.*', function($view)
    {   
        // If Session[smartBacklinks] is set.
        if(Session::has('smartBacklinks')){
            // Get the last item in Session array 
            $slice = array_slice(Session::get('smartBacklinks'), -1, 1);
            // Check if Request::header('referer') is equal to the $slide[0]
            if(Request::header('referer') != $slice[0]){
                // Check if Request::header('referer') is empty
                if(Request::header('referer') != '') Session::push('smartBacklinks', Request::header('referer'));
            }
        // If session[smartBacklinks] is not set. - Set
        }else {
            Session::put('smartBacklinks', [Request::header('referer')]);
            $slice = array_slice(Session::get('smartBacklinks'), -1, 1);
        }
        Session::save();
        $view->with('smartBacklinks', $slice[0]);
    });

提前谢谢,我希望有人能理解我的问题。

您可以尝试为返回按钮使用一个带有隐藏值的表单,并在每次请求时检查该值。如果提交了返回表单,则不会运行引用人推送代码。

例如

if(empty($_POST['hidden_return'])){
// your push code
}else{
// the return button was clicked. Handle here
}

html会像这个一样

<form method="post">
  <input type="hidden" name="hidden_return" value="some_random_value" />
  <input type="submit" value="Click Here To Go Back!" />
  </form>