Kadu_Web 0 Denunciar post Postado Dezembro 9, 2007 Olá Pessoal, boa tarde! Estou tendo um problema com Sessions e PHP. Estou tentando criar um sistema de Login utilizando OOP. Porém, quanto crio a variável de sessão não consigo passar o valor para outra página. Não sei se estou sendo claro. Peço compreensão. Abaixo o código: login.php //recebe os valores $login = isset($_POST["txtlogin"]) ? addslashes(trim($_POST["txtlogin"])) : FALSE; // Recupera a senha, a criptografando em MD5 $senha = isset($_POST["txtsenha"]) ? md5(trim($_POST["txtsenha"])) : FALSE; if(!$login || !$senha) { echo "Você deve digitar sua senha e login!"; exit; } //Inclui o arquivo de conexão include "config.php"; //consulta $sql = "SELECT * FROM tbuser where Login='".$login."'"; $resultado = @mysql_query($sql, $conexao); $total = @mysql_num_rows($resultado); if($total){ $dados = @mysql_fetch_array($resultado); if(!strcmp($senha, $dados["senhaUser"])){ //CRIA A SEÇÃO, GRAVA ELA E REDIRECIONA A PÁGINA session_start(); $user["IdUser"] = $dados["idUser"]; $user["NomeCompleto"] = $dados["NomeCompleto"]; $user["Login"] = $dados["Login"]; $user["tipoUsuario"] = $dados["tipoUsuario"]; $user["senhaUser"] = $dados["senhaUser"]; session_register("user"); $_SESSION["user"] = serialize($user); header("Location:valida_user.php"); } //senha inválida else { echo "Senha Inválida!<br/>"; echo $senha; exit; } } else { echo "O login não existe!"; exit; } valida_user.php session_start(); include "./classes/class_user.php"; $usuario = new User(); $user = unserialize($_SESSION["user"]); $usuario->setNomeCompleto($user["NomeCompleto"]); echo "Nome completo: <b>" .$_SESSION["user"]. "</b>"; Desde já agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
Gaulia 1 Denunciar post Postado Dezembro 9, 2007 Cara, não se ajuda, coloca o session_start(); no inicio da página do login.php. 2º Sei lá mas que código mais estranho pra mim, eu coloquei assim meu login.php e depois no index abre o session e só colocar echo $login; e pronto... if(isset($_POST["Entrar"])) { foreach ($_POST as $campo => $valor) { $$campo = addslashes(htmlentities($valor)); } $login = preg_replace("@(--|\#|\*|;|=)@s", "", $login); /// Trim tira os espaços do inicio / fim $login = trim($login); $senha = trim($senha); $consulta = mysql_query("SELECT login, status FROM membros WHERE login='$login' AND status='S'"); if(mysql_num_rows($consulta)>0) { $consulta2 = mysql_query("SELECT * FROM membros WHERE login='$login' AND senha=md5('$senha')"); if(mysql_num_rows($consulta2)>0) { $dados = mysql_fetch_array($consulta2); $_SESSION["id_login"] = $dados["id_login"]; $_SESSION["login"] = $dados["login"]; $_SESSION["senha"] = $dados["senha"]; $_SESSION["nivel"] = $dados["nivel"]; header ('Location: index.php'); exit; } else{ header ('Location: login.php'); } } else { header ('Location: login.php'); } } Espero ter ajudado... Compartilhar este post Link para o post Compartilhar em outros sites
Dórian Conde Langbeck 0 Denunciar post Postado Dezembro 9, 2007 bem vindo ao forum iMasters Kadu_Web... depois reserve um tempo pra ler Regras do Fórum iMasters ao assunto... você ja verificou se as variaveis estao corretas?! verifica entes de tentar enviar... tenta tbm recuperar os valores do SESSION ainda na msm pagina... (so pra verificar se esta sendo definida) antes de tentar avançar para uma outra etapa... faça testes e mais testes (msm q sejam bestas). abraços http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif Compartilhar este post Link para o post Compartilhar em outros sites
Kadu_Web 0 Denunciar post Postado Dezembro 9, 2007 Gaulia, eu tentei do jeito que você fez mas o erro persiste, a página index.php não recebe nenhum valor de sessão. valeu pela dica... tem alguma idéia.... Dorian... bem vindo ao forum iMasters Kadu_Web... depois reserve um tempo pra ler Regras do Fórum iMasters ao assunto... você ja verificou se as variaveis estao corretas?! verifica entes de tentar enviar... tenta tbm recuperar os valores do SESSION ainda na msm pagina... (so pra verificar se esta sendo definida) antes de tentar avançar para uma outra etapa... faça testes e mais testes (msm q sejam bestas). abraços http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif eu fiz o teste na mesma página e deu certo. Mas eu preciso disto na outra página...tem alguma idéia do que possa ser??? desde já agradeço a ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
Gaulia 1 Denunciar post Postado Dezembro 9, 2007 Colocou session_start(); no inicio do login.php e no inicio da outra página? Compartilhar este post Link para o post Compartilhar em outros sites
Kadu_Web 0 Denunciar post Postado Dezembro 9, 2007 coloquei....e nada! Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Dezembro 9, 2007 Amigão, me informepor favor quais são os erros que aparece quando você tenta executar o script, você está a progrmar errado, uma vez que se usar o " @ " para ocultar os errros é impossível saber o que se ocorre com o script, retire todos os " @ " utilizados para esconder os erros e os poste aqui. outra coisa, dê um print_r($_POST); para ver qual é o valor que amesma está recebendo. Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Kadu_Web 0 Denunciar post Postado Dezembro 9, 2007 os valores que a $_POST recebe estão corretos... e ela não informa nenhum erro de banco de dados... estava pensando... é possível ser alguma coisa na configuração do PHP??? eu uso o SERV-N. será isto, e se for, como resolver? Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Dezembro 9, 2007 Cara tu tirou os " @ " arroba das queryes ?! Compartilhar este post Link para o post Compartilhar em outros sites
Kadu_Web 0 Denunciar post Postado Dezembro 9, 2007 tirei de todas até do arquivo config.php! Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Dezembro 9, 2007 Bem se não aparece erro algum, é muito estrnha, só um momento que vou analisar todo o teu código. teu web server é um pacote ou instalou manualmente ? Compartilhar este post Link para o post Compartilhar em outros sites
Kadu_Web 0 Denunciar post Postado Dezembro 9, 2007 é pacote (SERV_N).... Compartilhar este post Link para o post Compartilhar em outros sites
Kadu_Web 0 Denunciar post Postado Dezembro 9, 2007 Tô postanto o código de novo.... login.php <?php session_start(); //recebe os valores $login = isset($_POST["txtlogin"]) ? addslashes(trim($_POST["txtlogin"])) : FALSE; // Recupera a senha, a criptografando em MD5 $senha = isset($_POST["txtsenha"]) ? md5(trim($_POST["txtsenha"])) : FALSE; if(!$login || !$senha) { echo "Você deve digitar sua senha e login!"; exit; } //Inclui o arquivo de conexão include "config.php"; //consulta $sql = "SELECT * FROM tbuser where Login='".$login."'"; $resultado = mysql_query($sql, $conexao); $total = mysql_num_rows($resultado); if($total){ $dados = mysql_fetch_array($resultado); if(!strcmp($senha, $dados["senhaUser"])){ //CRIA A SEÇÃO, GRAVA ELA E REDIRECIONA A PÁGINA $user["IdUser"] = $dados["idUser"]; $user["NomeCompleto"] = $dados["NomeCompleto"]; $user["Login"] = $dados["Login"]; $user["tipoUsuario"] = $dados["tipoUsuario"]; $user["senhaUser"] = $dados["senhaUser"]; $_SESSION["user"] = serialize($user); header("Location:valida_user.php"); } //senha inválida else { echo "Senha Inválida!<br/>"; echo $senha; exit; } } else { echo "O login não existe!"; exit; } ?> e valida_user.php session_start(); $user = unserialize($_SESSION["user"]); include "./classes/class_user.php"; $usuario = new User(); $usuario->setNomeCompleto($user["NomeCompleto"]); echo "Nome completo: <b>" .$usuario->getNomeCompleto(). "</b>"; ?> Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Dezembro 9, 2007 cara posta pra mim o formulário também... Compartilhar este post Link para o post Compartilhar em outros sites
Kadu_Web 0 Denunciar post Postado Dezembro 9, 2007 ai vai... <form action="login.php" method="post" name="frmLogin" id="frmLogin"> <table width="100%" border="0" cellspacing="0" cellpadding="1" class="TitleColor"> <tr style="vertical-align: top"> <td> <table width="100%" border="0" cellspacing="0" cellpadding="4"> <tr class="HeaderColor"> <td width="20%" style="vertical-align: top"> <h3>Entrar no Sistema </h3> </td> <td width="80%" style="vertical-align: top"> <h3>BME Pré-Militar </h3> </td> </tr> <tr style="vertical-align: top"> <td width="20%" class="TitleColor"> <label for="txtLogin"><strong>Nome de Usuário </strong></label><br /> <input id="txtlogin" name="txtlogin" type="text" size="25" /> <p> </p> <label for="txtSenha"><strong>Senha</strong></label> <br /> <input id="txtsenha" name="txtsenha" type="password" size="25" /> <p> <input name="entrar" type="submit" id="entrar" value="Entrar" /> </p> </td> <td width="80%" class="StoryContentColor"> <h4 class="TitleColor">Instruções:</h4> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. </td> </tr> </table> </td> </tr> </table> </form> Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Dezembro 9, 2007 Substitui o login.php por este código aqui: PHP <?php//recebe os valores if($_POST["entrar"]){ $protecao_login=addslashes(trim($_POST["txtlogin"])); $protecao_senha=md5(trim($_POST["txtsenha"])); if(empty($protecao_login || empty($protecao_senha))){ print "Digite os dados necessários!"; exit; } }else{ print "Erro de programação."; } //Inclui o arquivo de conexão include "config.php"; //consulta $sql = "SELECT * FROM tbuser where Login='$protecao_login'"; $resultado = @mysql_query($sql, $conexao); $total = @mysql_num_rows($resultado); if($total != 0){ $dados = @mysql_fetch_array($resultado,MYSQL_ASSOC); if(!strcmp($protecao_senha, $dados["senhaUser"])){ //CRIA A SEÇÃO, GRAVA ELA E REDIRECIONA A PÁGINA session_start(); $user["IdUser"] = $dados["idUser"]; $user["NomeCompleto"] = $dados["NomeCompleto"]; $user["Login"] = $dados["Login"]; $user["tipoUsuario"] = $dados["tipoUsuario"]; $user["senhaUser"] = $dados["senhaUser"]; $_SESSION["user"] = serialize($user); header("Location: index2.php"); } //senha inválida else { echo "Senha Inválida!<br/>"; echo $protecao_senha; exit; } } else { echo "O login não existe!"; exit; } ?> faça um backup do original antes, e me fala qual o erro que aparece ai, caso tenha. Compartilhar este post Link para o post Compartilhar em outros sites
Kadu_Web 0 Denunciar post Postado Dezembro 9, 2007 não apareceu nenhum erro! Está tudo como antes. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Moreira 0 Denunciar post Postado Dezembro 9, 2007 ai vai... <form action="login.php" method="post" name="frmLogin" id="frmLogin"> <table width="100%" border="0" cellspacing="0" cellpadding="1" class="TitleColor"> <tr style="vertical-align: top"> <td> <table width="100%" border="0" cellspacing="0" cellpadding="4"> <tr class="HeaderColor"> <td width="20%" style="vertical-align: top"> <h3>Entrar no Sistema </h3> </td> <td width="80%" style="vertical-align: top"> <h3>BME Pré-Militar </h3> </td> </tr> <tr style="vertical-align: top"> <td width="20%" class="TitleColor"> <label for="txtLogin"><strong>Nome de Usuário </strong></label><br /> <input id="txtlogin" name="txtlogin" type="text" size="25" /> <p> </p> <label for="txtSenha"><strong>Senha</strong></label> <br /> <input id="txtsenha" name="txtsenha" type="password" size="25" /> <p> <input name="entrar" type="submit" id="entrar" value="Entrar" /> </p> </td> <td width="80%" class="StoryContentColor"> <h4 class="TitleColor">Instruções:</h4> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. </td> </tr> </table> </td> </tr> </table> </form> Seguinte Kadu, Eu não tenho muito conhecimento de PHP não, mas talvez o que eu falar seja inportante para a resoulução de seu problema. Tive um problema parecido com o seu. Aconcelho que você tente verificar se o valor da Session está sendo passado. 1 - Tente mandar imprimir o valor das sessões na página login.php para ver se está sendo declarada. 2 - Tente colocar um valor não-variável para a sessao, Ex.: $_SESSION['nomeCompleto'] == "Thiago Moreira"; e depois mande imprimir. Se der certo desta maneira, significa que a sua consulta está errada em algum ponto. 3 - Tente nao colocar $_SESSION["nomeCompleto"], coloque $_SESSION['nomeCompleto'] com aspas simples. As vezes acontece isso comigo, qnd mudo funciona. Uma vez fiz uma declaração de Session com um valor de uma consulta, como você fez ($user["IdUser"] = $dados["idUser"];), porém nao funcionou. Tive que jogar o valor da consulta para uma variável, e depois declarar a session. Ex.: $nome = $dados['nomeCompleto']; $user['nomeCompleto'] = $nome; Bom, acho q é só isso q tenho à comentar. Me desculpe se falei alguma besteira, pois sou iniciante ainda :P Espero que consiga resolver seu problema. Abração :D Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Dezembro 9, 2007 Cara nem se quer redireciona ? nem da problema de headers ? se eu elaborar outro aqui, te serve ? esse ta meio esquesito.... Compartilhar este post Link para o post Compartilhar em outros sites
Kadu_Web 0 Denunciar post Postado Dezembro 9, 2007 Ai Thiago...valeu pela dica... mas tbm não deu certo. Mas agora eu sei que o problema é com a passagem da session para outra página. The Cod. Não tem dado nenhum erro, ele até redireciona mas o valor da session não aparece. Se você puder elaborar um eu fico muito agradecido, se não for te incomodar. Compartilhar este post Link para o post Compartilhar em outros sites