Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gremio10

[Resolvido] Problema em redirecionar via localhost

Recommended Posts

Então, estou fazendo testes localhost para voltar a pagina de origem, bom, digamos que minha url é esta :

 

http:/localhost/testes/testeA/1-meu-carro

 

ele fica no meu login

 

localhost/testes/login/http:/localhost/testes/testeA/1-meu-carro

 

e quando eu dou um print_r na pagina de validação do usuário, ele me retorna a url correta

 

http:/localhost/testes/testeA/1-meu-carro

 

mas quando ele coloca na barra de endereço, ele coloca isso

 

localhost/localhost/testes/testeA/1-meu-carro

 

usando o chrome e usando o mozilla

 

 

O que está acontecendo ?

 

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php

   require_once "class/class.sql.php";
   require_once "class/class.function.php";

   error_reporting( E_ALL | E_STRICT );
   ini_set( "display_errors", "on" );

   $Sql = new Sql();
   $func = new Functions();

   $fields = isset( $_POST ) ? ( array_search( "", $_POST ) ? NULL : $_POST ) : NULL ;
   $_url_return = isset( $_GET["url"] ) ? $_GET["url"] : NULL ;    

   if( !is_null( $fields ) ){

       $_user = $Sql->findFirst( "User", array( "select" => array( "id", "name" ), "conditions" => "login = ? AND password = ?" ), array( $fields["login"], md5( $fields["password"] ) ) );

       if( $_user ){

           session_start();
           $_SESSION["id_user_session"] = $_user["id"];
           $_SESSION["name_user_session"] = $_user["name"];

           if( $_url_return == "" ){
               header( "Location: {$Sql->getUrl()}" );
           }else{
               header( "Location: {$_url_return}" );
           }

       }else{

           $func->cookies( array( "errorLogin" => "Login ou senha inexistentes" ) );
           header( "Location: {$Sql->getUrl()}login/" );

       }

   }else{

       $func->cookies( array( "errorLogin" => "Campos login e senha obrigatórios" ) );
       header( "Location: {$Sql->getUrl()}login/" );

   }

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois é Andrey, também achei estranho ele me retornar apenas uma barra, mas mesmo assim, se eu retirar o

 

localhost/testes/login/

localhost/testes/login/http:/localhost/testes/testeA/1-meu-carro

http:/localhost/testes/testeA/1-meu-carro

 

ele acessa...

Compartilhar este post


Link para o post
Compartilhar em outros sites

kara, você mandando http:/ , não sei se é problema de algun's navegadores

mais é errado, o certo é http:// :P , se deu errado

tenta outros meios de redirecionamento , ai sim você vai saber se ta na sua url

ou nos navegadores ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que ocorre na verdade é que o navegador detecta o erro e corrige adicionando mais uma barra, mas nem todos podem fazer isso.

 

Acho que seria melhor você trabalhar só com o resto da url, sem o host, ou seja, apenas a url relativa. E para se assegurar que o navegador irá interpretar o endereço corretamente, use a tag base no head da página:

 

<head>
<base href="http://localhost/" />
</head>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não confie nesse HTTP_REFERER, os navegadores nem sempre dão o valor correto, melhor fazer assim para pegar a url:

$_url_return = "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, pior que testei isso agora, funciona assim:

 

foi para a pagina de compra, clicou em comprar, ele tem um validaCompra, que tem um sessaoLogado, ou seja, só acessa o validaCompra logado.

 

sessaoLogado.php

 

<?php
session_start();
ob_start();

require_once "class/class.sql.php";
$Sql        = new Sql();

$_url_return = isset( $_GET["url"] ) ? $_GET["url"] : NULL;

if( !isset( $_SESSION["id_user_session"] ) && !isset( $_SESSION["name_user_session"] ) ){
   header( "Location: {$Sql->getUrl()}login/{$_url_return}" );
}
?>

 

sempre lembrando que estou usando url amigavel :)

 

e quando ele faz esse redirecionamento, automaticamente ele perde o segundo //, e se eu forçar o // ele dá erro em variáveis do meu validaLogin, que seria para onde iria, login -> validaLogin...

 

também tentei com o

[REQUEST_URI] => /carros/confirmacao/1-produto-com-o-nome-de-rejuveleca

 

mas ai deu o mesmo erro nas variáveis...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Todo meu .htaccess ...

 

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^promocao/([0-9a-zA-Z-]*)$ second.php?promo=$1
RewriteRule ^confirmacao/([0-9a-zA-z-/:]*)$ offer.php?url=$1
RewriteRule ^recentes/$ recent.php
RewriteRule ^login/([0-9a-zA-z-/:]*)$ login.php?url=$1
RewriteRule ^logout/$ logout.php
RewriteRule ^cadastro/$ register.php
RewriteRule ^session/([0-9a-zA-z-/:]*)$ loginValidate.php?url=$1
RewriteRule ^perfil/$ perfil.php
RewriteRule ^novaSenha/$ newPass.php
RewriteRule ^editarConta/$ editData.php
RewriteRule ^insereCadastro/$ insertRegister.php
RewriteRule ^editarContaAcao/$ editDataAction.php
RewriteRule ^finalizarCompra/([0-9a-zA-z-/:%]*)$ makeBuy.php?url=$1
RewriteRule ^minhasCompras/$ myBuy.php
RewriteRule ^trocarCidade/([0-9]+)$ cityChange.php?id=$1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você utiliza um header, ele apenas complementa o endereço o conteudo da página e nao url inteira, ou seja, ele não apaga todo o conteudo do navegador e insere a nova web:

 

URL = http://localhost/loja/
header("Location: login.php");
// Return: http://localhost/loja/login.php

// Se você utilizar um HTTP_REFERER ele vai inserir a url inteira no header()

URL = http://localhost/loja/
header( "Location: {$Sql->getUrl()}login/" );
// Return: http://localhost/loja/http:/localhost/loja/login/

O problema está em como você está tratando o getUrl(); pense nisso, você está pegando a url 2 vezes.

 

Com relação a apenas uma barra / que ele deixa, é o padrão do navegador, quando você digita http://www.andrewd.com.br//blog , ele remove uma barra e deixa o endereço normal.

 

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

AE galera eu consegui :joia:

 

utilizei preg_match para separar a minha url até a parte lógica da url amigável...

 

preg_match( "/[\/][a-z]+[\/]([a-zA-z0-9-\/]*)/", $_SERVER["REQUEST_URI"], $redirectUrl);

 

Obrigado pela paciência de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.