gremio10 14 Denunciar post Postado Abril 30, 2011 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 http://localhost/localhost/testes/testeA/1-meu-carro O que está acontecendo ? obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
vieira.rrafael 2 Denunciar post Postado Abril 30, 2011 Você esta usando a função header() do PHP? Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Abril 30, 2011 isso!! :lol: Compartilhar este post Link para o post Compartilhar em outros sites
vieira.rrafael 2 Denunciar post Postado Abril 30, 2011 isso!! :lol: Mostre como você está fazendo. Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Abril 30, 2011 <?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
vieira.rrafael 2 Denunciar post Postado Abril 30, 2011 O que $Sql->getUrl() retorna? Dê um exemplo de possível valor para $_url_return . Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Abril 30, 2011 O que $Sql->getUrl() retorna? Dê um exemplo de possível valor para $_url_return . $Sql->getUrl() retorna a url original $_url_return = "http:/localhost/carros/compras/"; Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Maio 1, 2011 Olá , http:/ ? Apenas com uma barra ? :P Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Maio 1, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Maio 1, 2011 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
gremio10 14 Denunciar post Postado Maio 1, 2011 Cara, o problema é que ele mesmo indo para essa minha url do localhost, ele adiciona mais um localhost ou seja, localhos/localhost/... Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Maio 1, 2011 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
gremio10 14 Denunciar post Postado Maio 1, 2011 Mas eu estou usando o $_SERVER["HTTP_REFERER"] para pegar a url completa, quando ele vai para o meu validaCompra ele perde um / Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Maio 1, 2011 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
gremio10 14 Denunciar post Postado Maio 1, 2011 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
mangakah 217 Denunciar post Postado Maio 1, 2011 Será que não é alguma coisa no seu .htaccess? Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Maio 1, 2011 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
André Severino 3 Denunciar post Postado Maio 1, 2011 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
gremio10 14 Denunciar post Postado Maio 1, 2011 Sim Andrey, só que quando mando ele redirecionar para a url em que se encontrava, não utilizo minha função getUrl(), utilizo apenas a url resgatada via GET ;) Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Maio 1, 2011 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