klawdyo 0 Denunciar post Postado Outubro 23, 2007 Tenho uma série de páginas (que deveriam ser) protegidas com sessões... Ela funcionam perfeitamente no localhost, mas quando eu subo os arquivos para o servidor, qualquer pessoa consegue acessá-las normalmente, sem estar logado. Eu uso o seguinte código: function verifica_session() { session_start(); if(!$_SESSION["email"] and !$_SESSION["senha"]) { header("location: index.php"); } } Se as variáveis não estiverem registradas, redireciona para a página index.php. Porque só funciona no localhost? Onde eu estou errando? Compartilhar este post Link para o post Compartilhar em outros sites
newmmax 0 Denunciar post Postado Outubro 23, 2007 me parece que você só está verificando se o email e senha foram inseridos, mas nao está autenticando, pode ser isso. se nao for posta o código de registro da sessão pra gente vevlw Compartilhar este post Link para o post Compartilhar em outros sites
programador php 0 Denunciar post Postado Outubro 23, 2007 tente substituir o [ ! ] por [ isset ] abraço Compartilhar este post Link para o post Compartilhar em outros sites
m4rkynh0z 0 Denunciar post Postado Outubro 23, 2007 if (isset($_SESSION['email']) and isset($_SESSION['senha']) ){...}tenta isso Compartilhar este post Link para o post Compartilhar em outros sites
klawdyo 0 Denunciar post Postado Outubro 23, 2007 Aí vai minha página de login: PHP <?php //inicio a sessão session_start(); //include da conexão com o banco. require "headers.php"; conecta(); header("Content-type: text/html; charset=iso-8859-1"); // Header //recebo as variáveis. $email = addslashes($_POST["txtEmail"]); $senha = addslashes($_POST["txtSenha"]); $erro=0; // verifico se o email foi preenchido if(empty($email)){$erro +=1;} //verifico se a senha foi preenchida if(empty($senha)){$erro +=2;} // agora verifico se ocorreu erro ou não. if($erro !=0){ header("location:index.php?err_login=". $erro); } else { //se não ocorreu erro $sql = mysql_query("SELECT * FROM usuarios WHERE email='$email' AND senha='".md5($senha)."'"); $rows = mysql_num_rows($sql); if($rows!=0) { while($mostra = mysql_fetch_array($sql)) { //crio as sessoes $_SESSION["email"] = $email; //sessão do usuario $_SESSION["senha"] = $senha; //crio a sessão da senha $_SESSION["token"] = $mostra[cod_confirmacao]; //crio a sessão do token //atualizando as informações dos últimos acessos mysql_query("UPDATE usuarios SET ultimo_acesso='".date("Y-m-d H:i:s")."' WHERE email='".$_SESSION[email]."'") or die (mysql_error()); } //redireciono para a pagina padrão se o login não for feito pelo ajax header("location:inicio.php"); }//fecho o if else { //se o usuário ou a senha estiverem errados, o SELECT acima não irá retornar nenhum valor //volta para a pagina se o login não for feito pelo ajax header("location:index.php?err_login=4"); exit; }//fecho o else da consulta }//fecho o else de verificação // mysql_close($con); ?> Compartilhar este post Link para o post Compartilhar em outros sites
klawdyo 0 Denunciar post Postado Outubro 23, 2007 Não é isso... Veja só O login acontece legal. As sessões são salvas normalmente. PHP function verifica_session() { session_start(); if(!$_SESSION["email"] and !$_SESSION["senha"]) { header("Location: index.php"); echo "não logado"; // mostra essa frase se não estiver logado exit; } } Eu fiz as alterações acima, acrescentei PHP echo "não logado"; // mostra essa frase se não estiver logado exit; Sempre que eu tento acessar as páginas protegidas só aparece a frase "não logado". O problema é que não tá acontecendo o redirecionamento com o Header. Só que o Header só não funciona nessa função específica. Pois a função sair(), que fica logo abaixo dela tá funcionando normal. Eu to me descabelando aqui.. Com certeza esse erro é uma bobagem enorme q tá bem debaixo do meu nariz e eu nao to vendo.. eu to endoidando obs.: não existe nenhuma saída html antes do header. Compartilhar este post Link para o post Compartilhar em outros sites
newmmax 0 Denunciar post Postado Outubro 23, 2007 tenta assim... function verifica_session() { session_start(); if(!$_SESSION["email"] and !$_SESSION["senha"]) { header("Location: index.php"); } else { echo "não logado"; // mostra essa frase se não estiver logado } } deve ser bobagem mesmo, já tive erros desse gênero e comigo funcionou, faz o teste aí Compartilhar este post Link para o post Compartilhar em outros sites
klawdyo 0 Denunciar post Postado Outubro 23, 2007 funcionou não.você colocou o mesmo código que eu havia colocado no começo.Se você deixar sem o EXIT depois do HEADER ele vai carregar a página inteira que deveria ser protegida, mas não vai acessar os bancos de dados, pois os SELECT se baseiam no usuario da SESSION.O problema não tá na verificação das sessões. O problema está no HEADER. Não está redirecionando. Mas eu não entendo porque, pois os outros redirecionamentos de outras funções funcionam normalmente.Eu to encabulado com esse erro, pois funcionaa no localhost, mas nao no servidor.Funciona todos os scripts de redirecionamento, menos esse específico. O que pode estar acontecendo? Compartilhar este post Link para o post Compartilhar em outros sites
the_flash 0 Denunciar post Postado Outubro 23, 2007 Se tiver algum código HTML antes do header não vai funcionar. (editado, acabei de ver que você já disse que não tem) Uma última opção seria: echo '<script>location.href="index.php"</script>'; Compartilhar este post Link para o post Compartilhar em outros sites
Micael Vianna 0 Denunciar post Postado Outubro 23, 2007 Tente matar o processo depois.if (!isset($_SESSION['nome']){ die('nao logado');}outra coisa que as vezes ocorre eh ter que dar nome a sessaosession_start();session_name("MINHA_SECAO");if (!isset($_SESSION['nome']){ die('nao logado');}se voce der um print_r na sessao, ta tudo la? Compartilhar este post Link para o post Compartilhar em outros sites
the_flash 0 Denunciar post Postado Outubro 23, 2007 Experimente tirar isso aqui header("Content-type: text/html; charset=iso-8859-1"); // Header Compartilhar este post Link para o post Compartilhar em outros sites
klawdyo 0 Denunciar post Postado Outubro 24, 2007 the_flash, em que isso poderia me ajudar? Não existe essa linha no código com problema. O problema está acontecendo com a função verifica_session()Ela não tá redirecionando pro index.php quando acontece o erro.A sessão tá ok. O problema é no redirecionamento. Como eu faço para exibir todos os erros do servidor, pra verificar se tem alguma coisa acontecendo que eu não esteja vendo? Talvez esteja acontecendo algum warning, ou coisa do tipo, e eu não esteja vendo pq o servidor pode ter desabilitado a exibição. Compartilhar este post Link para o post Compartilhar em outros sites
Micael Vianna 0 Denunciar post Postado Outubro 24, 2007 the_flash, em que isso poderia me ajudar? Não existe essa linha no código com problema. O problema está acontecendo com a função verifica_session()Ela não tá redirecionando pro index.php quando acontece o erro.A sessão tá ok. O problema é no redirecionamento. Como eu faço para exibir todos os erros do servidor, pra verificar se tem alguma coisa acontecendo que eu não esteja vendo? Talvez esteja acontecendo algum warning, ou coisa do tipo, e eu não esteja vendo pq o servidor pode ter desabilitado a exibição.amigo,experimente: ini_set(display_errors,"1");nao sei se esta permitido em seu servidor, mas ele exibirá todos erros, warnings, etc Compartilhar este post Link para o post Compartilhar em outros sites
Felipe CK 0 Denunciar post Postado Outubro 24, 2007 function verifica_session() { session_start(); if((!($_SESSION["email"]))&&(!($_SESSION["senha"]))) { header("location: index.php"); } } Tenta assim que funciona!!!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
klawdyo 0 Denunciar post Postado Outubro 25, 2007 o problema está no Header. Ele não tá redirecionando. Quando eu usei o ini_set(display_errors,"1"); apareceu aquele erro que acontece quando tem saída html antes do Header. Mas eu já procurei em todos os códigos, um por um, e não tem nenhuma saída. Nenhuma mesmo, nem espaço nem nada.. mas quando eu olho o código fonte gerado aparece uns 10 espaços. será possível que o servidor esteja incluindo esses espaços só pra me sacanear? Compartilhar este post Link para o post Compartilhar em outros sites
Micael Vianna 0 Denunciar post Postado Outubro 25, 2007 CaraEu tenho alguns problemas do tipo as vezes, e nao sei se vai funcionar ok?Trabalhamos com windows aqui, e usamos o filezilla, as vezes quando editamos o codigo pelo proprio ftp, ele fica assim.Como resolvemos:Copiamos o codigo, criamos um novo arquivo, deletamos o antigo, e salvamos de novo usando um editor de texto normal e aih funciona.o.O Compartilhar este post Link para o post Compartilhar em outros sites