Ir para conteúdo

POWERED BY:

Arquivado

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

Danilo Pessoa

Função de Criptografia Joomla 1.5.23

Recommended Posts

Bom dia Galera...

 

Estou com o seguinte problema no meu site Joomla.

 

Temos um importador de dados que funciona perfeitamente.

 

Mas temos um pequeno problema na função que criptografa a senha do joomla antes de Gravar no Banco de Dados, abaixo segue o código da função de criptografia Joomla:

 

$grade .= "<tr><td></td>";

  for($b = 0; $b < $qtdeCampos; $b ++) {

   $grade .= "\n<td><select id='c" . $b . "' name='c" . $b . "'>\n";

	$grade .= "<option value=''></option>\n";

$grade .= $b == 46 ? "<option selected=\"selected\" value='46'>Senha</option>\n":"<option value='46'>Senha</option>\n"; // Antes desse tem mais 45 campos

}

$grade .= "</tr></table>";

  $this->view->grade = $grade;

for($a = 0; $a < 100; $a ++) {

	$campoAtual = JRequest::getVar ( "c" . $a );

if ($campoAtual == '46') {

	$senhalogin = $a;

}

}


$_SESSION ["CAMPO_SENHA"] = $senhalogin;

$SENHALOGIN = $campos [$_SESSION ['CAMPO_SENHA']];


$salt = 'UVCLG0Hkt7UtZBRoYVfwIaAmIXg28gGx'; 
$crypt = JUserHelper::getCryptedPassword ( $SENHALOGIN, $salt );
$PASSWORD = $crypt . ':' . $salt;

$db->setQuery ( "insert into jos_users (name, username, email, password, usertype, block, sendEmail, gid, registerDate, activation) values ('" . $NOMEFANTASIA . "', '" . $LOGIN . "','" . $EMAIL . "', '" . $PASSWORD . "', 'Registered',0,0,18,'" . date ( "Y-m-d" ) . "','')" );
$db->query ();

 

 

Tudo acima funciona, a função criptografa tudo certinho, mas quando tento logar com algum usuário no site da a mensagem de "Nome de usuário e senha não conferem ou você ainda não possui uma conta.".

 

O que será que tem errado no meu código?

 

Quem puder ajudar agradeço muito.

 

Abraço!

 

Aguardo retornos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho um script aqui que faz isso, talvez o que esteja faltando é você gravar todas as tabelas que o joomla usa durante o logon:

Para o usuário é simples, gravei estes campos e fechou, é só você ver a sequencia na estrutura das tabelas, note que para a senha eu usei a função md5:

	$sql ="INSERT INTO ".SYSDBPREFIX."users VALUES (0,";
	$sql.="'".$_POST['name']."',";
	$sql.="'".$_POST['username']."',";
	$sql.="'".$_POST['email']."',";
	$sql.="md5('".$_POST['password']."'),";
	$sql.="'Registered',0,0,18,now(),";
	$sql.="'0000-00-00 00:00:00','','');";

 

Depois disto eu ainda gravo o mesmo usuário nas tabelas core_acl_aro e core_acl_groups_aro_map. Eu acho que é aí que está o x da questão para você.

 

Tente ver se consegue algo, qualquer coisa posta aí que vamos dando uma olhada.

 

Achei o script onde faço isto e grava todas as tabelas, os dados vem de um form simples, gravo jos_users, coloco o id salvo por mysql_insert_id() e vou gravando nas outras duas tabelas.

 

	//Grava registro de usuario
	$sql ="INSERT INTO ".SYSDBPREFIX."users VALUES (0,";
	$sql.="'".$_POST['name']."',";
	$sql.="'".$_POST['username']."',";
	$sql.="'".$_POST['email']."',";
	$sql.="md5('".$_POST['password']."'),";
	$sql.="'Registered',0,0,18,now(),";
	$sql.="'0000-00-00 00:00:00','','');";
	$query=mysql_query($sql,ConexaoMysql::connect()); 
	if (!query) {
	   echo "<script>alert('Erro inserindo registro de Usuários !');</script>";
	   exit();
	}
	$idusers = mysql_insert_id();

       //Grava tabela do joomla jos_core_acl_aro 
	$sql ="INSERT INTO ".SYSDBPREFIX."core_acl_aro VALUES (0,'users',".$idusers.",0,'".$_POST['name']."',0);";
	$query=mysql_query($sql,ConexaoMysql::connect()); 
	if (!query) {
	   echo "<script>alert('Erro inserindo registro de Usuários (core_acl_aro)!');</script>";
	   exit();
	}
	$idcore = mysql_insert_id();

       //Grava tabela do joomla jos_core_acl_groups_aro_map
	$sql ="INSERT INTO ".SYSDBPREFIX."core_acl_groups_aro_map VALUES (18,'',".$idcore.");";
	$query=mysql_query($sql,ConexaoMysql::connect()); 
	if (!query) {
	   echo "<script>alert('Erro inserindo registro de Usuários (core_acl_groups_aro_map)!');</script>";
	   exit();
	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Walace,

 

Esse script que você passou é importante e pode ser usado em diversas ocasiões.

 

Nos meu Projetos eu utilizo o ZendFramework.

 

Eu revirei o meu código e localizei um erro grotesco meu e outro no arquivo do meu cliente.

 

Percebi que em alguns campos de senhas contem espaços, então eu tive que apenas adicionar um "trim" na variável que continha a senha e já resolveu.

 

Abaixo segue o trecho do código já corrigido.

 

Obrigado pela ajuda.

 

Um Abraço!

 

$SENHALOGIN = $campos [$_SESSION ['CAMPO_SENHA']];

$salt = 'UVCLG0Hkt7UtZBRoYVfwIaAmIXg28gGx'; 
$crypt = JUserHelper::getCryptedPassword ( trim($SENHALOGIN), $salt );
$PASSWORD = $crypt . ':' . $salt;

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.