Posted 01/08/2003, 05:28
Bom pessoal..
Estava precisando de um sistema de login, e como naum haviam sistemas bons e confiáveis de login usando MySQL na Net, eu resolví estudar um pouco e fazer o meu próprio..
Ficou bom, e de acordo com os meus conhecimentos, sem falhas de segurança..
Bom vamos lá, execute isso no seu banco de dados MySQL:
CREATE TABLE `Sis_login` (
`id` int(3) NOT NULL auto_increment,
`login` varchar(8) default NULL,
`senha` varchar(8) default NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;
Depois faça a página:
login.phpPHP |
<? session_name("MeuLogin"); session_start(); session_destroy();
if($_GET['login'] == "falhou") { print $_GET['causa']; } ?> <form name="form1" method="post" action="loga.php?acao=logar"> Login: <input type="text" name="nome"><BR> Senha: <input type="password" name="pwd"><BR> <input type="submit"> </form> |
Depois a página: loga.php
PHP |
<? session_name("MeuLogin"); session_start();
if($_GET['acao'] == "logar") { $conn = mysql_connect("localhost","user","senha"); //configure os dados do seu MySQL $banco = mysql_select_db("SEU_BANCO"); //coloque o nome do seu banco de dados $nome = $_POST['nome']; $q_user = mysql_query("SELECT * FROM Sis_login WHERE login='$nome'");
if(mysql_num_rows($q_user) == 1) { $query = mysql_query("SELECT * FROM Sis_login WHERE login='$nome'"); $dados = mysql_fetch_array($query); if($_POST['pwd'] == $dados['senha']) { session_register("nome"); header("Location: page.php"); exit; } else { header("Location: login.php?login=falhou&causa=".urlencode('Senha Errada')); exit; } } else { header("Location: login.php?login=falhou&causa=".urlencode('User Inválido')); exit; } }
//agora a parte que verifica se o login já foi feito if(session_is_registered("nome") == false) { header("Location: login.php"); } ?> |
Pronto, o principal já tá feito..
Bom pessoal, como pedido, eu to acrescentando no script, uma página para acrescentar usuários, creio q isso facilita aos q ainda não tem intimidade com a interface do MySQL..
Vamos lá, crie uma página com um nome qualquer, exemplo: new_users.php, e coloque esse código nela:
PHP |
<? if($_GET['act']=="gravar") { $conn = mysql_connect("localhost","user","senha"); $banco = mysql_select_db("SEU_BANCO");
mysql_query("INSERT INTO Sis_login (id, login, senha) VALUES (NULL, '{$_POST['nuser']}', '{$_POST['senha']}')");
print "<center>Usuário criado com sucesso!</center>"; } else { ?> <form name="newuser" method="post" action="?act=gravar"> User: <input type="text" name="nuser" maxlength=8><BR> Senha: <input type="password" name="senha" maxlength=8><BR><BR> <input type="submit" value="Enviar!"> </form> <? } ?> |
As páginas seguintes são só um complemento para mostrar o funcionamento do script:
page.php
PHP |
<? require("loga.php"); ?> Olá <B><? print $_SESSION["nome"]; ?></B>,<BR> Aqui vem qualquer coisa, inclusive um link para outras páginas.<BR><BR> <a href="page2.php">Link</a> |
page2.php
PHP |
<? require("loga.php"); ?> Olá <B><? print $_SESSION["nome"]; ?></B>,<BR> Aqui tb diz que está logado direitinho |
Como visto acima, para restringir o acesso às páginas, é só vc acrescentar isso nas primeiras linhas da page:
PHP |
<? require("loga.php"); ?> |
E já era, todas as páginas que estiverem isso estarão protegidas.. Caso o login naum tenha sido feito, elas redirecionarão para a página que se faz o login..
Bom espero que tenham gostado, e que seja de bom proveito a todos..
Ps.: Testem esse script de preferência num servidor Linux, pois aqui mesmo no meu PC rodando Win, ele naum funfa.. Fui..
Edição feita por: Chinello Cybernético, 16/07/2004, 05:35.
Diego Sampaio - kroW - PHP Framework > http://chinelloweb.net/chinello at gmail dot comSystem > Athlon 64 3200+ Mobile | Kubuntu 7.04 Fesity Fawn AMD64 | Kernel 2.6.20-16
Coding @ KDE 3.5.7 | PHP 5.2.1 | Apache 2.2.3 | MySQL 5.0.38