2015-06-17 3 views
1

ПРОБЛЕМАПеренаправление петля

Я не понимаю, почему я получаю цикл перенаправления. Но я могу определить, где это происходит, но я не могу объяснить, почему. Это линия self::redirect("?" . self::$queryString), которая дает мне проблемы. Если я удалю его, я смогу хорошо перемещаться, но когда я верну его, он снова даст мне ошибку. (Не знаю, если это проблематично линия, но я думаю, что это так, когда я удалить эту строку он больше не делает петлю перенаправлять.)

if (self::curPage() == "/clan.php" && isset($_GET['clan'])) { 
    self::$queryString = $_SERVER['QUERY_STRING']; 
} elseif (self::curPage() == "/clan/profile.php") { 
    self::redirect("?" . self::$queryString); 
} 

ЧТО Я ХОЧУ

То, что я хочу в основном это добавить предыдущие $queryString (переменные GET). И всякий раз, когда пользователь переходит с страницы /clan.php, они будут перенесены на новый URL-адрес, а затем предыдущие $queryString будут объединены в конце URL-адреса.

Если у вас есть способ решить это путем усовершенствований, нового метода или каким-либо другим способом, я бы очень признателен. Дальнейшие вопросы можно задать по комментариям, и я постараюсь ответить на них как можно быстрее и лучше.

ЧТО Надумали

  • Изменения a (link tag) и изменение Href значения текущего/предыдущей переменную GET/параметр. Не курите, как это сделать, хотя, возможно, что-то вроде этого. Это единственная часть, о которой я думал до сих пор.

    var currentGET = <?php echo $_SERVER['QUERY_STRING']; ?>; 
    if (window.location.href == '/clan.php') { 
        $('a').attr('href', window.location.href + "?" + currentGET); 
    } 
    

EXTRA

Это curPage() функция!

public static function curPage(){ 
    $parts = parse_url(self::curPageURL()); 
    return $parts["path"]; 
} 
+0

Можете ли вы добавить ошибку? – didando8a

+1

'/ clan.php' и'/clan/profile.php' подразумевают два отдельных HTTP-запроса, но перед перенаправлением вы, похоже, не сохраняете прежнюю строку запроса. Вы используете сеанс где угодно? Является ли self: curPage() 'возвращает URI сценария или строку запроса URI _and_? –

+0

@ didando8a Chrome только дает мне эту ошибку. 'ERR_TOO_MANY_REDIRECTS'. – RepeaterCreeper

ответ

1

две строки под определенно вызывает цикл перенаправления:

} elseif (self::curPage() == "/clan/profile.php") { 
    self::redirect("?" . self::$queryString); 

Причина он делает это потому, что вы проверяете, если текущий URI является /clan/profile.php и если вы поменяете он сам с строкой запроса, а затем снова запустите проверку, даже если строка запроса присутствует.

Он должен был бы быть что-то вроде этого, чтобы предотвратить бесконечное редирект:

} elseif (self::curPage() == "/clan/profile.php" && false == **QUERY STRING CONDITION**) { 
    self::redirect("?" . self::$queryString); 

**QUERY STRING CONDITION** надо заменить на какой-то проверки строки запроса, который указывает URI является правильным, и вы не хотите перенаправить их.