Ir para conteúdo

POWERED BY:

Arquivado

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

Life In Revenge

[Resolvido] Encriptação em sistema de Cadastro (E Login) ?

Recommended Posts

Opa, pessoal, seguindo um tutorial daqui do forum mesmo

Fiz um sistema de login, e cadastro, utilizando Flash + Php, porem preciso utilizar uma codificação especifica, para um programa que vai utilizar a DB,

O codigo PHP do cadastro é este:

<?php
/* Conectamos ao MySQL */
$host = "mysql.host.com"; //Servidor do mysql
$user = "login"; //Usuario do banco de dados
$pass = "senha"; //senha do banco de dados
$db = "banco"; //banco de dados

mysql_connect($host, $user, $pass) or die (mysql_error());
mysql_select_db($db) or die (mysql_error()); 


$action = $_GET['action'];
	/* Caso seja ação cadastrar */
	switch ("$action") {
	case 'cadastrar':
	/* Variáveis vindas do Flash pelo método POST */
	/* Codificamos para ISO-8859-1 */
	$nome = (@$_POST['nome']);
	$email = (@$_POST['email']);
	$login = (@$_POST['login']);
	$senha = (@$_POST['senha']);
	/* Deixamos a data com o formato Dia/Mes/Ano */
	$data = date("d/m/Y");

/* Verefica se já existe usuário */
	
	$verifica = "SELECT login FROM banco WHERE login = '$login'";
$teste = mysql_query($verifica) or die ("Erro, tente novamente mais tarde!!!");
$vai = mysql_num_rows($teste);
/*Se já existir o usuário*/
if ($vai == 1){
/*Manda a mensagem de Erro para o Flash*/
print "&mensagem=Usuário ja Existe";
/*Se não existe...*/
} else {
	
	/* Inserimos os dados no Banco de Dados */
	$cadastra = mysql_query("INSERT INTO banco (nome,email,login,senha) VALUES ('$nome','$email','$login','$senha')") or die(mysql_error());
	/* Manda a mensagem de Cadastro efetuado com Sucesso para o Flash */
	print "&mensagem=Cadastro efetuado com sucesso&enviado=1";
	}
	break;
	 }
?>
Agora preciso adicionar a codificação do programa,

Que é esta:

