Sign in to follow this  
Guest --Steffan --

Sistema De Login Com Banco De Dados

Recommended Posts

Guest --Steffan --

Aee, estou iniciando essa doideira de PHP... preciso criar um sistema de login seguro, com PHP.

O meu servidor oferece o PHPMYADMIN, nele eu criei um banco de dados, e coloquei o nome de stemar87_login

Nele eu criei a seguinte tabela, p/ informar os usuários e suas senhas

CREATE TABLE usuarios (

id tinyint(3) NOT NULL auto_increment,

login varchar(50) NOT NULL,

senha varchar(32) NOT NULL,

primary key(id)

);

INSERT INTO usuarios VALUES ('','Felipe','82722');

INSERT INTO usuarios VALUES ('','Maria','12655');

Peguei esse modelo acima em um site, creio que onde coloquei felipe e maria, e suas senhas, sejam as informações p/ login dessas 2 pessoas.

Criei então 3 páginas: login.php / valida_session.php / logout.php

Além da página login.html (onde vai o form p/ digitar login e senha)

E também a página destino, apostilas.htlm, que é p/ onde vai ser redirecionado, caso esteja correto o login e senha. (ou pelo menos onde deveria ir, não está dando certo...)

Continuando...

Essa é a página login.html (só formulário):

<form name="form1" method="post" action="login.php">

<p>Login:

<input name="login" type="text" id="login">

</p>

<p>Senha:

<input name="senha" type="text" id="senha">

</p>

<p>

<input type="submit" name="Submit" value="Enviar >>">

</p>

</form>

Ela está em http://contabeis.freehostia.com/login.html

Veja as outras páginas:

login.php

<?php

//obtem os valores digitados

$login = $_POST["login"];

$senha = $_POST["senha"];

//acessa ao banco de dados

$cn = mysql_connect("localhost", "usuario", "senha");

mysql_select_db("banco");

$resultado = mysql_query("select * from usuarios where login = '$login'");

$linhas = mysql_num_rows($resultado);

if ($linhas ==0)//testa se a consulta retornou algum registro

{

echo "Nome ou senha incorreto(s). ";

echo "<a href=login.html>Clique aqui</a> para voltar.";

} else {

if ($senha != mysql_result($resultado, 0, "senha"))//confere a senha

{

echo "Nome ou senha incorreto(s). ";

echo "<a href=login.html>Clique aqui</a> para voltar.";

}else{//usuario correto.. vamos criar os cookies com sessions...

session_start();//nunca esqueça de por isso antes de usar session

$_SESSION["login_usuario"] = $login;

$_SESSION["senha_usuario"] = $senha;

// redireciona par a pagina principal

header("Location: apostilas.html");

}

}

mysql_close($cn);

?>

valida_session.php

<?php

session_start();

if (isset($_SESSION["login_usuario]) AND isset($_SESSION["senha_usuario"])) {

$login_usuario = $_SESSION["login_usuario"];

$senha_usuario = $_SESSION["senha_usuario"];

}else{

echo "Você não efetuou o login.";

exit();/*caso não tinha session.. quer dizer.. ele não logou*/

} /*aqui primeiro ele checa para ver se exite essas Sessoes, e depois ele coloca o valor das sessoes nessas variaveis... para fazermos os testes!*/

if(!(empty($login_usuario) OR empty($senha_usuario)))

{

//acessa ao banco de dados

$cn = mysql_connect("localhost", "usuario", "senha");

mysql_select_db("banco");

$resultado = mysql_query("select * from usuarios where login = '$login_usuario'");

if (mysql_num_rows($resultado) == 1)/*caso exista esse login.. vamos testar a senha então*/

{

if ($senha_usuario != mysql_result($resultado, 0, "senha"))

{

unset ($_SESSION["nome_usuario"]);/*apaga a session que existia mas era errada..*/

unset ($_SESSION["sehna_usuario"]);

echo "Você não efetuou o login.";

exit();

}

}else {

unset ($_SESSION["nome_usuario"]);

unset ($_SESSION["sehna_usuario"]);

echo "Você não efetuou o login.";

exit();

}

}else{

echo "Você não efetuou o login.";

exit();/*caso das sessions estarem vazias*/

}

mysql_close($cn);

/* Em toda página que você for querer proteger(só para quem estiver logado pode entrar na pagina)... ponha isso no começo dela (antes da tag htlm):

<?php

include "valida_session.php";

?>

*/

?>

logout.php

<?php

session_start();

$_SESSION = array();

session_destroy();

header("Location: login.htm");

?>

Ao clicar no botão enviar, em vez de carregar a página destino, aparece um erro:

Warning: mysql_connect(): Can't connect to MySQL server on 'contabeis.freehostia.com' (111) in /home/www/stemar87.freehostia.com/login.php on line 6

Warning: mysql_select_db(): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /home/www/stemar87.freehostia.com/login.php on line 7

Warning: mysql_select_db(): A link to the server could not be established in /home/www/stemar87.freehostia.com/login.php on line 7

Warning: mysql_query(): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /home/www/stemar87.freehostia.com/login.php on line 9

Warning: mysql_query(): A link to the server could not be established in /home/www/stemar87.freehostia.com/login.php on line 9

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/www/stemar87.freehostia.com/login.php on line 10

Nome ou senha incorreto(s). Clique aqui para voltar.

Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in /home/www/stemar87.freehostia.com/login.php on line 29

Informações: login.php:

Linha 6: $cn = mysql_connect("localhost", "usuario", "senha");

Linha 7: mysql_select_db("banco");

Linha 9: $resultado = mysql_query("select * from usuarios where login = '$login'");

Linha 10: $linhas = mysql_num_rows($resultado);

Linha 29: mysql_close($cn);

Me ajudem a corrigir...

Obrigado.

Share this post


Link to post
Share on other sites

Para conectar você usa assim:

mysql_connect("localhost", "usuario", "senha");
mysql_select_db("banco");
Ou assim:
$cn = mysql_connect("localhost", "usuario", "senha");
mysql_select_db("banco", $cn);

Share this post


Link to post
Share on other sites
Guest ju

olá, eu coloquei igualzinho mas dá http 404 como se não encontrasse(isso quando coloco o login e senha certo mas quando coloco errado ele da a mensagem certa para volta .

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this