Ir para conteúdo

POWERED BY:

Arquivado

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

DiegoJGL

Sistema de proteção de pagina (login e senha para acessar)

Recommended Posts

Ae galera...to fuçando aki no dreamwaver e vi que existe um modo muito facil de proteger paginas em session. O problema é que eu naum sei se é taum seguro. Pra mim tah funcionando como uma luva.

 

Bem, abra o dreamwaver, e com uma tabela jah criada a minha tabela é usuarios q nela contem id, login e senha sendo a senha gravada em md5.

 

Aqui vai a tabela do mysql:

CREATE TABLE `usuarios` (

`id_usuario` smallint(5) unsigned NOT NULL auto_increment,

`nome` varchar(40) NOT NULL,

`senha` varchar(32) NOT NULL,

PRIMARY KEY (`id_usuario`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

INSERT INTO `usuarios` VALUES (1, 'teste', '900150983cd24fb0d6963f7d28e17f72');

 

Vamos aos processos:

 

Crie o DB. Para isso, vá em Painel Application > Databases e clique no botão de mais (+) e logo em Mysql Connections.

Imagem Postada

 

Configure como abaixo:

Imagem Postada

 

Connection name: nome da conexão (connSisLogin);

 

MySQL server: localhost;

 

User name: nome do usuário do banco de dados (o padrão geralmente é root);

 

Password: senha do banco de dados. usei vazia;

 

Database: nome do banco de dados que você criou as tabelas que serão utilizadas.

 

 

Agora parte de criação das paginas.

 

Seram criadas 3 páginas. Sendo q uma é página de erro (ou seja, ela é opcional).

 

Abra uma nova página salve-a como erro.php. E faça o que quiser para mostrar que o login não funcionou e que pode ter sido erro de senha ou usuario. Essa parte é por conta propria.

 

Abra uma outra nova página salve-a como login.php

 

Insira um form, nomeie-o login_form.

Insira dois Text Fields, um nomeie de login e outro de senha.

Insira um button, dê o valor que preferir, eu usei OK.

 

Painel Application > Server Behaviors e clique no botão de mais (+) User Authentication > Log In User.

Imagem Postada

 

Configure como a figura abaixo:

Imagem Postada

 

Agora mude o dreamweaver para o modo de code para concertar o modo da senha que está como md5. Então ache o linha abaixo (provavelmente é a linha 22):

  $LoginRS__query=sprintf("SELECT nome, senha FROM usuarios WHERE nome='%s' AND senha='%s'",
E mude para:

  $LoginRS__query=sprintf("SELECT nome, senha FROM usuarios WHERE nome='%s' AND senha=md5('%s')",
Explicação: O que mudamos foi a senha de '%s' para md5('%s').

 

Bem, finalizamos a criação da pagina de login. E o codigo total ficou assim. Podendo sofrer alterações devido a localização da sua pagina perante a pagina de connection.

<?php require_once('../Connections/connSisLogin.php'); ?><?php// *** Validate request to login to this site.if (!isset($_SESSION)) {  session_start();}$loginFormAction = $_SERVER['PHP_SELF'];if (isset($_GET['accesscheck'])) {  $_SESSION['PrevUrl'] = $_GET['accesscheck'];}if (isset($_POST['login'])) {  $loginUsername=$_POST['login'];  $password=$_POST['senha'];  $MM_fldUserAuthorization = "";  $MM_redirectLoginSuccess = "index.php";  $MM_redirectLoginFailed = "erro.php";  $MM_redirecttoReferrer = false;  mysql_select_db($database_connSisLogin, $connSisLogin);    $LoginRS__query=sprintf("SELECT nome, senha FROM usuarios WHERE nome='%s' AND senha='%s'",	get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));      $LoginRS = mysql_query($LoginRS__query, $connSisLogin) or die(mysql_error());  $loginFoundUser = mysql_num_rows($LoginRS);  if ($loginFoundUser) {	 $loginStrGroup = "";		//declare two session variables and assign them	$_SESSION['MM_Username'] = $loginUsername;	$_SESSION['MM_UserGroup'] = $loginStrGroup;		  	if (isset($_SESSION['PrevUrl']) && false) {	  $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];		}	header("Location: " . $MM_redirectLoginSuccess );  }  else {	header("Location: ". $MM_redirectLoginFailed );  }}?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Untitled Document</title></head><body><form id="login_form" name="login_form" method="POST" action="<?php echo $loginFormAction; ?>">  <p>Login	<input type="text" name="login" />  </p>  <p>Senha	<input type="text" name="senha" /></p>  <p>	<input type="submit" name="Submit" value="Ok" />  </p></form></body></html>
Agora vamos para pagina de proteção. Que ira proteger a pagina de ser visualisada por qualquer um. Abra uma nova pagina e salve nomeando-a restrict.php.

 

Painel Application > Server Behaviors e clique no botão de mais (+) User Authentication > Restrict Acess to page.

 

Configure como a imagem abaixo:

Imagem Postada

 

Bem, finalizamos a criação da pagina de proteção. E o codigo total ficou assim.

 

<?phpif (!isset($_SESSION)) {  session_start();}$MM_authorizedUsers = "";$MM_donotCheckaccess = "true";// *** Restrict Access To Page: Grant or deny access to this pagefunction isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {   // For security, start by assuming the visitor is NOT authorized.   $isValid = False;   // When a visitor has logged into this site, the Session variable MM_Username set equal to their username.   // Therefore, we know that a user is NOT logged in if that Session variable is blank.   if (!empty($UserName)) { 	// Besides being logged in, you may restrict access to only certain users based on an ID established when they login. 	// Parse the strings into arrays. 	$arrUsers = Explode(",", $strUsers); 	$arrGroups = Explode(",", $strGroups); 	if (in_array($UserName, $arrUsers)) { 	  $isValid = true; 	} 	// Or, you may restrict access to only certain users based on their username. 	if (in_array($UserGroup, $arrGroups)) { 	  $isValid = true; 	} 	if (($strUsers == "") && true) { 	  $isValid = true; 	}   }   return $isValid; }$MM_restrictGoTo = "login.php";if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {     $MM_qsChar = "?";  $MM_referrer = $_SERVER['PHP_SELF'];  if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";  if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0)   $MM_referrer .= "?" . $QUERY_STRING;  $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);  header("Location: ". $MM_restrictGoTo);   exit;}?>
Agora é só ir na pagina index.php e colocar em cima dela o codigo para incluir o restrict.php q verificará se existe a session e se não redirecionará para o login.

<?phpinclude ("restrict.php"); ?>

Pronto. Tudo feito. http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Gostaria que todos comentassem para ajudar a melhorar o codigo, tmbm gostaria de saber se esse codigo é realmente seguro, ou não. E se alguem puder inserir o Anti SQL INJECTION pra proteger ainda mais, pode faze-lo. Axo q seria de grande ajuda para melhorar ainda mais a segurança. O problema é q eu naum entendo direito de Anti SQL INJECTION e os q vi aki no forum naum estaum funcionando corretamente sem contar li comentarios de q eles naum protegem totalmente. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Abraços e até mais. Vou melhorando o codigo de acordo com as necessidades. :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nada como fazer tudo "na unha"; saber o que está fazendo. Mas beleza. Para quem está começando é uma boa ajuda.

 

Mas odeio os códigos gerados pelo DreamWeaver. Ele os complica à toa. :P

 

Não é Anty SQL Injection; é Anti SQL Injection. Anti == contra. ;)

 

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nada como fazer tudo "na unha"; saber o que está fazendo. Mas beleza. Para quem está começando é uma boa ajuda.

 

Mas odeio os códigos gerados pelo DreamWeaver. Ele os complica à toa. :P

 

Não é Anty SQL Injection; é Anti SQL Injection. Anti == contra. ;)

 

 

Abraços

Tanto faz...tu intendeu ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nada como fazer tudo "na unha"; saber o que está fazendo. Mas beleza. Para quem está começando é uma boa ajuda.

 

Mas odeio os códigos gerados pelo DreamWeaver. Ele os complica à toa. :P

 

Não é Anty SQL Injection; é Anti SQL Injection. Anti == contra. ;)

 

 

Abraços

 

Isso aí Beraldo, sou Anti DreamWeaver, com relação a geração de códigos.

 

Como o Beraldo disse, acho que o segredo do PHP e o prazer em programar, está em fazer tudo na unha, saber o que está fazendo, saber qual será o comportamento de seu sistema, em fim, quando você faz algo na unha, você coloca de sua mente para fora, é satisfatório ver o sistema desenvolvido por você funcionando :P

 

Tem como ter mais de 1 usuário???

Como faço para configurar os usuarios e as senhas???

Sistema de Login por níveis... não é difícil, basta criar um campo na tabela que armazena os dados do usuário, tipo:

 

nivel ENUM('1','2')

Onde 1 = Admin

Onde 2 = MEmbro/Usuário.

 

então no login você fazer também a busca neste campo para verficar o nível e então quando redirecionar, você terá uma página com as condições para cada um, que você irá definir.

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.