base64_encode(pack('H*', sha1

 

Então deduzi que para eu coloca - la no codigo teria que colocar este codigo:

$senha = base64_encode(pack('H*', sha1($senha))) : '';
Porem não sei em que lugar do codigo colocar ele, podem me ajudar ?

 

Obrigado pessoal

Abraços, e um Feliz 2009 para vocês...

Compartilhar este post


Link para o post
Compartilhar em outros sites

nessa parte

 

$senha = (@$_POST['senha']);

substitua por

 

$senha = base64_encode(pack('H*', sha1(@$_POST['senha']))) : '';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me desculpe, porem não funcionou, recebi a seguinte mensagem de erro:

 

Notice: Undefined variable: senha in C:\Arquivos de programas\EasyPHP 2.0b1\www\cadastrar\banco.php on line 14
Data too long for column 'senha' at row 1

PS: Tentei dois codigos:

O que você mandou:

$senha = base64_encode(pack('H*', sha1(@$_POST['senha']))) : ''

E ja que não funcionou, tambem tentei outro, que não funcionou:

$senha = base64_encode(pack('H*', sha1(@$_POST['senha'])))

Obrigado pela ajuda, Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta:

$senha = base64_encode(pack('H*', sha1(@$_POST['senha'])));

Data too long for column 'senha' at row 1

A senha gerada é grande de mais para a coluna senha.Dá um alter e muda o tamanho máximo dessa coluna que vai funcionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, funcionou, ele cadastrou, codificou (porem com uma codificação diferente),

almentei o numero de characters na tabela para 45,

apareceram os seguintes erros:

 

Notice: Use of undefined constant sha1 - assumed 'sha1' in C:\Arquivos de programas\EasyPHP 2.0b1\www\cadastrar\banco.php on line 28

Warning: pack() [function.pack]: 1 arguments unused in C:\Arquivos de programas\EasyPHP 2.0b1\www\cadastrar\banco.php on line 28

Warning: pack() [function.pack]: Type H: illegal hex digit s in C:\Arquivos de programas\EasyPHP 2.0b1\www\cadastrar\banco.php on line 28

Warning: pack() [function.pack]: Type H: illegal hex digit h in C:\Arquivos de programas\EasyPHP 2.0b1\www\cadastrar\banco.php on line 28
&mensagem=Voce digitou errado, ou nao e cadastrado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, malz pela demora da resposta:

meu Code esta assim:

<?php
$host = "mysql.host.com"; //Servidor do mysql
$user = "login"; //Usuario do banco de dados
$pass = "senha"; //senha do banco de dados
$db = "db"; //banco de dados
mysql_connect($host, $user, $pass) or die (mysql_error());
mysql_select_db($db) or die (mysql_error()); 
$action = $_GET['action'];
	switch ("$action") {
	case 'cadastrar':
	$nome = (@$_POST['nome']);
	$email = (@$_POST['email']);
	$login = (@$_POST['login']);
	$senha = base64_encode(pack('H*', sha1, (utf8_encode(@$_POST['senha']))));
	$data = date("d/m/Y"); 
	$verifica = "SELECT login FROM banco WHERE login = '$login'";
$teste = mysql_query($verifica) or die ("Erro, tente novamente mais tarde!!!");
$vai = mysql_num_rows($teste);
if ($vai == 1){
print "&mensagem=Usuário ja Existe";
} else {
	$cadastra = mysql_query("INSERT INTO banco (nome,email,login,senha) VALUES ('$nome','$email','$login','$senha')") or die(mysql_error());
	print "&mensagem=Cadastro efetuado com sucesso&enviado=1";
	}
	break;
	 }
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa.. mas qual é o erro agora?

E quem é esse arquivo: banco.php ?

 

E outra.. sha1 é uma função.. e não um parâmetro à ser passado.

.. sha1(utf8_encode(@$_POST['senha']))));

Compartilhar este post


Link para o post
Compartilhar em outros sites

O arquivo banco .php é o mesmo que cadastro.php só estou usando ele em outra pasta,

 

O erro é o mesmo:

Notice: Use of undefined constant sha1 - assumed 'sha1' in C:\Arquivos de programas\EasyPHP 2.0b1\www\cadastrar\banco.php on line 28

 

Warning: pack() [function.pack]: 1 arguments unused in C:\Arquivos de programas\EasyPHP 2.0b1\www\cadastrar\banco.php on line 28

 

Warning: pack() [function.pack]: Type H: illegal hex digit s in C:\Arquivos de programas\EasyPHP 2.0b1\www\cadastrar\banco.php on line 28

 

Warning: pack() [function.pack]: Type H: illegal hex digit h in C:\Arquivos de programas\EasyPHP 2.0b1\www\cadastrar\banco.php on line 28

&mensagem=Voce digitou errado, ou nao e cadastrado.

 

Eu tinha postado a codificação errada, na verdade não é esta

base64_encode(pack('H*', sha1

Tem uma coisa a mais,

base64_encode(pack('H*', sha1(utf8_encode

Editei isto, e tambem não funcionou, sempre o mesmo erro..

 

Sobre Sha1 uma funçãõ, ai ja não sei,

Mas sei que devia funcionar, pois existem milhares de sites, que utilizam esta codificação para o mesmo programa que eu estou tentando usar....

 

Obrigado pela ajuda pessoal, Abraços....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá.. mas o problema é que você estava usando errado.

veja:

http://br2.php.net/manual/pt_BR/function.sha1.php

e

http://br2.php.net/manual/pt_BR/function.base64-encode.php

você fez a alteração que eu disse ?

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.