Valor de retorno em login_form não está funcionando

9

Eu tenho um formulário de login na seguinte página:

site.com/en/downloads

“en” é a user_language (e é armazenada como tal em uma var global)

quando eu faço login, o formulário me redireciona para:

site.com/downloads

Embora deva me redirecionar para a URL com minha user_language

Eu tentei várias coisas, mas o valor de o valor de retorno sempre é ignorado.

  • return = ”{site_url} / {user_language} / downloads”
  • return = ”{site_url}”
  • return = “http://site.com”
  • return = “http://google.com”
  • return = “sobre / index”

todos eles redirecionam para site.com/downloads.

o código que está sendo produzido (para o último exemplo) se parece com isto:

<form method="post" action="http://site.com/"  >
<div class='hiddenFields'>
<input type="hidden" name="XID" value="9fae3b1b5fcf882776da6638706595af73a7b15d" />
<input type="hidden" name="ACT" value="7" />
<input type="hidden" name="RET" value="about/index" />
<input type="hidden" name="site_id" value="1" />
</div> 

Eu tenho um .htaccess que se parece com isso:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L] 

ATUALIZAÇÃO:

Eu tentei usar o freemember como sugerido, mas o problema continua o mesmo:

Configurei o valor de retorno para "about / index", mas ainda estou sendo redirecionado para site.com/downloads.

O código gerado pelo freemember parece sólido, então algo deve estar substituindo o valor de retorno.

<form method="post" action="http://site.com/downloads"  >
<div class='hiddenFields'>
<input type="hidden" name="XID" value="d9483688fbf63d9ea47e89a66e074b99f5b8465c" />
<input type="hidden" name="ACT" value="18" />
<input type="hidden" name="_params" value="wvkEsN96mPfmlhgerM2ppxGbMmiLJrz0Ntn7apKer/rmBpQaUozvSM0TvkVN66QlX/ptCM1IQGsuZuw7X3mzlOMCFIUyYFpbZy5h7nfPJMiHLdpqXqwBFOiA/zcNW0GKAIicv4JPAS2mfHKQE+mb2Ct0L+jhGz0NlSdELuMOeqQPJJ3B7U90D5w/sKTeaX5zaOMSvKJ4LZ7xP0Dn+UxE9g==" />
<input type="hidden" name="return_url" value="about/index" />
<input type="hidden" name="site_id" value="1" />
</div>
    
por janvl 31.10.2012 в 09:26
fonte

3 respostas

3

Eu finalmente percebi isso.

Aparentemente, eu ainda estava usando um pequeno plugin chamado "Twomile Login Redirect", que sequestrou meu código de login (mesmo quando estava desativado, eu tinha que removê-lo)

Então tudo está bem agora.

Lição aprendida: remover plugins antigos:)

    
por janvl 05.11.2012 / 10:10
fonte
1

Quando você usa o parâmetro return="{user_language}/about/index" como mencionado acima, ele exibe corretamente a variável RET no código HTML? Que tal simplesmente adicionar seu próprio campo de entrada oculto RET ? Basta colocar isso dentro do seu formulário de login em algum lugar:

<input type="hidden" name="RET" value="{user_language}/about/index" />

De acordo com a especificação HTML, se duas entradas tiverem o mesmo name , a última substituirá as anteriores, portanto, não há problema em fazer isso dessa maneira.

Alternativamente, você pode tentar usar o Freemember plugin - você pode ter mais sorte com o URL de retorno, e você pode evitar o desagradáveis páginas de redirecionamento cinza também. </shameless-plug>

    
por Adrian Macneil 31.10.2012 / 10:46
fonte
1

eu poderia estar olhando para isto superficcialmente, mas você não poderia usar

return =”{segment_1}/downloads”
    
por Jelle Dijkstra 03.11.2012 / 21:15
fonte