AfroFlash 0 Denunciar post Postado Junho 3, 2009 Ola a todos do iMasters. Sou iniciante em php então peguei varias apostilas na internet para estudar e uma delas tem um exemplo prático de como fazer um sistema simples de login(inclusive este exemplo foi criado pela iMasters). Bom, fiz tudo o que mandava na apostila, criei o arquivo conecta.php e consegue conectar ao banco sem erros, já fiz um insert de usuario no banco e está tudo Ok. Criei a página com o formulário de login, um arquivo ver_sessao.php para as areas restritas e uma pagina de área restrita que é opcoes.php(pagina para cadastrar clientes e gerenciar clientes). O meu problema é que na hora de testar a página de login(index.php), eu coloco o login e a senha corretas e clico em entrar, mas ele não redireciona para a página opcoes.php e volta na mesma página(index.php) com o formulário em branco. O browser não aponta nenhum erro nem nada. Eu acho que o problema está na sessao, mas como sou iniciante nao sei o que posso fazer para arrumar isso. Aqui estão os códigos. - index.php(Página de Login): <? include "conecta.php"; if(($apelido_login) and ($senha_login)) { $sql = mysql_query("select * from tb_user where apelido='$apelido_login' AND senha='$senha_login'",$con) or die ("ERRO no comando SQL:"); if(mysql_num_rows($sql) > 0) { $id_imasters = mysql_result($sql,0,"id_user"); $apelido_imasters = mysql_result($sql,0,"apelido"); $senha_imasters = mysql_result($sql,0,"senha"); session_start("imasters"); session_register("id_imasters","apelido_imasters","senha_imasters"); header("location: opcoes.php"); } } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Tutorial iMasters - index.php</title> </head> <body> <form name="frm_login" method="post" action="<? echo $PHP_SELF; ?>"> <table width="40%" border="0" cellspacing="0" cellpadding="0"> <tr> <td colspan="2"><b><font face="Arial, Helvetica, sans-serif" size="3">IDENTIFICAÇÃO</font></b></td> </tr> <tr> <td width="33%" height="25"><font face="Arial, Helvetica, sans-serif" size="2">Apelido:</font></td> <td width="77%" height="25"><font face="Arial, Helvetica, sans-serif" size="2"> <input type="text" name="apelido_login" /></font></td> </tr> <tr> <td width="33%" height="25"><font face="Arial, Helvetica, sans-serif" size="2">Senha:</font></td> <td width="67%" height="25"><font face="Arial, Helvetica, sans-serif" size="2"> <input type="password" name="senha_login" /></font></td> </tr> <tr> <td colspan="2"><input type="submit" name="entrar" value="Entrar >>" /></td> </tr> </table> </form> </body> </html> - ver_sessao.php: <? session_start("imasters"); if(!(session_is_registered("id_imasters") AND session_is_registered("apelido_imsters") AND session_is_registered("senha_imasters"))) { echo "Esta é uma área RESTRITA"; exit; } ?> - conecta.php(acho que tá funcionando tudo certo): <? $dbname="imasters"; $usuario="usuario"; $password="senha"; if(!($id = mysql_connect("localhost",$usuario,$password))) { echo "<p align=\"center\"><big><strong>Não foi possível estabelcer uma conexão com o gerenciador MySQL. Favor Contactar o Administrador.</strong></big></p>"; exit; } if(!($con=mysql_select_db($dbname,$id))) { echo "<p align\"center\"><big><strong>Não foi possível estabelecer uma conexão com o Banco de Dados. Favor Contactar o Administrador.</strong></big></p>"; exit; } ?> - Opcoes.php: Por enquanto é só uma pagina em html com o codigo <? include "ver_sessao.php" ?> Alguem pode me dar uma luz? já tentei fazer algumas mudanças mas nenhuma vez funcionou xD Agradeço a todos. Abraços! Compartilhar este post Link para o post Compartilhar em outros sites
NunoMGF 0 Denunciar post Postado Junho 3, 2009 <? include "conecta.php"; $apelido=$_POST['$apelido']; //pq o form tem method="post" $senha=$_POST['$senha']; //pq o form tem method="post" if( !empty($apelido) && !empty($senha) ) { $sql = mysql_query("select * from tb_user where apelido='$apelido' AND senha='$senha'",$con) or die ("ERRO no comando SQL:"); if(mysql_num_rows($sql) > 0) { $id_imasters = mysql_result($sql,0,"id_user"); $apelido_imasters = mysql_result($sql,0,"apelido"); $senha_imasters = mysql_result($sql,0,"senha"); session_start("imasters"); session_register("id_imasters","apelido_imasters","senha_imasters"); header("location: opcoes.php"); } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
AfroFlash 0 Denunciar post Postado Junho 3, 2009 Opa! Brigadão pelo script NunoMGF, eu troquei o meu script pelo seu, mas mesmo assim não tá redirecionando pra próxima página, continua acontecendo a mesma coisa T_T Será q é algum problema com o meu Apache/PHP? a Versão que eu uso do PHP é 5.1 que vem no pacote WAMP5. Alguem sabe o que pode estar acontecendo? >< Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 3, 2009 Aparentemente o erro é no script de login. Vamos conferir isso primeiro. $sql = "SELECT * FROM `tb_user` WHERE `apelido` = '{$apelido_login}' AND `senha` = '{$senha_login}' "; echo $sql; /* depois você comenta esse echo.. se tiver tudo certo */ $q = mysql_query( $sql )or die( mysql_error() ); $num = mysql_num_rows( $q ) if( $num > 0) { $id_imasters = mysql_result($q, 0, 'id_user'); $apelido_imasters = mysql_result($q, 0, 'apelido'); $senha_imasters = mysql_result($q, 0, 'senha'); session_start(); $_SESSION['id_imasters'] = $id_imasters; $_SESSION['apelido_imasters'] = $apelido_imasters; $_SESSION['senha_imasters'] = $senha_imasters; //header('Location: opcoes.php'); }Informe se voltou algum erro, ou os resultados dos echos que eu coloquei. Compartilhar este post Link para o post Compartilhar em outros sites
AfroFlash 0 Denunciar post Postado Junho 4, 2009 voltou Parse error: syntax error, unexpected $end in C:\wamp\www\imasters\login.php on line 57 <? include "conecta.php"; $apelido=$_POST['$apelido']; $senha=$_POST['$senha']; if(($apelido_login) and ($senha_login)) { $sql = "SELECT * FROM `tb_user` WHERE `apelido` = '{$apelido_login}' AND `senha` = '{$senha_login}' "; echo $sql; /* depois você comenta esse echo.. se tiver tudo certo */ $q = mysql_query( $sql )or die( mysql_error() ); $num = mysql_num_rows( $q ); if( $num > 0) { $id_imasters = mysql_result($q, 0, 'id_user'); $apelido_imasters = mysql_result($q, 0, 'apelido'); $senha_imasters = mysql_result($q, 0, 'senha'); session_start(); $_SESSION['id_imasters'] = $id_imasters; $_SESSION['apelido_imasters'] = $apelido_imasters; $_SESSION['senha_imasters'] = $senha_imasters; //header('Location: opcoes.php'); ?> A linha 57 é a linha que acaba com </html> fize errado? >< Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Junho 4, 2009 Veja que você abre 2 ifs e não os fecha... É isto que falta... Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
AfroFlash 0 Denunciar post Postado Junho 4, 2009 humm...verdade^^" arrumei agora o echo aparece quando eu tiro a condiçao: if(($apelido_login) and ($senha_login)) { quando eu coloco essa condiçao, o echo nao aparece. <? include "conecta.php"; $apelido=$_POST['$apelido']; //pq o form tem method="post" $senha=$_POST['$senha']; //pq o form tem method="post" if(($apelido_login) and ($senha_login)) { $sql = "SELECT * FROM `tb_user` WHERE `apelido` = '{$apelido_login}' AND `senha` = '{$senha_login}' "; echo $sql; /* depois você comenta esse echo.. se tiver tudo certo */ $q = mysql_query( $sql )or die( mysql_error() ); $num = mysql_num_rows( $q ); if( $num > 0) { $id_imasters = mysql_result($q, 0, 'id_user'); $apelido_imasters = mysql_result($q, 0, 'apelido'); $senha_imasters = mysql_result($q, 0, 'senha'); session_start(); $_SESSION['id_imasters'] = $id_imasters; $_SESSION['apelido_imasters'] = $apelido_imasters; $_SESSION['senha_imasters'] = $senha_imasters; //header('Location: opcoes.php'); } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 4, 2009 Ops.. nem me atentei à condição.. mas diz oq aparece no echo.. if(($apelido != '' ) and ($senha != '' )) { Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Junho 4, 2009 Esta parte do código está correta??? Veja que você coloca o nome como $apelido, e depois você usa $apelido_login... É pra ser assim mesmo??? $apelido=$_POST['$apelido']; //pq o form tem method="post" $senha=$_POST['$senha']; //pq o form tem method="post" if(($apelido_login) and ($senha_login)) { Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
AfroFlash 0 Denunciar post Postado Junho 4, 2009 Ops.. nem me atentei à condição.. mas diz oq aparece no echo.. if(($apelido != '' ) and ($senha != '' )) { sem a condiçao mostra o echo: SELECT * FROM `tb_user` WHERE `apelido` = '' AND `senha` = '' e o formulario de login. com a sua condição, o echo nao aparece, só aparece o formulario de login e nao é redirecionado para a pagina pq a header ta como comentário neh? Compartilhar este post Link para o post Compartilhar em outros sites
AfroFlash 0 Denunciar post Postado Junho 4, 2009 Humm... matias_rezende mudei: $apelido=$_POST['$apelido']; $senha=$_POST['$senha']; para: $apelido=$_POST['apelido_login']; $senha=$_POST['senha_login']; Agora sim, quando eu coloco um usuario e uma senha qualquer, aparece o echo: SELECT * FROM `tb_user` WHERE `apelido` = '' AND `senha` = '' Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 4, 2009 Também.. mas identificamos outro erro ali, como o matias_rezende disse. Poste o HTML do teu formulário. Tem que ficar igual cara.. $apelido=$_POST['apelido_login']; $senha=$_POST['senha_login'];a chave desse array, é o name dos inputs do form. Compartilhar este post Link para o post Compartilhar em outros sites
AfroFlash 0 Denunciar post Postado Junho 4, 2009 Postando o html do meu formulario: <form name="frm_login" method="post" action="<? echo $PHP_SELF; ?>"> <table width="40%" border="0" cellspacing="0" cellpadding="0"> <tr> <td colspan="2"><b><font face="Arial, Helvetica, sans-serif" size="3">IDENTIFICAÇÃO</font></b></td> </tr> <tr> <td width="33%" height="25"><font face="Arial, Helvetica, sans-serif" size="2">Apelido:</font></td> <td width="77%" height="25"><font face="Arial, Helvetica, sans-serif" size="2"> <input type="text" name="apelido_login" /></font></td> </tr> <tr> <td width="33%" height="25"><font face="Arial, Helvetica, sans-serif" size="2">Senha:</font></td> <td width="67%" height="25"><font face="Arial, Helvetica, sans-serif" size="2"> <input type="password" name="senha_login" /></font></td> </tr> <tr> <td colspan="2"><input type="submit" name="entrar" value="Entrar >>" /></td> </tr> </table> </form> Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 4, 2009 Então está Okay, rode assim: <?php include "conecta.php"; $apelido = $_POST['apelido_login']; $senha = $_POST['senha_login']; if(( $apelido != '' ) and ( $senha != '' )) { $sql = "SELECT * FROM `tb_user` WHERE `apelido` = '{$apelido}' AND `senha` = '{$senha}' "; // echo $sql; /* depois você comenta esse echo.. se tiver tudo certo */ $q = mysql_query( $sql )or die( mysql_error() ); $num = mysql_num_rows( $q ); if( $num > 0 ) { $id_imasters = mysql_result($q, 0, 'id_user'); $apelido_imasters = mysql_result($q, 0, 'apelido'); $senha_imasters = mysql_result($q, 0, 'senha'); session_start(); $_SESSION['id_imasters'] = $id_imasters; $_SESSION['apelido_imasters'] = $apelido_imasters; $_SESSION['senha_imasters'] = $senha_imasters; header('Location: opcoes.php'); } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
AfroFlash 0 Denunciar post Postado Junho 4, 2009 humm.. não deu >< continua dando a mesma coisa... parece que o header nao funciona aqui xDD Será que o problema tá no BD? eu acho que não pq eu consigo criar um guestbook com um banco de dados entao acho que tá okay. login.php: <?php include "conecta.php"; $apelido = $_POST['apelido_login']; $senha = $_POST['senha_login']; if(( $apelido != '' ) and ( $senha_login != '' )) { $sql = "SELECT * FROM `tb_user` WHERE `apelido` = '{$apelido}' AND `senha` = '{$senha}' "; // echo $sql; /* depois você comenta esse echo.. se tiver tudo certo */ $q = mysql_query( $sql )or die( mysql_error() ); $num = mysql_num_rows( $q ); if( $num > 0 ) { $id_imasters = mysql_result($q, 0, 'id_user'); $apelido_imasters = mysql_result($q, 0, 'apelido'); $senha_imasters = mysql_result($q, 0, 'senha'); session_start(); $_SESSION['id_imasters'] = $id_imasters; $_SESSION['apelido_imasters'] = $apelido_imasters; $_SESSION['senha_imasters'] = $senha_imasters; header('Location: opcoes.php'); } } ?> <html> <head> <title>Tutorial iMasters - index.php</title> </head> <body bgcolor="#FFFFFF" text="#000000"> <form name="frm_login" method="post" action="<? echo $PHP_SELF; ?>"> <table width="40%" border="0" cellspacing="0" cellpadding="0"> <tr> <td colspan="2"><b><font face="Arial, Helvetica, sans-serif" size="3">IDENTIFICAÇÃO</font></b></td> </tr> <tr> <td width="33%" height="25"><font face="Arial, Helvetica, sans-serif" size="2">Apelido:</font></td> <td width="77%" height="25"><font face="Arial, Helvetica, sans-serif" size="2"> <input type="text" name="apelido_login" /></font></td> </tr> <tr> <td width="33%" height="25"><font face="Arial, Helvetica, sans-serif" size="2">Senha:</font></td> <td width="67%" height="25"><font face="Arial, Helvetica, sans-serif" size="2"> <input type="password" name="senha_login" /></font></td> </tr> <tr> <td colspan="2"><input type="submit" name="entrar" value="Entrar >>" /></td> </tr> </table> </form> </body> </html> O create table da minha tabela tb_user: CREATE TABLE `tb_user` ( `id_user` int(11) NOT NULL auto_increment, `apelido` varchar(60) default NULL, `senha` varchar(20) default NULL, PRIMARY KEY (`id_user`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Junho 4, 2009 Olha aqui de novo... A variável está errada de novo... $apelido = $_POST['apelido_login']; $senha = $_POST['senha_login']; if(( $apelido != '' ) and ( $senha_login != '' ))// é $senha ou $senha_login??? Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
AfroFlash 0 Denunciar post Postado Junho 5, 2009 aeee brigadaum matias_rezende! agora sim funcionou...foi redirecionada para a pagina opcoes.php certinho... só que agora aparece a mensagem de área restrita...acho que o start_session nao funcionou huEHEHUEHUEHUehu vou tentar arrumar aqui e volto a postar se funcionou... mais uma vez obrigado por todos que tentaram me ajudar heheheh^^ Compartilhar este post Link para o post Compartilhar em outros sites