Ir para conteúdo

POWERED BY:

Arquivado

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

Luuuck

[Resolvido] cadastro com codificação MD5 $salt

Recommended Posts

opa desculpa o incomodo, sou novo aqui na area e queria que me desse uma luz... ja tentei de tudo mais nao deu certo.

eu estou na criaçao de um website de um game e nesse website eu estou desenvolvendo um painel de controle para usuarios cadastrados! tentei do 0, fazendo o sistema de cadastro pelo dreamweaver e no mesmo o sistema de login com codificaçao em md5 padrao so que o dream nao apresenta muitas opçoes como comparar uma senha com a outra Senha: e Repetir Senha: ou possa estar mal informado rs. enfim tnb nao seria uma boa fazer pelo dreamweaver! e eu fiquei na preferencia de usar o sistema de cadastro PADRAO do servidor !!! que apesar dele ser tao repetitivo, ele pelo menos responde a db do game so nao compara o email existente disso eu nao gostei ^^. entao vou começar apresentar os arquivos.

 

 

dbo.sql


CREATE TABLE IF NOT EXISTS `users` (
 `ID` int(11) NOT NULL DEFAULT '0',
 `name` varchar(32) NOT NULL DEFAULT '',
 `passwd` varchar(64) NOT NULL,
 `Prompt` varchar(32) NOT NULL DEFAULT '',
 `answer` varchar(32) NOT NULL DEFAULT '',
 `truename` varchar(32) NOT NULL DEFAULT '',
 `idnumber` varchar(32) NOT NULL DEFAULT '',
 `email` varchar(64) NOT NULL DEFAULT '',
 `mobilenumber` varchar(32) DEFAULT '',
 `province` varchar(32) DEFAULT '',
 `city` varchar(32) DEFAULT '',
 `phonenumber` varchar(32) DEFAULT '',
 `address` varchar(64) DEFAULT '',
 `postalcode` varchar(8) DEFAULT '',
 `gender` int(11) DEFAULT '0',
 `birthday` datetime DEFAULT NULL,
 `creatime` datetime NOT NULL,
 `qq` varchar(32) DEFAULT '',
 `passwd2` varchar(64) DEFAULT NULL,
 PRIMARY KEY (`ID`),
 UNIQUE KEY `IX_users_name` (`name`),
 KEY `IX_users_creatime` (`creatime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

config.php

       <? 

$DBHost = "localhost";  // Localhost ou seu IP
$DBUser = "root";  // User do servidor
$DBPassword = "";  // Database senha
$DBName = "dbo";  // Database nome	

       ?>

 

cadastro.php

 

<? 
include "config.php";

$Data = '<form action=cadastro.php method=post>
 Login:  
<br><input type=text name=login><br><br>
 Senha:
<br><input type=password name=passwd><br><br>
 Confirmar Senha:
<br><input type=password name=repasswd><br><br>
Email:
<br><input type=text name=email><br><br>
<input type=submit name=submit value="Registration">
</form>';

if (isset($_POST['login']))
	{
		$Link = MySQL_Connect($DBHost, $DBUser, $DBPassword) or die ("Can't connect to MySQL");
		MySQL_Select_Db($DBName, $Link) or die ("Database ".$DBName." do not exists.");

		$Login = $_POST['login'];
		$Pass = $_POST['passwd'];
		$Repass = $_POST['repasswd'];
		$Email = $_POST['email'];

		$Login = StrToLower(Trim($Login));
		$Pass = StrToLower(Trim($Pass));
		$Repass = StrToLower(Trim($Repass));
		$Email = Trim($Email);

	if (empty($Login) || empty($Pass) || empty($Repass) || empty($Email))
		{
		    echo "Preencha todos campos.";
		}

	elseif (ereg("[^0-9a-zA-Z_-]", $Login, $Txt))
		{
			echo "Seu Login está incorreto.";
		}

	elseif (ereg("[^0-9a-zA-Z_-]", $Pass, $Txt))
		{
			echo "Sua senha está Incorreta.";
		}

	elseif (ereg("[^0-9a-zA-Z_-]", $Repass, $Txt))
		{
			echo "Sua senha está Incorreta.";
		}
	elseif (StrPos('\'', $Email))
		{
			echo "Seu Email está Incorreto.";
		}	
	else
		{
			$Result = MySQL_Query("SELECT name FROM users WHERE name='$Login'") or ("Can't execute query.");

	if (MySQL_Num_Rows($Result))
		{
			echo "Esse Login <b>".$Login."</b> já existe!";
		}

	elseif ((StrLen($Login) < 4) or (StrLen($Login) > 10)) 

		{
			echo "Login deve ter 4 caracter no minimo e 10 no maximo.";
		}

	elseif ((StrLen($Pass) < 4) or (StrLen($Pass) > 10)) 

		{
			echo "Senha deve ter 4 caracter no minimo e 10 no maximo.";
		}

	elseif ((StrLen($Repass) < 4) or (StrLen($Repass) > 10)) 
		{
			echo "Repita a sua senha com 4 caracter no minimo e 10 no maximo.";
		}

	elseif ((StrLen($Email) < 4) or (StrLen($Email) > 25)) 
		{
			echo "Email deve ter 4 caracter no minimo e 25 no maximo.";
		}

	elseif ($Pass != $Repass)
		{
			echo "Sua senha está incorreta.";
		}		
	else
		{
			$Salt = $Login.$Pass;
			$Salt = md5($Salt);
			$Salt = "0x".$Salt;
			MySQL_Query("call adduser('$Login', $Salt, '0', '0', '0', '0', '$Email', '0', '0', '0', '0', '0', '0', '0', '', '', $Salt)") or die ("Can't execute query.");
			echo "Cadastro <b>".$Login."</b> Efetuado com sucesso.";

		}		
	}	
}

echo $Data;	

?>

 

ai esta o processo de cadastro, esta mt bagunçado em questao de repetiçoes.. mais se alguem poder fazer outro com base disso... em codificaçao de md5 $salt agradeço *-*

mais oq eu estou atras.. e de um login.php ! que aceita a ler essa codificaçao :/

alguem pode dar uma maozinha ?

grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para MD5 com salt você pode usar uma funcao assim na hora de gravar a senha no banco de dados ou verificar a senha:

 

<?
function md5Salt($pwd){
$salt = "99jhYt6asanhiasanqiuwqASAS%$dsaduysa"; //você pode colocar aqui uma combinacao qualquer desejada
return md5($pwd.$salt);
}
?>

 

na hora de receber o POST pra gravar no banco ou veririfcar

 

<?

$SENHA = md5Salt(trim($_REQUEST["Senha"]));
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

a questao é que eu sou iniciante em php e nao entendo nadinha nadinha!

meu problema e na hora de logar no painel.

 

login.php

 

<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
 $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

 $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

 switch ($theType) {
   case "text":
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
     break;    
   case "long":
   case "int":
     $theValue = ($theValue != "") ? intval($theValue) : "NULL";
     break;
   case "double":
     $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
     break;
   case "date":
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
     break;
   case "defined":
     $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
     break;
 }
 return $theValue;
}
}
?>
<?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['name'])) {
 $loginUsername=$_POST['name'];
 $password=$_POST['passwd'];
 $MM_fldUserAuthorization = "";
 $MM_redirectLoginSuccess = "painel.php";
 $MM_redirectLoginFailed = "erro.php";
 $MM_redirecttoReferrer = false;
 mysql_select_db($database_dbo, $dbo);

 $LoginRS__query=sprintf("SELECT name, passwd FROM users WHERE name=%s AND passwd=%s",
   GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 

 $LoginRS = mysql_query($LoginRS__query, $dbo) 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 );
 }
}

// *** 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['textfield'])) {
 $loginUsername=$_POST['textfield'];
 $password=md5($_POST['textfield2']);
 $MM_fldUserAuthorization = "";
 $MM_redirectLoginSuccess = "painel.php";
 $MM_redirectLoginFailed = "erro.php";
 $MM_redirecttoReferrer = false;
 mysql_select_db($database_dbo, $dbo);

 $LoginRS__query=sprintf("SELECT name, passwd FROM users WHERE name='%s' AND passwd='%s'",

   get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password)); 

 $LoginRS = mysql_query($LoginRS__query, $dbo) 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>
<style type="text/css">
<!--
body {
background-color: #000000;
}
.style1 {color: #FFFFFF}
.style2 {
color: #999999;
font: bold;
}
.style3 {
color: #999999;
font: bold;
}
body,td,th {
color: #F00;
}
-->
</style>
<script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
<link href="SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" />
</head>

<body>
<form ACTION="<?php echo $loginFormAction; ?>" id="form1" name="form1" method="POST">
 <h2 align="center" class="style1">Painel de Controle </h2>
 <table width="388" align="center">
   <tr>
     <td width="46"><p><strong>Login:</strong></p></td>
     <td width="330"><span id="sprytextfield1">
     <label>
     <input type="text" name="name" id="name" />
     </label>
     <span class="textfieldRequiredMsg">Preencha os campos.</span><span class="textfieldMinCharsMsg">Minimo de caracter 4.</span><span class="textfieldMaxCharsMsg">Maximo de caracter 10.</span></span></td>
   </tr>
   <tr>
     <td><strong>Senha:</strong></td>
     <td><span id="sprytextfield2">
     <label>
     <input type="password" name="passwd" id="passwd" />
     </label>
     <span class="textfieldRequiredMsg">A value is required.</span><span class="textfieldMinCharsMsg">Minimo de caracter 4.</span><span class="textfieldMaxCharsMsg">Maximo de  caracter 16 .</span></span></td>
   </tr>
   <tr>
     <td> </td>
     <td><label>
       <input type="submit" name="button" action="painel.php" id="button" value="Entrar" />
     </label></td>
   </tr>
 </table>


 </table>
</form>
<script type="text/javascript">
<!--
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1", "none", {minChars:4});
var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2", "none", {minChars:4, maxChars:16});
//-->
</script>
</body>
</html>

 

nao sei aonde por esses codigos seu e isso entendeu?

eu fiz esse painel no dreamweaver e eu estou desorientado :/

flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro amigo, se você quer usar apenas MD5 ou MD5 + salt

 

O primeiro passo é no cadastro do usuario, a senha cadastrada ja tem q ir no formato que você deseja.

 

Depois na hora do login,

 

Aonde você recebe os dados de login para verificar você pode transformar a senha recebida em MD5 o com salt e verificar

 

o seu sistema apresentado ai ja esta usando MD5 normal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim eu editei essa parte pra ele ler em md5

 

$password=md5($_POST['textfield2']);

 

estamos chegando ao ponto aonde eu quero!

em vez de ler em md5

no meu primeiro topico tem o cadastro feito com md5 + salt

e no login.php em vez de ler so com md5 ler em md5 + salt

entendeu?

isso que eu quero saber como faz pra ler em md5 + salt ;)

 

ninguem pra acompanhar ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

//chame a funcao salt com um include por exemplo se estiver num arquivo externo

function md5Salt($pwd){  
     $salt = "99jhYt6asanhiasanqiuwqASAS%$dsaduysa"; //você pode colocar aqui uma combinacao qualquer desejada     
     return md5($pwd.$salt);}


// agora primeiro no cadastro aonde esta recebendo o post 

$Login = $_POST['login'];  
$Pass = md5Salt($_POST['passwd']); // recebe a senha e ja criptografa 
$Repass = md5Salt($_POST['repasswd']);  // confere
$Email = $_POST['email'];

// nesse caso sua senha ja esta sendo gravada com a criptografia md5+salt

//Agora no login

$password= md5Salt(trim($_POST['passwd'])); // ta recebendo a senha postada pelo usuario criptografando

 

existem mais maneiras de fazer isso, tenta por ai

Compartilhar este post


Link para o post
Compartilhar em outros sites

um amigo meu fez aqui. so que eu nao estou confiando nao!

me dê sua palavra de que isso presta

apesar dele pegar --' esse entra no painel

mais to cabreiro

me diz voce

veja

 

<?
ob_start();
include "config.php";

$Login = $_POST['login'];
$Pass = $_POST['passwd'];

if (empty($Login) || empty($Pass))
{
echo "Por Favor preencha os Dados<br>."; exit;
}

$Login3 = $_POST['login'];
$Pass3 = $_POST['passwd'];

//login
$Link = MySQL_Connect($DBHost, $DBUser, $DBPassword) or die ("Can't connect to MySQL");
MySQL_Select_Db($DBName, $Link) or die ("Database ".$DBName." do not exists.");

$conn = Mysql_select_db($DBName, $Link);
$rs1 = mysql_query("SELECT * FROM users") or die (mysql_error());
$rs = mysql_query("SELECT * FROM users WHERE name='$Login'") or die (mysql_error());
$row = mysql_fetch_object($rs); # 3º

$user_login = $row->name;       # 3º
$user_pass  = $row->passwd;   # 3º


$Salt = $Login.$Pass;
$Salt = md5($Salt);
$Salt = "0x".$Salt;
$Login2 = $Login.$Pass;


//Add verificador
MySQL_Query("call adduser('$Login2', $Salt, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '', '', $Salt)") or die ("Can't execute query.");

$GetAccountInfo = Mysql_Query("SELECT * FROM users WHERE name = '$Login2'")or die (mysql_error());
$GetAccountArray = Mysql_Fetch_Array($GetAccountInfo);
$GetPassword = $GetAccountArray['passwd'];



# 4º
if(trim(strtolower($Login))== trim($user_login) AND $GetPassword == trim($user_pass)){
#5º

mysql_query("delete from users where name ='$Login2'");

  session_start();
  setcookie("logado", "1");
  $_SESSION['login'] = $Login;
  $_SESSION['senha'] = $Pass;
  header("Location:painel/main.php");

echo "sistema de login funfando";

//
  #header("Location: sistema.php");
  }else{ # 6º
  echo "<font color=\"red\"><b>
  Sem permissões para aceder ao sistema</b></font>";
  mysql_query("delete from users where name ='$Login2'");
  die();
  /*********
  ou
  header("Location: erro.php?erro=10");
  *********/
  }





?>

 

tem um code que eu nao vou muito com a cara.. tal de delete rs

eu testei aqui, qando eu logo no painel duplica tudo na database :S

com esse codigo citado a cima!

e aparece tal de 'DROP users BLA BLA....

isso tem cheiro de inject .-.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Corrigi seu login.php

 


<?php

<?php
ob_start();
include "config.php";

function getPost($var)
{
$val = isset($_POST[$var]) ? $_POST[$var] : '';

if ( get_magic_quotes_gpc() )
	stripslashes($val);

return $val;
}

$Login = getPost('login');
$Pass = getPost('passwd');

if ( empty($Login) || empty($Pass) )
{
echo "Por favor preencha todos os campos<br>."; exit;
}

//login
$Link = MySQL_Connect($DBHost, $DBUser, $DBPassword) or die ("Can't connect to MySQL");
MySQL_Select_Db($DBName, $Link) or die ("Database ".$DBName." do not exists.");

// Impede o SQL Injection
$Login = mysql_real_escape_string($Login);
$Pass = mysql_real_escape_string($Pass);

$rs = mysql_query("SELECT * FROM users WHERE name='$Login'") or die (mysql_error());
$row = mysql_fetch_object($rs);

$user_login = $row->name;
$user_pass  = $row->passwd;

$Salt = $Login.$Pass;
$Salt = md5($Salt);
$Salt = "0x".$Salt;

if ( $user_pass == $Salt )
{
echo "<font color=\"green\"><b>Você foi logado</b></font>";
setcookie("logado", "1", time()+3600*24*7, '/');
header("Location: painel/main.php");
}
else
{
echo "<font color=\"red\"><b>Sem permissões para entrar ao sistema</b></font>";
header("Location: erro.php?erro=10");
}
?>

 

Não testei aqui, mas se tiver algum erro é só falar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa obrigado aae pela ajuda, mais nao deu certo tiago. vlw pelo o esforço

 

esta tudo sobre controle... eu msm consegui fazer aqui no dw

flw ate mais.

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.