rubenbrito Posted May 3, 2012 at 06:37 PM Report #452949 Posted May 3, 2012 at 06:37 PM Boas pessoal. 🙂 Estou aqui com um problema no sistema de login com variáveis de sessão. Aqui vai ... INDEX.PHP <?php session_start(); ?> <!DOCTYPE html> <html> <head> <title>INDEX</title> <link rel="stylesheet" type="text/css" href="estilo.css"> <script type="text/javascript"> function aoCarregar(){ escondeTudo(); document.getElementById('inicio').style.display = "none"; } function escondeTudo(){ document.getElementById('inicio').style.display = "none"; document.getElementById('produtos').style.display = "none"; document.getElementById('sobrenos').style.display = "none"; } function abrirPag(nome){ escondeTudo(); document.getElementById(nome).style.display = "block"; } </script> </head> <body onload="javascript:aoCarregar();"> <div id="loginbar"> <? include("login.html");?> </div> <? include("menu.html"); ?> <div id="inicio"><? include("inicio.php");?></div> <div id="produtos"><? include("produtos.php");?></div> <div id="sobrenos"><? include("sobrenos.php");?></div> </body> </html> LOGIN.HTML <!DOCTYPE html> <html> <head><title>Inicio</title> </head> <body> <form action="login.php" method="post"> <table align="right"> <tr> <td> Utilizador:<input type="text" name="username" id="username"> </td> <td> Password:<input type="password" name="password" id="password"> </td> <td> <input type="submit" value="Entrar"> </td> </tr> </table> </form> </body> </html> <?php $lig = mysql_connect("localhost","root") or die ("Erro na ligação ao servidor de Base de Dados"); // ligação ao servidor $bd = mysql_select_db("arco",$lig) or die ("Erro na ligação à Base de Dados."); //ligação à base de dados. ?> LOGIN.PHP <?php session_start(); include("config.php"); $username = $_POST['username']; $password = $_POST['password']; $sql = mysql_query("SELECT * FROM usuarios WHERE username = '$login' AND password = '$password'"); if(mysql_num_rows($sql) == 1){ $_SESSION['username_sess']=$username; $_SESSION['password_sess']=$password; include("index.php"); } else{ echo "FAIL"; } ?> Tenho a base de dados "arco", a tabela "usuarios" com os seguintes campos: http://imageshack.us/photo/my-images/7/bdarco.jpg/ Em Utilizador coloco: admin Em Password: admin Quando clico "Entrar" dá-me o seguinte erro: http://imageshack.us/photo/my-images/846/errowb.jpg/ Cumprimentos, Rúben Brito
ruiFernandes Posted May 3, 2012 at 07:10 PM Report #452953 Posted May 3, 2012 at 07:10 PM no login.php tens $login em vez de $username - Rui Fernandes
rubenbrito Posted May 3, 2012 at 09:21 PM Author Report #452967 Posted May 3, 2012 at 09:21 PM no login.php tens $login em vez de $username desapareceu apenas o 3º erro. Relativamente aos 2 primeiros erros, de que se tratam ? Nunca os tive antes. O sistema de login foi seguido por este tutorial, porém adaptado às minhas necessidades: http://www.upinside.com.br/video-aulas/php/criando-sistema-de-login-e-senha-com-session%E2%80%93parte-05 Parei na parte 05.
ruiFernandes Posted May 3, 2012 at 10:00 PM Report #452987 Posted May 3, 2012 at 10:00 PM aí diz que erro é e onde é.... apenas tens que ver nas linhas que indica que tem erro e procurar algo que esteja mal... os erros estão no ficheiro config.php - Rui Fernandes
rubenbrito Posted May 3, 2012 at 10:29 PM Author Report #452991 Posted May 3, 2012 at 10:29 PM os erros estão no ficheiro config.php Eu não encontrei erro nenhum, encontras-te algum ? ?
Th3Alchemist Posted May 3, 2012 at 10:58 PM Report #452997 Posted May 3, 2012 at 10:58 PM "Espero ajuda de MODERADORES sfv." loool mas nós também somos gente! A tua query não devolve resultados válidos, faz a verificação do SQL... if($sql) { if(mysql_num_rows($result) == 1) { //Login com successo session_regenerate_id(); $_SESSION['username_sess'] = $username; session_write_close(); header("location: ./index.php"); exit(); } else { //Login falhou header("location: ./login.html"); exit(); } } else { die("Query falhou " . mysql_error()); //teu erro deve andar por aqui } deverás tambem utilizar a função header() pois o brower redirecionará se a dada página... Senão ficas pela página do login com conteudo do index... não tem muita lógica
ruiFernandes Posted May 3, 2012 at 11:12 PM Report #453003 Posted May 3, 2012 at 11:12 PM Eu não encontrei erro nenhum, encontras-te algum ? ? Espero ajuda de MODERADORES sfv. não encontrei porque não postas-te o código do "config.php".... lê a descrição dos erros que te aparecem no ecrã dizem o que precisas de saber, tens praí uma tradução brasileira misturada com inglês, eu não percebi o que dizia em brasileiro na imagem sequer, mas diz lá o ficheiro e linhas onde contém os erros - Rui Fernandes
rubenbrito Posted May 3, 2012 at 11:58 PM Author Report #453006 Posted May 3, 2012 at 11:58 PM não encontrei porque não postas-te o código do "config.php".... lê a descrição dos erros que te aparecem no ecrã dizem o que precisas de saber, tens praí uma tradução brasileira misturada com inglês, eu não percebi o que dizia em brasileiro na imagem sequer, mas diz lá o ficheiro e linhas onde contém os erros config.php <?php $lig = mysql_connect("localhost","root") or die ("Erro na ligação ao servidor de Base de Dados"); // ligação ao servidor $bd = mysql_select_db("arco",$lig) or die ("Erro na ligação à Base de Dados."); //ligação à base de dados. ?>
rubenbrito Posted May 4, 2012 at 12:01 AM Author Report #453007 Posted May 4, 2012 at 12:01 AM A tua query não devolve resultados válidos, faz a verificação do SQL... if($sql) { if(mysql_num_rows($result) == 1) { //Login com successo session_regenerate_id(); $_SESSION['username_sess'] = $username; session_write_close(); header("location: ./index.php"); exit(); } else { //Login falhou header("location: ./login.html"); exit(); } } else { die("Query falhou " . mysql_error()); //teu erro deve andar por aqui } deverás tambem utilizar a função header() pois o brower redirecionará se a dada página... Senão ficas pela página do login com conteudo do index... não tem muita lógica quando tento entrar aparece a login.html, ou seja esta condiçao ta a falhar: if(mysql_num_rows($result) == 1) { Importas-te de me explicar o que fazem estas linhas de código sfv? session_regenerate_id(); //esta $_SESSION['username_sess'] = $username; session_write_close(); // e esta
ruiFernandes Posted May 4, 2012 at 12:57 AM Report #453009 Posted May 4, 2012 at 12:57 AM o session_regenerate_id() serve para criar um novo id de session, cada vez que abres um site, uma session é criada, e isso serve para criar outra diferente index.php <?php session_start(); if(!isset($_SESSION['username_sess'])){ header("Location: login.html"); } ?> <html> <head> <title>INDEX</title> <script type="text/javascript"> function aoCarregar(){ escondeTudo(); document.getElementById('inicio').style.display = "none"; } function escondeTudo(){ document.getElementById('inicio').style.display = "none"; document.getElementById('produtos').style.display = "none"; document.getElementById('sobrenos').style.display = "none"; } function abrirPag(nome){ escondeTudo(); document.getElementById(nome).style.display = "block"; } </script> <style type="text/css"> #menu{list-style:none;} #menu li{display:inline;margin-left:20px;} </style> </head> <body onload="javascript:aoCarregar();"> <ul id="menu"> <li><a href="javascript:void();" onclick="javascript:abrirPag('inicio');">INICIO</a></li> <li><a href="javascript:void();" onclick="javascript:abrirPag('produtos');">PRODUTOS</a></li> <li><a href="logout.php">Sair</a></li> </ul> <div id="inicio"><?php require("inicio.php");?></div> <div id="produtos"><?php require("produtos.php");?></div> <div id="sobrenos"><?php require("sobrenos.php");?></div> </body> </html> login.php <?php session_start(); include("config.php"); $username = $_POST['username']; $password = $_POST['password']; $user = mysql_query("SELECT * FROM usuarios WHERE username = '$username' AND password = '$password'"); if(mysql_num_rows($user) > 0){ $_SESSION['username_sess']=$username; $_SESSION['password_sess']=$password; header("Location: index.php"); }else{ echo "FAIL"; } ?> logout.php <?php session_start(); session_destroy(); header("Location: index.php"); ?> - Rui Fernandes
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now