Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Erro to many redirects

Boa tarde,

Estou tendo esse probleminha. o Index é carregado várias vezes, dando erro de cookies. Como posso resolve-lo?

https://gist.github.com/MrMMs2/a4f9e964f8118054f1669693781ed79a

Como importo imagem para cá?

6 respostas

Oi Marcelo, você pode usar uma tag img, eu acho. De todo jeito eu vi seu pedaço de código... como está no index, tem alguma condição que ta sempre inválida fazendo com que você caia nesse loop... acho que o melhor é você dar uma debugada para entender o motivo dessa condição.

Como debuga? Sou novo nisso. =/

Boa Alberto!

Em relação ao Debugar estamos te explicando no outro post Marcelo.

solução!

Oi Marcel, tudo bom?

Para debugar a gente tem algumas opções em php. Você pode utilizar um plugin chamado xdebug ou pode simplesmente exibir o que você quer na tela e parar seu script.

No segundo caso, temos algumas opções de comandos para exibirem dados na tela, um deles é o echo, mas o echo é mais voltado para textos. Um bem comum é o var_dump ou o print_r. A diferença entre eles é a formatação do resultado apenas =)

Por exemplo, no seu código, a gente usa a variavel $PAGE, que provavelmente(para ter certeza precisariamos ver o arquivo) vem do require_once('lib.php'):

// resto do código
// aqui verificamos o que há dentro de $PAGE
var_dump($PAGE);
// aqui paramos o sistema para conseguir analisar
die();
//HTTPS is required in this page when $CFG->loginhttps enabled
$PAGE->https_required();

No seu caso, com o problema dos redirects, fica dificil descobrir só olhando o script porque há muito código estruturado, muita coisa vem de outros scripts. O problema pode estar nesse ou não.

Eu recomendaria você focar no momento exato em que o problema ocorre e procurar no seu código o trecho referente a ele. Por exemplo, se o problema ocorre ao realizar o login, podemos verificar pontos no script que realizam redirects nesse sentido. Por exemplo:

// login page requested session test
if ($testsession) {
    if ($testsession == $USER->id) {
        if (isset($SESSION->wantsurl)) {
            $urltogo = $SESSION->wantsurl;
        } else {
            $urltogo = $CFG->wwwroot.'/';
        }
        unset($SESSION->wantsurl);
        redirect($urltogo);
    } else {
        // TODO: try to find out what is the exact reason why sessions do not work
        $errormsg = get_string("cookiesnotenabled");
        $errorcode = 1;
    }
}

Aqui temos um request de teste, tenta adicionar um var_dump dentro dele, pra ver se é ai que estamos entrando em loop. Algo como:

// login page requested session test
if ($testsession) {
    if ($testsession == $USER->id) {
        if (isset($SESSION->wantsurl)) {
            $urltogo = $SESSION->wantsurl;
        } else {
            $urltogo = $CFG->wwwroot.'/';
        }
        unset($SESSION->wantsurl);
    var_dump("CHEGOU AQUI!");
    die();
        redirect($urltogo);
    } else {
        // TODO: try to find out what is the exact reason why sessions do not work
        $errormsg = get_string("cookiesnotenabled");
        $errorcode = 1;
    }
}

Assim, se na sua tela aparecer a string 'CHEGOU AQUI!' é porque esse ponto do código está sendo acessado. E assim, vamos debugando, a gente para o script em varios pontos até descobrir onde está o problema =)

Repare que no seu script tem bastante comentario indicando problemas na implementação:

        // TODO: try to find out what is the exact reason why sessions do not work

O desenvolvedor que fez esse código deixou esse comentario para apontar que a sessão "não funciona" de alguma forma. Talvez seja legal procurar uma outra fonte também =)

Espero ter ajudado.

Abraço e bons estudos

Boa André!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software