Jump to content

Recommended Posts

Posted

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

Posted

"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

Posted

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

Posted

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.
       
?>
Posted

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
Posted

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.