O objetivo principal desse poste é desenvolver programação em linguagem PHP, em ambiente do Moodle, que recupere ou altere a senha do usuário administrador do Moodle.
Então vamos iniciar a programação. Siga os passos a seguir.
1° Passo
Importe a biblioteca de funções do Moodle:
require_once("../config.php");
2° Passo
Receba o parâmetro da senha passado pelo método GET:
$password=$_GET['password'];
//caso for vazio use 12345 como senha padrão
if(empty($password)){$password="12345";}
Caso o parâmetro não for passado, a senha será 12345. Isso indica que a passagem de parâmetro é opcional.
3° Passo
Recuperar id do usuário administrador pelo login:
$sql="SELECT id FROM {$CFG->prefix}user WHERE username='admin'";
$user=get_record_sql($sql);
if(empty($user->id)){echo "Não existe nenhum usuário cadastrado no Moodle com login admin";exit;}
O login padrão do administrador é admin. Caso tenha mudado isso após a instalação, atualize o novo login no parâmetro SQL. Você pode também colocar login de qualquer usuário que não seja o administrador para alterar a senha. O processo de alteração da senha é a mesma para qualquer usuário.
4° Passo
Processar alteração na base de dados.
$user->password=hash_internal_user_password($password);
$result= update_record('user', $user);
if($result){echo "Senha alterado com sucesso";}
Nessa etapa, o comando SQL é executado no banco de dados através de funções da biblioteca PDO do ambiente Moodle.
Código Completo
Até então vimos o código em pedaço. Juntando tudo fica assim:
Então vamos iniciar a programação. Siga os passos a seguir.
1° Passo
Importe a biblioteca de funções do Moodle:
require_once("../config.php");
2° Passo
Receba o parâmetro da senha passado pelo método GET:
$password=$_GET['password'];
//caso for vazio use 12345 como senha padrão
if(empty($password)){$password="12345";}
Caso o parâmetro não for passado, a senha será 12345. Isso indica que a passagem de parâmetro é opcional.
3° Passo
Recuperar id do usuário administrador pelo login:
$sql="SELECT id FROM {$CFG->prefix}user WHERE username='admin'";
$user=get_record_sql($sql);
if(empty($user->id)){echo "Não existe nenhum usuário cadastrado no Moodle com login admin";exit;}
O login padrão do administrador é admin. Caso tenha mudado isso após a instalação, atualize o novo login no parâmetro SQL. Você pode também colocar login de qualquer usuário que não seja o administrador para alterar a senha. O processo de alteração da senha é a mesma para qualquer usuário.
4° Passo
Processar alteração na base de dados.
$user->password=hash_internal_user_password($password);
$result= update_record('user', $user);
if($result){echo "Senha alterado com sucesso";}
Nessa etapa, o comando SQL é executado no banco de dados através de funções da biblioteca PDO do ambiente Moodle.
Código Completo
Até então vimos o código em pedaço. Juntando tudo fica assim:
<?php
require_once("../config.php");
//receber parâmetro
$password=$_GET['password'];
//caso for vazio use 12345 como senha padrão
if(empty($password)){$password="12345";}
//extrair id do usuário admin pelo login
$sql="SELECT id FROM {$CFG->prefix}user WHERE username='admin'";
$user=get_record_sql($sql);
if(empty($user->id)){echo "Não existe nenhum usuário cadastrado no Moodle com login admin";exit;}
//atualizar senha
$user->password=hash_internal_user_password($password);
$result= update_record('user', $user);
if($result){echo "Senha alterado com sucesso";}
?>
Implementar no Moodle
Para executar esse código no Moodle, crie uma pasta denominado _extra dentro da raiz da instalação do Moodle. Em seguida, crie um arquivo denominado admin_change_password.php dentro da pasta _extra. Coloque o código php nesse arquivo.
Feito isso, acesse o endereço:
http://[endereço do moodle]/_extra/admin_change_password.php?password=12345
O url já passa o parâmetro da senha que é opcional. É necessário lembrar que caso nenhum parâmetro for passado, o a será 12345.
Download
Se estiver com preguiça de criar o arquivo e digitar o código, faça download desse exemplo. Descompacte o arquivo e cole na pasta _extra na raiz do seu Moodle. Caso a pasta _extra não exista ainda, crie-a. Agora faça o teste.
Esse código foi testado na versão 1.9.3 mas pode funcionar em qualquer versão do Moodle que use as funções do PDO para manipular a base de dados.
Veja Também:
Recuperar Senha do Administrador do Moodle com Comando SQL
require_once("../config.php");
//receber parâmetro
$password=$_GET['password'];
//caso for vazio use 12345 como senha padrão
if(empty($password)){$password="12345";}
//extrair id do usuário admin pelo login
$sql="SELECT id FROM {$CFG->prefix}user WHERE username='admin'";
$user=get_record_sql($sql);
if(empty($user->id)){echo "Não existe nenhum usuário cadastrado no Moodle com login admin";exit;}
//atualizar senha
$user->password=hash_internal_user_password($password);
$result= update_record('user', $user);
if($result){echo "Senha alterado com sucesso";}
?>
Implementar no Moodle
Para executar esse código no Moodle, crie uma pasta denominado _extra dentro da raiz da instalação do Moodle. Em seguida, crie um arquivo denominado admin_change_password.php dentro da pasta _extra. Coloque o código php nesse arquivo.
Feito isso, acesse o endereço:
http://[endereço do moodle]/_extra/admin_change_password.php?password=12345
O url já passa o parâmetro da senha que é opcional. É necessário lembrar que caso nenhum parâmetro for passado, o a será 12345.
Download
Se estiver com preguiça de criar o arquivo e digitar o código, faça download desse exemplo. Descompacte o arquivo e cole na pasta _extra na raiz do seu Moodle. Caso a pasta _extra não exista ainda, crie-a. Agora faça o teste.
Esse código foi testado na versão 1.9.3 mas pode funcionar em qualquer versão do Moodle que use as funções do PDO para manipular a base de dados.
Veja Também:
Recuperar Senha do Administrador do Moodle com Comando SQL
Cara, obrigado, eu posso dizer que esta diga funcionou diretinho.
ResponderExcluirvaleuw.
http://www.aface.com.br