Carcleo 4 Denunciar post Postado Maio 10, 2012 Pessoal. Tem como usar sessões em php 5 com register_globals off? Como? Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Maio 10, 2012 Pode-se e deve-se usar com register_globals off $_SESSION['nome_do_indice']; Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 10, 2012 Então, onde estou errando? <?php if((isset($_GET["acao"]))and ($_GET["acao"]=="login")) { $user_string ="select id_admin, nome_admin, usuario_admin, bloqueio_admin from admin where usuario_admin = '".$_POST['usuario']."' and senha_admin = '".$_POST['senha']."'" ; try{ $user = $conexao->query($user_string); if($user->num_rows!=0) { list($id_admin, $nome_admin, $usuario_admin, $bloqueio_admin)=$user->fetch_row(); if ($bloqueio_admin == "s") { echo "<script>document.location='?erroadmin=usuário bloqueado'</script>"; } else { $bloqueio_administrador=$bloqueio_admin; $nome_administrador=$nome_admin; $sessaologinadministrador=$id_admin; session_register("bloqueio_administrador"); session_register("nome_administrador"); session_register("sessaologinadministrador"); echo "<script>document.location='inicio.php'</script>"; } } else { echo "<script>document.location='?erroadmin=usuário inválido ou senha não confere'</script>"; } }catch(Exception $e) { echo $e->getMessage(); } } ?> Esse arquivo tem um session_start() na primeira linha E estou validando assim: <?php if(!isset($_SESSION["sessaologinadministrador"])) { echo "<script>document.location='index.php?erroadmin=Você não esta logado. Por favor faça Login'</script>"; } else { if((isset($_GET["acao"]))and ($_GET["acao"]=="logout")) { session_destroy(); echo "<script>document.location='index.php?erroadmin=Você não esta logado. Por favor faça Login'</script>"; } echo "<div align=\"center\"><img src=\"figuras/logo_administracao.png\"></div>"; } ?> Tambem com session_start() na primeira linha Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Maio 10, 2012 após o session_start(); verifique o que aparece na sessão com esse código echo '<pre>'; var_dump( $_SESSION ); echo '</pre>'; Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 10, 2012 array(3) { ["bloqueio_administrador"]=> NULL ["nome_administrador"]=> NULL ["sessaologinadministrador"]=> NULL } Obs.: register_global = off Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Maio 10, 2012 Perceba que os valores estão nulos. Substitua as linhas session_register("bloqueio_administrador"); session_register("nome_administrador"); session_register("sessaologinadministrador"); por: $_SESSION['bloqueio_administrador'] = $bloqueio_administrador; $_SESSION['nome_administrador'] = $nome_administrador; $_SESSION['sessaologinadministrador'] = $sessaologinadministrador; A partir do PHP 4.1 é recomendável utilizar $_SESSION. Novamente debug a session: echo '<pre>'; var_dump( $_SESSION ); echo '</pre>'; E também, dessas variáveis: echo '<pre>'; var_dump($id_admin, $nome_admin, $usuario_admin, $bloqueio_admin); echo '</pre>'; Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 10, 2012 Bom, resolvido. Fiz um arquvo à parte para o logon. Login e Logof em um mesmo arquivo: logon.php <?php session_start(); header ("Content-Type: text/html; charset=utf-8"); // Precisa ficar aqui senão dá problema com o arquivo de classe conexão include ("../global/config/conexao.php"); ?> <?php if((isset($_GET["acao"]))and ($_GET["acao"]=="logout")) { session_destroy(); echo "<script>document.location='index.php?erroadmin=Você não esta logado. Por favor faça Login'</script>"; } ?> <?php if((isset($_GET["acao"]))and ($_GET["acao"]=="login")) { $user_string ="select id_admin, nome_admin, usuario_admin, bloqueio_admin from admin where usuario_admin = '".$_POST['usuario']."' and senha_admin = '".$_POST['senha']."'" ; try{ $user = $conexao->query($user_string); if($user->num_rows!=0) { list($id_admin, $nome_admin, $usuario_admin, $bloqueio_admin)=$user->fetch_row(); if ($bloqueio_admin == "s") { echo "<script>document.location='?erroadmin=usuário bloqueado'</script>"; } else { $_SESSION['bloqueio_administrador'] = $bloqueio_admin; $_SESSION['nome_administrador'] = $nome_admin; $_SESSION['sessaologinadministrador'] = $id_admin; echo "<script>document.location='inicio.php'</script>"; } } else { echo "<script>document.location='?erroadmin=usuário inválido ou senha não confere'</script>"; } }catch(Exception $e) { echo $e->getMessage(); } } ?> <?php $conexao->close(); ?> [code] E, no form do login: [code] <div id="div_login"> <h1> </h1> <h2>Login Administrativo</h2> <h1> </h1> <?php if(isset($_GET["erroadmin"])) { echo "<font color='red'>Erro: ".$_GET["erroadmin"]."</font>"; } ?> <h1> </h1> <form name="form_login" id="form_login" action="logon.php?acao=login" method="POST"> <label for="usuario">Usuário: </label> <input type="text" name="usuario" id="usuario" size="20px" maxlength="4" tabindex="1" /> <label for="senha">Senha: </label> <input type="password" name="senha" id="senha" size="20px" maxlength="4" tabindex="2" /> <input type="button" id="enviar" value="Logar" style="width:100px" onclick="valida_login();" tabindex="3" /> </form> </div> Funcionando redondinho. Obrigado pela orientação. Compartilhar este post Link para o post Compartilhar em outros sites