Php 重定向回无脂肪框架中的上一个路由

Php 重定向回无脂肪框架中的上一个路由,php,fat-free-framework,Php,Fat Free Framework,在无脂框架中是否有某种方法可以重定向回以前的路由 类似于laravel中的重定向->返回()。不,没有。如果查看Laravel源代码,back()函数将重定向到RefererHTTP头中包含的URL或会话中存储的最后一个URL 由您决定选择哪种策略,但两者都可以通过F3轻松实现 1)参考标题 $f3->reroute($f3->get('SERVER.HTTP_REFERER')) 优点:易于实现 缺点:如果未设置标题,它将重定向到当前页面。如果标题设置为其他域,它将重定向到其他网

在无脂框架中是否有某种方法可以重定向回以前的路由


类似于laravel中的
重定向->返回()

不,没有。如果查看Laravel源代码,
back()
函数将重定向到
Referer
HTTP头中包含的URL或会话中存储的最后一个URL

由您决定选择哪种策略,但两者都可以通过F3轻松实现

1)参考标题

$f3->reroute($f3->get('SERVER.HTTP_REFERER'))
优点:易于实现

缺点:如果未设置标题,它将重定向到当前页面。如果标题设置为其他域,它将重定向到其他网站

为了避免重定向到其他域,您需要检查referer域是否与网站域匹配:

$referer=$f3->get('SERVER.HTTP_REFERER');
if (preg_match('/^https?:\/\/'.preg_quote($f3->HOST,'/').'\//',$referer)) {
  // The referer URL belongs to the website domain
  $f3->reroute($referer);
} else {
  // The referer URL belongs to another domain (or is empty)
  // take some action, for example reroute to current page:
  $f3->reroute();
  // or reroute to homepage
  $f3->reroute('/');
}
2)会话URL

// end of index.php
$f3->run();
$f3->set('SESSION.previousUrl',$f3->REALM);

// redirect code:
$f3->reroute($f3->get('SESSION.previousUrl'));
优点:重定向到其他域没有风险

缺点:强制使用会话。如果您运行的是后台办公室或应用程序已经使用了会话,这很好,但是如果您运行的是前台网站,它将阻止页面在客户端被缓存

3)查询字符串

还有第三种选择,在某些特定情况下可以使用:在查询字符串中传递原始URL

<a href="/target?origin=/origin">Click here></a>

没有。如果查看Laravel源代码,
back()
函数将重定向到
Referer
HTTP头中包含的URL或会话中存储的最后一个URL

由您决定选择哪种策略,但两者都可以通过F3轻松实现

1)参考标题

$f3->reroute($f3->get('SERVER.HTTP_REFERER'))
优点:易于实现

缺点:如果未设置标题,它将重定向到当前页面。如果标题设置为其他域,它将重定向到其他网站

为了避免重定向到其他域,您需要检查referer域是否与网站域匹配:

$referer=$f3->get('SERVER.HTTP_REFERER');
if (preg_match('/^https?:\/\/'.preg_quote($f3->HOST,'/').'\//',$referer)) {
  // The referer URL belongs to the website domain
  $f3->reroute($referer);
} else {
  // The referer URL belongs to another domain (or is empty)
  // take some action, for example reroute to current page:
  $f3->reroute();
  // or reroute to homepage
  $f3->reroute('/');
}
2)会话URL

// end of index.php
$f3->run();
$f3->set('SESSION.previousUrl',$f3->REALM);

// redirect code:
$f3->reroute($f3->get('SESSION.previousUrl'));
优点:重定向到其他域没有风险

缺点:强制使用会话。如果您运行的是后台办公室或应用程序已经使用了会话,这很好,但是如果您运行的是前台网站,它将阻止页面在客户端被缓存

3)查询字符串

还有第三种选择,在某些特定情况下可以使用:在查询字符串中传递原始URL

<a href="/target?origin=/origin">Click here></a>