LFelipe 0 Denunciar post Postado Dezembro 12, 2008 Seguinte pessoal, estou recorrendo a vcs novamente para tentar solucionar uma dificuldade que estou tendo. Adaptei um sitema de login qua ja exixtia para por em pratica por aqui, fazendo com que seja obrigatoria a autenticação do usuario entes de ter acesso a pagina de relatorios gerencias da empresa, onde apos a autenticação sera verificado qual o nivel que ele pertence, se usuario ou admin. Tenho ja a pagia de login pronta que apos digitado o user e senha chama a pagina de verificação. Se user e senha estiverem corretos, ela faz uma nova query buscando 4 informações do usuario que sera guardado em session e redireciona para a pagina de formulario, que ao ser carregada, teria que aparecer o nome do usuario, informando qual tipo de permissão que ele tem e o link para o relatorio especifico. O que não esta funcionando é esta ultima parte, pois apos autenticado ele abre a pagina de relatorio (index1.php) só que não me mostra o nome dele, o tipo de usuario e o link para acesso ao relatorio. Gostaria da ajuda de vcs para tentar achar o que esta de errado. Os codigos são: autenticação <?php // Conexão com o banco de dados require "comum.php"; // Inicia sessões session_start(); // Recupera o login $login = isset($_POST["login"]) ? addslashes(trim($_POST["login"])) : FALSE; // Recupera a senha, a criptografando em MD5 $senha = isset($_POST["senha"]) ? md5(trim($_POST["senha"])) : FALSE; // Usuário não forneceu a senha ou o login if(!$login || !$senha) { echo "Você deve digitar sua senha e login!"; exit; } /** * Executa a consulta no banco de dados. * Caso o número de linhas retornadas seja 1 o login é válido, * caso 0, inválido. */ $SQL = "SELECT id, nome, login, senha, postar FROM aut_usuarios WHERE login = '" . $login . "'"; $result_id = @mysql_query($SQL) or die("Erro no banco de dados!"); $total = @mysql_num_rows($result_id); // Caso o usuário tenha digitado um login válido o número de linhas será 1.. if($total) { // Obtém os dados do usuário, para poder verificar a senha e passar os demais dados para a sessão $dados = @mysql_fetch_array($result_id); // Agora verifica a senha if(!strcmp($senha, $dados["senha"])) { // TUDO OK! Agora, passa os dados para a sessão e redireciona o usuário $_SESSION["id_usuario"] = $dados["id"]; $_SESSION["nome_usuario"] = stripslashes($dados["nome"]); $_SESSION["permissao"] = $dados["postar"]; header("Location: index.php"); exit; } // Senha inválida else { echo "Senha inválida!"; exit; } } // Login inválido else { echo "O login fornecido por você é inexistente!"; exit; } ?> e a pagina dos relatorios: <?php // Verificador de sessão require "verifica.php"; // Conexão com o banco de dados require "conexao.php"; session_start(); // Imprime mensagem de boas vindas echo "<font face=\"Verdana\" size=2>Bem-Vindo " . $_SESSION["id_usuario"] . "!<BR>\n"; echo "Usuário Autenticado"; /** * Verifica se usuário tem permissão para postar novas notícias. * Caso positivo, imprime link para postagem de notícias */ if($_SESSION["tipo"] == 1) { echo " | <a href=\"vendasTBAop.php\">Relatorio Operador</a>\n"; } else($_SESSION["tipo"] == "2") { echo " | <a href=\"vendasTBAsup.php\">Ralatorio Supervisor</a>\n"; } // Imprime link de logout echo " | <a href=\"sair.php\">Sair do Sistema</a>"; echo "<br><br>\n"; ?> o que estou fazendo de errado???? Valeu!!! Compartilhar este post Link para o post Compartilhar em outros sites
ThiagoInfo 1 Denunciar post Postado Dezembro 12, 2008 Seguinte pessoal, estou recorrendo a vcs novamente para tentar solucionar uma dificuldade que estou tendo. Adaptei um sitema de login qua ja exixtia para por em pratica por aqui, fazendo com que seja obrigatoria a autenticação do usuario entes de ter acesso a pagina de relatorios gerencias da empresa, onde apos a autenticação sera verificado qual o nivel que ele pertence, se usuario ou admin. Tenho ja a pagia de login pronta que apos digitado o user e senha chama a pagina de verificação. Se user e senha estiverem corretos, ela faz uma nova query buscando 4 informações do usuario que sera guardado em session e redireciona para a pagina de formulario, que ao ser carregada, teria que aparecer o nome do usuario, informando qual tipo de permissão que ele tem e o link para o relatorio especifico. O que não esta funcionando é esta ultima parte, pois apos autenticado ele abre a pagina de relatorio (index1.php) só que não me mostra o nome dele, o tipo de usuario e o link para acesso ao relatorio. Gostaria da ajuda de vcs para tentar achar o que esta de errado. Os codigos são: autenticação <?php // Conexão com o banco de dados require "comum.php"; // Inicia sessões session_start(); // Recupera o login $login = isset($_POST["login"]) ? addslashes(trim($_POST["login"])) : FALSE; // Recupera a senha, a criptografando em MD5 $senha = isset($_POST["senha"]) ? md5(trim($_POST["senha"])) : FALSE; // Usuário não forneceu a senha ou o login if(!$login || !$senha) { echo "Você deve digitar sua senha e login!"; exit; } /** * Executa a consulta no banco de dados. * Caso o número de linhas retornadas seja 1 o login é válido, * caso 0, inválido. */ $SQL = "SELECT id, nome, login, senha, postar FROM aut_usuarios WHERE login = '" . $login . "'"; $result_id = @mysql_query($SQL) or die("Erro no banco de dados!"); $total = @mysql_num_rows($result_id); // Caso o usuário tenha digitado um login válido o número de linhas será 1.. if($total) { // Obtém os dados do usuário, para poder verificar a senha e passar os demais dados para a sessão $dados = @mysql_fetch_array($result_id); // Agora verifica a senha if(!strcmp($senha, $dados["senha"])) { // TUDO OK! Agora, passa os dados para a sessão e redireciona o usuário $_SESSION["id_usuario"] = $dados["id"]; $_SESSION["nome_usuario"] = stripslashes($dados["nome"]); $_SESSION["permissao"] = $dados["postar"]; header("Location: index.php"); exit; } // Senha inválida else { echo "Senha inválida!"; exit; } } // Login inválido else { echo "O login fornecido por você é inexistente!"; exit; } ?> e a pagina dos relatorios: <?php // Verificador de sessão require "verifica.php"; // Conexão com o banco de dados require "conexao.php"; session_start(); // Imprime mensagem de boas vindas echo "<font face=\"Verdana\" size=2>Bem-Vindo " . $_SESSION["id_usuario"] . "!<BR>\n"; echo "Usuário Autenticado"; /** * Verifica se usuário tem permissão para postar novas notícias. * Caso positivo, imprime link para postagem de notícias */ if($_SESSION["tipo"] == 1) { echo " | <a href=\"vendasTBAop.php\">Relatorio Operador</a>\n"; } else($_SESSION["tipo"] == "2") { echo " | <a href=\"vendasTBAsup.php\">Ralatorio Supervisor</a>\n"; } // Imprime link de logout echo " | <a href=\"sair.php\">Sair do Sistema</a>"; echo "<br><br>\n"; ?> o que estou fazendo de errado???? Valeu!!! Posta os arquivos e forma como está fazendo, pois não entendi muito bem. Mas penso eu que você está consultando por exemplo os dados no arquivo login.php e ao redirecionar para o index.php por exemplo, você perde a consulta, tem que pegar os dados da sessão e consultar novamente. Se não for assim explica melhor ai. Eu fiz uma admin assim, eu dou select no login.php e se tudo correr bem eu redireciono, mas no index.php ou nos arquivos incluídos eu tenho quer fazer uma consulta com where dados da sessão. Compartilhar este post Link para o post Compartilhar em outros sites
walmir.silva 0 Denunciar post Postado Dezembro 12, 2008 o session_start() tem que ficar no inicio: <?php session_start(); //depois os demais, include, require.... Compartilhar este post Link para o post Compartilhar em outros sites
LFelipe 0 Denunciar post Postado Dezembro 12, 2008 beleza pessoal... problema resolvido não sei o porque, mais o problema estava aqui: $dados = @mysql_fetch_array($result_id); substitui essa linha por: $_SESSION["id_usuario"] = $result->fields[1]; $_SESSION["nome_usuario"] = stripslashes($result->fields[0]); $_SESSION["tipo"] = $result->fields[3]; desta forma consegui pegar as informações que foi passada para session. obrigado pela ajuda, e caso alguem tenha o mesmo problema, talvez essa possa ser a mesma solução. Valow!!! Compartilhar este post Link para o post Compartilhar em outros sites