我正在修改 Opencart,其中包含几个由 PHP 页面表示的模块。但是,我的问题适用于涉及以下内容的任何情况。因此,无需将此作为 opencart 特定问题。
我希望在一个模块/PHP 页面完成工作后改变它的重定向方式。
我所做的是修改有问题的模块以处理会话变量以修改要重定向到的 URL。
自定义页面
if ( !$this->customer->isLogged() ) {
$this->session->data['redirect'] = $this->url->link('account/blah');
$this->redirect($this->url->link('account/register', '', 'SSL'));
}
已修改重定向的页面
if (isset($this->session->data['redirect'])) {
$this->redirect($this->session->data['redirect']);
}
它有效,但我觉得它不安全。可以做些什么来改进它?
PS:以下是在 opencart 中实际处理重定向的方式。
protected function redirect($url, $status = 302) {
header('Status: ' . $status);
header('Location: ' . str_replace(array('&', "\n", "\r"), array('&', '', ''), $url));
exit();
}