Reset WordPress admin Password

Ia hoje fazer alguns testes numa instalação do wordpress que tenho no meu computador, após várias tentativas não me lembrava da password de admin que configurei para esta instalação. Ainda fui á base de dados mas lá tem apenas um md5 da password.

Lá fiz um ficheiro php que faz “echo md5(password)” e colei o valor na base de dados e ficou ok.

Para me facilitar o trabalho em futuros e previsíveis esquecimentos criei um pequeno script em php que faz todo o processo de reset da password de admin, bastando para isso editar o valor da password em plain text que está no topo do ficheiro.

Em baixo disponibilizo a source em php do ficheiro, para usar basta colar este texto num ficheiro .php na pasta da raiz da instalação do wordpress e visitar o mesmo no browser.

<?php
/*Nome do utilizador do qual queremos alterar a password*/
$nome_utilizador = "admin";
/*Nova password para o utilizador configurado em cima!*/
$nova_password = "teste";
/*
ATENÇÃO: se deixar este ficheiro no servidor sempre que alguém aceder ao mesmo a password
será alterada para esta.
Não é necessário alterar nada daqui para baixo, este script lê as configurações de acesso à
base de dados através do ficheiro de configuração do wordpress
*/
require( dirname(__FILE__) . '/wp-config.php' );
$ligacao = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
if (!
$ligacao) {
die(
'Não foi possível Ligar: <br />' . mysql_error());
}
echo
'Ligação á base de dados bem sucedida!!<br />';
$base_dados = mysql_select_db(DB_NAME, $ligacao);
$nova_password = md5($nova_password);
if (
mysql_query ("update ".$table_prefix."users set user_pass = '".$nova_password."' where user_login = '".$nome_utilizador."'"))
{
echo
"Password alterada com sucesso!!!<br />";
}
else
{
echo
"Ocorreu um erro ao alterar a password!!<br />".mysql_error();
}
echo
"Deve agora apagar este ficheiro do servidor!!<br /><a href=\"http://antoniocampos.net\">Antonio Campos</a>";
mysql_close($ligacao);
?>

PHP init_set o que é??

As configurações do php independentemente da plataforma em que corre são por defeito feitas num ficheiro que se chama php.ini , quem precisa de alterar uma das confiurações para um script especifico ou não tem acesso a editar o php.ini pode contornar isso usando a função init_set a sintaxe é a seguinte:

init_set (“Nome_Parametro”, “Valor_parametro”);

Esta função retorna false no caso de por alguma razão o parâmetro não ter sido alterado e retorna o valor antigo no caso da alteração ter sido bem sucedida!

Se por exemplo quisermos alterar o limite de memoria alocável podemos usar o init_set da seguinte forma:

ini_set(“memory_limit”,”64M”;

Nem todas os parâmetros do php.ini são alteráveis, não encontrei nenhuma lista dos parâmetros alteráveis, mas é fácil quando usarem esta função se a sintaxe estiver correcta e se o valor do parâmetro for válido e mesmo assim a função retornar false é porque provavelmente descobriram um parâmetro não editável em runtime!

PHP Geoip – Fatal error: Allowed memory size of…

Para aqueles que estão a usar o código que disponibilizei neste post sobre a API do GeoIP, ou que usam o GeoIP de qualquer outra forma!

Hoje uma das aplicações em PHP que fiz utilizando a API do GeoIP, começou a dar um erro “Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 27609379 bytes) in /path_para_o_site/my-ip-info/geoipapi/geoip.inc.php on line 316

A primeira coisa que fiz foi tentar com o init_set do PHP aumentar o “memory_limit” do PHP (ini_set(“memory_limit”,”64M”);) que não deu resultado apesar do valor a alocar fosse bastante mais baixo do que o limite.

Após vários testes falhados alterei um parametro na linha em que crio o apontador para a base de dados e ficou a funcionar correctamente! Na linha onde estava “$gcity = geoip_open(“db/GeoLiteCity.dat”,GEOIP_MEMORY_CACHE);” passou a estar “$gcity = geoip_open(“db/GeoLiteCity.dat”,none);” ficou a funcionar embora se note uma pequena perda de velocidade quase imperceptivel mas está mais lento!

Depois de o problema estar resolvido fui ao site da MaxMind dar uma vista de olhos e encontrei um benchmark dos diferentes tipos de cache que se pode ter e qual o numero de queries/segundo conforme o tipo de cache!

Sistema simples de cache com PHP…

Muitas vezes quando criamos um site e por pelas mais diversas razões surge necessidade de recorrer a um mecanismo de cache, uma das principais razões é a performance.

E em que é que cache influencia a performance? Imagina-se o ficheiro teste.php com 500 linhas de código com ligações a MySQL etc etc, é mais rápido se o ficheiro de output já estiver “feito” e só o actualizar de x em x temp, senão cada pedido seria 500 linhas de código assim serão 10 ou 20 conforme o mecanismo de cache a usar, temos que ter em conta que se nesse código existirem queries ao MySQL isso degrada ainda mais a performance.

Estou a criar uma classe de cache que de uma forma muito simples faz cache do output de qualquer script php inclusive se este tiver dados passados pelo método GET.

A classe pode ser muitissimo melhorada para já só faz o que se propõe que é verificar se um ficheiro já se encontra em cache, se o mesmo estiver cria o output para o cliente, se ainda não existir cache é criado um buffer com o output da página pedida e cria um ficheiro em cache com o conteúdo do mesmo, que será servido no próximo pedido…

O código da minha classe é o seguinte:

O post está dividido porque é muito extenso!!…

Continuar a ler Sistema simples de cache com PHP…

Ubuntu, Apache, php e Mysql

Não podia ser mais fácil instalar um servidor web com Ubuntu basta na consola escrever

sudo apt-get install apache2 mysql-server-4.1 php5 php5-mysql

Se o servidor for apenas para uso pessoal e testes sem acessos externos podemos fazer

sudo chmod 777 /var/www/

Se o servidor estiver disponivel na internet devemos ter mais preocupação com a segurança!!

Para testar o servidor basta na pasta /var/www (Pasta root default do apache) colocar um ficheiro.php com o conteudo

< ?php phpinfo(); ?>

e apontar o browser para “http://127.0.0.1/ficheiro.php” se vir uma página com a configuração do php então temos o php a trabalhar!!

Para testar o MySQL criamos um ficheiro “mysql.php” com o conteudo

< ?php $link = mysql_connect('localhost', 'root', ''); if (!$link) { die('Erro ao ligar ao mysql: ' . mysql_error()); } echo 'Funciona!!!!'; mysql_close($link); ?>

e apontamos o browser para http://127.0.0.1/mysql.php e o estado da operacionalidade do mysql aparecerá nessa página!!!
Por defeito a password de root é em branco que por razões óbvias deve ser alterada!!!

Simples!!!