Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Sistema de Login e Senha c/ Session + MD5
Script por: _M!K0L_
Arquivos
[*]SQL.php
[*]install.php
[*]cadastro.php
[*]cad_done.php
[*]index.php
[*]restringir.php
[*]area_restrita.php
[*]logout.php
[*]gerar_senha.php
[*]mudar_senha.php
Configure antes de instalar...
SQL.php
<?php$hostname_SQL = ""; //Default: localhost$database_SQL = "";$username_SQL = ""; //Default: root$password_SQL = "";$SQL = mysql_pconnect($hostname_SQL, $username_SQL, $password_SQL) or trigger_error(mysql_error(),E_USER_ERROR); mysql_select_db($database_SQL, $SQL);//Anti-SQL-Inject não mexer./* Criado por Michael Andrei Donini 08/12/2007 as 04:39pm */function anti_injection($string){ $string = str_ireplace(" or ", "", $string); $string = str_ireplace("select ", "", $string); $string = str_ireplace("delete ", "", $string); $string = str_ireplace("create ", "", $string); $string = str_ireplace("drop ", "", $string); $string = str_ireplace("update ", "", $string); $string = str_ireplace("drop table", "", $string); $string = str_ireplace("show table", "", $string); $string = str_ireplace("'", "", $string); $string = str_replace("#", "", $string); $string = str_replace("=", "", $string); $string = str_replace("--", "", $string); $string = str_replace("-", "", $string); $string = str_replace(";", "", $string); $string = str_replace("*", "", $string); $string = strip_tags($string); $string = addslashes($string); return $string;}?><?require("SQL.php");/*-- -- login: teste-- senha: teste-- Email: teste@teste-- */mysql_query("CREATE TABLE `usuarios` ( `id` int(6) NOT NULL auto_increment, `login` varchar(255) NOT NULL default '', `senha` varchar(255) NOT NULL default '', `email` varchar(255) NOT NULL default '', PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2; ") or die(mysql_error());mysql_query("INSERT INTO `usuarios` VALUES (1, 'teste', '698dc19d489c4e4db73e28a713eab07b', 'teste@teste');") or die(mysql_error());echo "Tabela usuarios Instalada com sucesso";?><?require("SQL.php");$local = "index.php"; // Local onde deve ser redirecionado a pessoa apos o cadastro.$login = anti_injection($_POST['login']);$senha = anti_injection($_POST['senha']);$senha = md5($senha);$email = anti_injection($_POST['email']);if(isset($login) && isset($senha) && $login != "" && $email != ""){mysql_query(" INSERT INTO usuarios (id, login, senha, email) VALUES (NULL, '$login', '$senha', '$email') ") or die(mysql_error());?><script language="javascript" type="text/javascript">alert("Cadastro Feito com Sucesso");</script><?echo "<meta content=\"0; URL=$local\" http-equiv=\"refresh\">";}?><?//Mude aqui para onde o usuário vai ser redirecionado caso o Login for bem sucedido$pagina_restrita = "area_restrita.php";if(isset($_GET['msg']) && $_GET['msg'] != "") { require("SQL.php"); $mensagem = anti_injection($_GET['msg']);} else { $mensagem = base64_encode("Acesso para Área Restrita");}if($_SERVER['REQUEST_METHOD'] == "POST"){ if(isset($_POST['login']) && isset($_POST['senha'])){ require("SQL.php"); $login = anti_injection($_POST['login']); $senha = md5(anti_injection($_POST['senha'])); $query = mysql_query("SELECT * FROM usuarios WHERE login='$login' AND senha='$senha'") or die(mysql_error()); $rTestar = mysql_num_rows($query); $row = mysql_fetch_assoc($query); if($rTestar > '0'){ //session_start(); session_register('email'); session_register('login'); session_register('senha'); $_SESSION['email'] = $row['email']; $_SESSION['login'] = $row['login']; $_SESSION['senha'] = $row['senha']; echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $pagina_restrita . "\">"; exit; } else { $mensagem = base64_encode("<font color=\"red\"><b>Login ou senha Invalida</b></font>"); } }}?><html><head><title>Untitled Document</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css"><!--.text_form {font-family: Verdana; font-size: 10px; font-weight: bold; }.table{ margin: 0px; padding: 2px;}#field { margin: 0px; padding: 2px; width: 260px;}--></style></head><body><form name="form1" method="post" action=""><div align="center"><fieldset id="field"><legend><? echo "<font face=\"Verdana\" size=\"2\"><b>" . base64_decode($mensagem) . "</b></font>"; ?></legend> <table width="245" border="0" align="center" cellpadding="0" cellspacing="0" class="table"> <tr> <td width="100" scope="col"><span class="text_form">Login:</span></td> <td width="145" scope="col"><input name="login" type="text" id="login"></td> </tr> <tr> <td width="100" scope="row"><span class="text_form">Senha:</span></td> <td width="145"><input name="senha" type="password" id="senha"></td> </tr> <tr> <td width="100" scope="row"></td> <td width="145"><input type="submit" name="Submit" value="Logar"> <input type="reset" name="Submit2" value="Limpar"></td> </tr> </table><a href="mudar_senha.php">Esqueci/Mudar a senha</a><br><a href="cadastro.php">Cadastrar-se</a> </fieldset> </div></form></body></html><?//Coloque aqui uma mensagem caso a pessoa tente entrar em uma página protegida sem autenticação$mensagem = base64_encode("Faça o Login primeiro"); session_start();if(isset($_SESSION['login']) && isset($_SESSION['senha'])) { $login = $_SESSION['login']; $senha = $_SESSION['senha']; require("SQL.php"); $query = mysql_query("SELECT * FROM usuarios WHERE login='$login' AND senha='$senha'") or die(mysql_error()); $rTestar = mysql_num_rows($query);}if(isset($rTestar) && $rTestar > '0'){ $row = mysql_fetch_assoc($query);} else { echo "<meta http-equiv=\"refresh\" content=\"0; URL=index.php?msg=$mensagem\">"; exit;}?><?session_start();session_destroy();echo "<meta http-equiv=\"refresh\" content=\"0; URL=index.php\">";exit;?><?//Mude aqui as Menssagens$mensagem = "Senha alterada com sucesso"; //Menssagem exibida se a senha for alterada com sucesso$mensagem1 = "Error ao alterar a senha"; // Mensagem de error caso a senha não foi alteradaif(isset($_POST['login']) && isset($_POST['senha']) && isset($_POST['nsenha']) && isset($_POST['type']) && $_POST['type'] == "1") { require('SQL.php'); $login = anti_injection($_POST['login']); $senha = md5(anti_injection($_POST['senha'])); $nsenha = md5(anti_injection($_POST['nsenha'])); $query = mysql_query("SELECT * FROM usuarios WHERE login='$login' AND senha='$senha'") or die(mysql_error()); $n_rows = mysql_num_rows($query); $row = mysql_fetch_assoc($query); if($n_rows > "0"){ $update = mysql_query("UPDATE usuarios SET senha='$nsenha' WHERE login='$login'") or die(mysql_error()); echo "<font face=\"verdana\" color=\"#FF0000\"><b>" . $mensagem . "</b></font><br>"; } else { echo "<font face=\"verdana\" color=\"#FF0000\"><b>" . $mensagem1 . "</b></font><br>"; }}if(isset($_POST['login']) && isset($_POST['email']) && isset($_POST['nsenha']) && isset($_POST['type']) && $_POST['type'] == "2") { require('SQL.php'); $login = anti_injection($_POST['login']); $email = anti_injection($_POST['email']); $nsenha = md5(anti_injection($_POST['nsenha'])); $query = mysql_query("SELECT * FROM usuarios WHERE login='$login' AND email='$email'") or die(mysql_error()); $n_rows = mysql_num_rows($query); $row = mysql_fetch_assoc($query); if($n_rows > "0"){ $update = mysql_query("UPDATE usuarios SET senha='$nsenha' WHERE login='$login'") or die(mysql_error()); echo "<font face=\"verdana\" color=\"#FF0000\"><b>" . $mensagem . "</b></font><br>"; } else { echo "<font face=\"verdana\" color=\"#FF0000\"><b>" . $mensagem1 . "</b></font><br>"; }}?><html><head><title>Mudar Senha</title></head><body><form name="form1" id="form1" action="mudar_senha.php" method="POST"><center><table border="0" width="100%"><tr><td>Login:</td><td><input type="text" name="login" id="login"></td></tr><tr><td>Senha Antiga:</td><td><input type="password" name="senha" id="senha"></td></tr><tr><td>Nova Senha:</td><td><input type="password" name="nsenha" id="nsenha"></td></tr><tr><td>E-mail:</td><td><input type="text" name="email" id="email"></td></tr><tr><td>Tipo:</td><td><input name="type" type="radio" value="1"> Selecione aqui caso você saiba sua senha antiga.<br> <input name="type" type="radio" value="2"> Selecione aqui caso você não saiba sua senha antiga.</td></tr><tr><td></td><td><input name="submit" type="submit" value="Mudar Senha"></td></tr></table></center></form></body></html><html><head><title>Untitled Document</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body><?if(isset($_POST['md5'])) {echo md5($_POST['md5']);echo "<hr>";}?><form name="form1" method="post" action=""> <input name="md5" type="text" id="md5"> <input type="submit" name="Submit" value="Gerar Senha em MD5"></form></body></html>
*Bom seguinte, agora está pronta seu sistema de login e senha...
para restringir as páginhas que so quem tiver logado poderá ver inclua isso antes das tag
**<html>***
<?include("restringir.php");?>
Exemplo de uma página restrita
area_restrita.php
<?include("restringir.php");?><html><head><title>Untitled Document</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body><?echo "Login: " . $_SESSION['login'] . "<br />";echo "Senha: " . $_SESSION['senha'] . "<br />";echo "E-mail: " . $_SESSION['email'] . "<br />";echo "<a href=\"logout.php\">Sair</a>";?></body></html>Sistema pronto para teste:
[[-- Clique Aqui para ver o Sistema Pronto --]](http://mikol.free-site-host.com/teste/)
Caso queira também pode fazer o download em .RAR do sistema pronto...*
/applications/core/interface/imageproxy/imageproxy.php?img=http://img515.imageshack.us/img515/403/downloadbw8.gif&key=bc0728303814e21986d873b72345abb0982273befed54671a7cf2b3d6f1f271c" alt="Imagem Postada" />
Tamanho: 5KB
Senha: by mikol
ai ferro tudo 0opassa direto ... ;P..aqui ele é normal, tem que digitar os 2 campo certo...o que será que pode ser?... podemos melhorar...
opaaa.... 100%, consegui achar o erro aki, era eu mesmo q tinha trocado um parâmetro aki... fmz... 100% agora...rsrsrs
quando trabalho com ele no servidor intranet ele funciona normalmente, agora qdo mando ele pro ar... ta dando os seguintes errosWarning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/editorab/public_html/site/top/sql.php:2) in /home/editorab/public_html/site/top/index.php on line 20Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/editorab/public_html/site/top/sql.php:2) in /home/editorab/public_html/site/top/index.php on line 20Warning: Cannot modify header information - headers already sent by (output started at /home/editorab/public_html/site/top/sql.php:2) in /home/editorab/public_html/site/top/index.php on line 27
agora fiz umas mudança e já testei em localhost e em um host dedicado ai,, e funciono certinho do jeito que está ai com as novas mudanças.....
aki ta funfando certo, mas ta aparecendo em cima um erro q é no arquivos restringir.php e no index.php onde tem o session_start(); nessas duas chamadas esta dando erro... mas isso nao está afetando o sistema, só q fica escrita a msg em cima
cara coloca assim
PHP
...// session_start();
...
no index.php onde tem lá!!! o session_start();
... eu fiz aqui e ele loga normal, ve se assim desaparece as msg...
Como ficaria o script para alteração de senha, com o md5?
bom, pessoal aperfeiçoei o script e adicionei o mudar_senha.phpquem já tinha copiado o sistema, copie de novo porque fiz algumas mudanças!!Obrigado!!!
Olá '_M!K0L_' ...Esta funcionando certinho, porém ao alterar a senha caso um outro usuario tenha somente o login ele conseguirá fazer a alteração e entrar na página restrita. :(/>Abraço.Si
Ta faltando deslogar ao fechar o navegador... se não o usuario pode esqucer de deslogar.
Eh... o sisteminha ta bom... mais ainda não to entendendo como funciona... eu coloco o script dentro do arquivo que eu quero proteger... mais msm assim a pagina entra direto.... alguem pode explicar melhor?
Olá pessoal, gostei muito do sistema de login, já consegui fazer rodar no servidor, mesmo sem ter muito conhecimento de PHP, agora vou comecar a implementar.
Estou com um problema na hora em que logo no index.php ele retorna o seguinte erro antes de mostrar os dados do usuario, detalhe, este erro aparece e logo some.
Warning: session_register() [function.session-register]: Cannot send session cache limiter - headers already sent
(output started at /home/doperco/public_html/SQL.php:11)
in /home/doperco/public_html/index.php on line 24
opa galera , desculpa minhas perguntas bem iniciantes
se alguem tiver um tempo sobrando ai , me da um toque por favor
tipo eu preciso baixar o phpAdmin ou aquele Easyphp ou soh com o http://mysql01.dominio.com/ ja pra fazer isso ?
outra pergunta seria
$hostname_SQL = "localhost";
$database_SQL = "teste";
$username_SQL = "root";
$password_SQL = "";
como ficaria essa parte configurada pro meu servidor ?
o proprio instal.php ja cria as tabelas no mysql neh ? nao preciso criar nda ?
desculpa de novo pelas newbiessis
grato rodrigo
Oi galera nossa 100% o login ae!
só tenho uma dúvida, e se eu quizer fazer um esquema tipo um orkut da vida q cada usuario cai numa pagina diferente
tipo:
O "a" cai na "area_restrita"
já o "b" cai na "area_restrita2"
se alguem puder ajudar eu agradeço as paginas restritas 1 e 2 talz eu ja criei só queria saber como diferenciar.
vlw! abraços!
cara
faiz assim
ali no index.php
onde tem
session_register .. etc..
coloca isso
PHP
session_register("id");$_SESSION['id'] = $row['id'];
e no
restringir.php
na linha onde tem
PHP
if([isset](http://br.php.net/isset)($_SESSION['login']) && [isset](http://br.php.net/isset)($_SESSION['senha'])) { $login = $_SESSION['login'];
$senha = $_SESSION['senha'];
require("SQL.php");
[mysql_select_db](http://br.php.net/mysql_select_db)($database_SQL, $SQL);
$query = [mysql_query](http://br.php.net/mysql_query)("SELECT * FROM usuarios WHERE login='$login' AND senha='$senha'") or [die](http://br.php.net/die)([mysql_error](http://br.php.net/mysql_error)());
$rTestar = [mysql_num_rows](http://br.php.net/mysql_num_rows)($query);
}
bota ssim
PHP
if([isset](http://br.php.net/isset)($_SESSION['login']) && [isset](http://br.php.net/isset)($_SESSION['senha'])) { $login = $_SESSION['login'];
$senha = $_SESSION['senha'];
$id = $_SESSION['id'];
require("SQL.php");
[mysql_select_db](http://br.php.net/mysql_select_db)($database_SQL, $SQL);
$query = [mysql_query](http://br.php.net/mysql_query)("SELECT * FROM usuarios WHERE login='$login' AND senha='$senha' AND id='$id'") or [die](http://br.php.net/die)([mysql_error](http://br.php.net/mysql_error)());
$rTestar = [mysql_num_rows](http://br.php.net/mysql_num_rows)($query);
}Não consigo deixar logado no site... toda vez que mudo de link pede login e senha de novo.
Como resolvo isso?
tenho varias areas restritas... o script suporta isso?
E aí galera do forum.
muito bom o script, mas eu to com uma duvida no redirecionamento do usuario.
Como eu faço para que quando o usuario faça o login, ele volte para a página onde estava navegando antes de se logar e não volte sempre para a mesma página que eu indiquei no script?
"Totalmente seguro...."????????????
Tive que me cadastrar aqui só pra te responder....
Cada, além de ele estar aberto pra SQL Injection e Session Crash você usa META (idade da pedra) pra direcionar os usuários de volta.
Quando você aprender a utilizar as funções direito eu volto a responder...
Valeu!
>
"Totalmente seguro...."????????????
Tive que me cadastrar aqui só pra te responder....
Cada, além de ele estar aberto pra SQL Injection e Session Crash você usa META (idade da pedra) pra direcionar os usuários de volta.
Quando você aprender a utilizar as funções direito eu volto a responder...
Valeu!
sistema mudado
com anti sql
..
100% seguro..
e eu usei o meta porque é o mais simples e facil de utilizar, e alem disso todos que estão no PHP estudaram HTML antes e concerteza viram a tag META...
assim todos entendemos com ela funciona e como modificarmos ela!!
E aí galera.
eu instalei o sistema e ta dando erro na hora de fazer o login.
O erro é o seguinte:
Fatal error: Call to undefined function: str_ireplace() in C:\webmaster\curso_imasters\login\SQL.php on line 15
o que está errado?
str_ireplace() só existe a partir do PHP 5. Você usa o 4, né?
Veja aqui mesmo no laboratório de scripts uma função homônima para usar com PHP 4
É verdade!!
Tá tão "seguro" que nem conseguir abrir o arquivo *.rar,
Tá pedindo senha na hora da extração?
Olhe o tópico com atenção.
Senha: by mikol
Esse teu "anti-sql injection" não faz muita coisa não. Se o cara tiver o nome de drop com certeza ele não vai logar.
CODE
function anti_injection ($valor, $mysql_conn)
{
if (!get_magic_quotes_gpc()) # verifica se é necessário colocar as barras
{
$valor addslashes($valor);
}
$valor = mysql_real_escape_string($valor, $mysql_conn); # isso faz tudo e um pouco mais com as aspas na mensagem
return $valor;
}
Essa função aí em cima faz mais que a sua, e olha que dá pra incrementar mais ainda.
Valeu!
kra mto bom, ta quase 100%, pelo menos no meu aki, qdo você digita o login correto ele nem examina a senha e ja passa direto....