Informática Numaboa - Tutoriais e Programação
Tranquei a gaveta com a chave dentro! (login)
Sex 25 Dez 2009 15:26 |
- Detalhes
- Categoria: Joomla
- Atualização: Domingo, 10 Junho 2012 13:10
- Autor: vovó Vicki
- Acessos: 5390
Há alguns dias atrás recebi um email do Hans pedindo ajuda para poder voltar a acessar a interface administrativa. A transcrição do email dele explica o que aconteceu:
vó prcido da tua ajuda. Desabilitei o modulo Authentication na administracao de meu joomla... a sessáo expirou e eu nao tinha ativado novamente, agora nao consigo mais autenticar como administrador. Tens como me ajudar a resolver o problema? Obrigado,Hans.
Olha só a saia justa em que o Hans foi se meter! Como isto pode acontecer a qualquer um, resolvi escrever este pequeno tutorial para mostrar o que pode ser feito quando se entra voluntária ou involuntariamente num sufoco destes. Algumas explicações técnicas Em primeiro lugar, uma pequena explicação técnica. O script responsável pela autenticação de usuários no Joomla, sejam eles administrativos (backend) ou não (frontend), não é um módulo. Na verdade, é um plugin e, como todos os plugins do Joomla, suas especificações se encontram na tabela xxx_plugins (se você não mudou o prefixo default do Joomla para o nome das tabelas, então o nome da tabela é jos_plugins). A estrutura desta tabela é a seguinte: +-----------------+---------------------+----+--------------------+---------------+ | Campo | Tipo | Key| Default | Extra | +-----------------+---------------------+----+--------------------+---------------+ | id | int(11) | PRI| NULL | auto_increment| | name | varchar(100) | | | | | element | varchar(100) | | | | | folder | varchar(100) | | | | | access | tinyint(3) unsigned | | 0 | | | ordering | int(11) | | 0 | | | published | tinyint(3) | MUL| 0 | | | iscore | tinyint(3) | | 0 | | | client_id | tinyint(3) | | 0 | | | checked_out | int(11) unsigned | | 0 | | | checked_out_time| datetime | | 0000-00-00 00:00:00| | | params | text | | | | +-----------------+---------------------+----+--------------------+---------------+ O nome do plugin que nos interessa é Authentication - Joomla. Para que usuários possam fazer login, este plugin precisa estar habilitado (ou publicado). O campo que fornece esta informação é o campo published (publicado): se for 1, o plugin está habilitado; se for 0, o plugin está desligado. Corrigindo o problema Com o plugin desabilitado não temos mais acesso à área administrativa - foi o que aconteceu com o Hans. O que é possível fazer para habilitá-lo novamente? A única saída é atuar diretamente na base de dados do Joomla. O Joomla usa o MySQL para armazenar sua base de dados. Esta base de dados costuma ter uma porção de tabelas que guardam as informações necessárias para que o site funcione. Tem tabela de tudo que é tipo, mas a que nos interessa no momento é a tabela dos plugins. Se você tem um administrador do banco de dados do tipo do phpMyAdmin, então a coisa fica fácil. Basta você acessar o phpMyAdmin, selecionar a base de dados do Joomla, chamar a tabela jos_plugins, editar o registro Authentication - Joomla e alterar o valor published de 0 para 1. Se você não tem um administrador de banco de dados, então espero que você tenha acesso a uma shell do sistema. Neste caso, entre no mysql e faça a alteração na unha: # mysql -p Enter password: [digite sua senha] Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1138621 to server version: 4.1.14-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> use [base de dados do Joomla]; Database changed Uma vez logado no banco de dados, confira se o plugin procurado realmente tem a id=1. mysql> select * from jos_plugins where id=1; +----+-------------------------+---------+----------------+--------+---------- | id | name | element | folder | access | ordering |----|-------------------------+---------+----------------+--------+---------- | 1 | Authentication - Joomla | joomla | authentication | 0 | 1 +----+-------------------------+---------+----------------+--------+---------- +-----------+--------+-----------+-------------+---------------------+--------+ | published | iscore | client_id | checked_out | checked_out_time | params | +-----------+--------+-----------+-------------+---------------------+--------+ | 1 | 1 | 0 | 0 | 0000-00-00 00:00:00 | | +-----------+--------+-----------+-------------+---------------------+--------+ 1 row in set (0.00 sec) Se tudo estiver OK, então é só atualizar: mysql> update jos_plugins set published=1 where id=1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 Tiro de misericórdia Se nenhuma das duas opções oferecidas resolver seu problema, então só resta mais uma: rodar um script via browser que faça a alteração desejada. Vai aqui uma sugestão em PHP. Crie um arquivo com o nome autentica.php (ou o nome que você escolher) com o seguinte script: <?php $db = mysql_connect("localhost", "usuario", "senha"); mysql_select_db("base de dados do joomla", $db); $sql = "UPDATE jos_plugins SET published=1 WHERE id=1"; mysql_query($sql); echo "Tabela jos_plugins atualizada"; mysql_close($db); ?> Na linha 2 do script, usuário é o nome do usuário que você definiu para a base de dados do Joomla e senha é a senha do mesmo. Faça as substituições de acordo com o que você determinou. Na linha 3, base de dados do joomla é o nome da sua base de dados. Faça também a substituição. Se você não tiver como confirmar se o plugin Autentication - Joomla tem realmente a id 1, omita a diretiva WHERE id=1 na linha 5. Neste caso, TODOS os plugins serão habilitados e você terá que rever quais você quer deixar ativos e quais não. Melhor assim do que desligar todos eles, né não? Finalmente, faça o upload deste script para o diretório raiz do seu site e chame-o no browser com http://www.seusite.com.br/autentica.php. Se você receber a mensagem "Tabela jos_plugins atualizada" é sinal de que tudo correu bem e feliz novo login