Aldeia Numaboa
Um portal diferente em Português do Brasil

Informática da Aldeia

Home Informática Dicas Dicas Joomla Tranquei a gaveta com a chave dentro!

Na Aldeia

Há 108 visitantes online

3630 registros
0 hoje
14 nesta semana
4 neste mês

Boas vindas: flor

Estatística

Membros: 3639
Artigos: 1045
Links: 90
Leituras: 6680681

Login



Kanji da hora




Faça contato






Sex

25

Dez

2009


14:26

Tranquei a gaveta com a chave dentro! PDF Imprimir Indique esta página
(1 voto, média 5.0 de 5)
Escrito por vovó Vicki   


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:

autentica.php
  1. <?php
  2. $db = mysql_connect("localhost", "usuario", "senha");
  3. mysql_select_db("base de dados do joomla", $db);
  4.  
  5. $sql = "UPDATE jos_plugins SET published=1 WHERE id=1";
  6.  
  7. echo "Tabela jos_plugins atualizada";
  8. ?>

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 comemora

Última atualização ( Sex, 25.12.2009 16:11 )
 

Topo

Topo

Exceto onde especificamente citado, todo material deste site está sob Licença Creative Commons