重定向过多

时间:2018-09-19 13:13:56

标签: php

我的页面出现问题,导致重定向过多。您有解决的想法吗? ; ERR_TOO_MANY_REDIRECTS

  if (MODE_VENTE_PRIVEE == 'true') {
    if ( (!$this->customer->isLoggedOn())  && (!strstr($_SERVER['QUERY_STRING'], 'Account&Login')) ) {
      if (
        (!strstr($_SERVER['QUERY_STRING'],'Account&Create')) &&
        (!strstr($_SERVER['QUERY_STRING'],'Account&PasswordForgotten')) &&
        (!strstr($_SERVER['QUERY_STRING'],'Account&CreatePro.php')) &&
        (!strstr($_SERVER['QUERY_STRING'],'Info&contact.php'))
      ) {
        $CLICSHOPPING_NavigationHistory->setSnapshot();

        HTTP::redirect('index.php?Account&LogIn');

      }
    }
  }

功能

public static function redirect($url, $http_response_code = null) {
  if ((strstr($url, "\n") === false) && (strstr($url, "\r") === false)) {
    if ( strpos($url, '&') !== false ) {
      $url = str_replace('&', '&', $url);
    }

    header('Location: ' . $url, true, $http_response_code);
  }

  exit;
}

1 个答案:

答案 0 :(得分:2)

问题是您要重定向到Account&LogIn,并且要检查Account&Login(它们是完全不同的字符串),因此陷入了循环。 试试这个:

if (MODE_VENTE_PRIVEE == 'true') {
  if ( (!$this->customer->isLoggedOn())  && (!strstr($_SERVER['QUERY_STRING'], 'Account&Login')) ) {
    if (
      (!strstr($_SERVER['QUERY_STRING'],'Account&Create')) &&
      (!strstr($_SERVER['QUERY_STRING'],'Account&PasswordForgotten')) &&
      (!strstr($_SERVER['QUERY_STRING'],'Account&CreatePro.php')) &&
      (!strstr($_SERVER['QUERY_STRING'],'Info&contact.php'))
    ) {
      $CLICSHOPPING_NavigationHistory->setSnapshot();

      HTTP::redirect('index.php?Account&Login');

    }
  }
}