Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

_M!K0L_

Sistema de Login e Senha c/ Session + MD5

Recommended Posts

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;}?>
install.php
<?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";?>
cadastro.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><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: 360px;}.FonTop{	font-family: Verdana;}--></style></head><body><center><fieldset id="field"><legend><font size="2" face="verdana">Cadastro</font></legend><form action="cad_done.php" method="post" name="form1">  <table width="200" border="0" cellpadding="0" cellspacing="0">	<tr>	  <td class="text_form">Login</td>	  <td><div align="center">		<input name="login" type="text" id="login" size="20">	  </div></td>	</tr>	<tr>	  <td class="text_form">Senha</td>	  <td><div align="center">		<input name="senha" type="password" id="senha" size="20">	  </div></td>	</tr>  </table>  <br><fieldset><legend><font size="2" face="verdana">Contato</font></legend><table width="320" border="0" cellpadding="0" cellspacing="0">  <tr>	<td width="50" class="text_form">E-mail</td>	<td><div align="center">	  <input name="email" type="text" id="email" size="40">	</div></td>  </tr></table></fieldset><br><fieldset><legend><font size="2" face="verdana">Ação</font></legend><input name="Cadastrar" type="submit" value="Cadastrar"><input name="Limpar" type="reset" value="Limpar"></fieldset></form></fieldset></center></body></html>
cad_done.php
<?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\">";}?>
index.php
<?//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>
restringir.php
<?//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;}?>
logout.php
<?session_start();session_destroy();echo "<meta http-equiv=\"refresh\" content=\"0; URL=index.php\">";exit;?>
mudar_senha.php
<?//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>
gerar_senha.php <~ Para gerar senha em MD5
<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>
COMENTEM OBRIGADO...

Sistema pronto para teste:
[-- Clique Aqui para ver o Sistema Pronto --]

Caso queira também pode fazer o download em *.RAR do sistema pronto...


Imagem Postada

Tamanho: 5KB
Senha: by mikol

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai ferro tudo 0opassa direto ... ;P..aqui ele é normal, tem que digitar os 2 campo certo...o que será que pode ser?... podemos melhorar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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($_SESSION['login']) && isset($_SESSION['senha'])) {

        $login = $_SESSION['login'];

        $senha = $_SESSION['senha'];

        require("SQL.php");

        mysql_select_db($database_SQL, $SQL);

        $query = mysql_query("SELECT * FROM usuarios WHERE login='$login' AND senha='$senha'") or die(mysql_error());

        $rTestar = mysql_num_rows($query);

}

 

bota ssim

 

PHP
if(isset($_SESSION['login']) && isset($_SESSION['senha'])) {

        $login = $_SESSION['login'];

        $senha = $_SESSION['senha'];

        $id = $_SESSION['id'];

        require("SQL.php");

        mysql_select_db($database_SQL, $SQL);

        $query = mysql_query("SELECT * FROM usuarios WHERE login='$login' AND senha='$senha' AND id='$id'") or die(mysql_error());

        $rTestar = mysql_num_rows($query);

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

"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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.