PHP code highlight

Na sequência do artigo anterior já estou a imaginar outra pergunta que em principio alguém me irá fazer, e deixo desde já aqui a resposta….

Exemplo do output desta função pode ser visto aqui

O PHP tem uma função que permite “colorir” código essa função é highlight_file que recebe como parametro o ficheiro a “colorir” exemplo de utilização highlight_file("test.php");

Cuidado ao utilizar esta função porque em vez de usarem um ficheiro especifico usarem algum parâmetro passado GET ou POST, validem sempre se não estão a mostrar algum ficheiro que não devam!!! Podem estar a revelar as vossas passwords ao mundo!

O PHP tem outra função parecida mas para “colorir” strings que é highlight_string que recebe como parâmetro a string a “colorir”….

Nota :

Uso a palavra colorir entre aspas porque apesar de ser uma das traduções possiveis para highlight não me soa muito bem!!!

PHP + GeoIP

Tenho recebidos vários pedidos para mostrar como fiz isto, como defendo o open-source só fica bem explicar como fiz e disponibilizar as fontes.

Pode parecer complicado, mas de complicado não tem nada, vou começar com uma pequena introdução que acho que deve ser feita para contextualizar.

Quando um ISP (Fornecedor de Serviços de Internet) nos atribui um endereço de IP, estes não são atribuidos aleatóriamente nem pode ser o que apeteça ao dito ISP, um ISP adquire um seguemento ou vários de endereços de IP, por exemplo neste momento o meu IP é 62.48.228.xxx o meu fornecedor de internet é o “dono” desta gama de ip’s logo outra pessoa que tenha um ip com os mesmos 3 primeiros octetos iguais presumo que o ISP será o mesmo, ou dependendo da quantidade de IP’s que o ISP pode atribuir pode ser com base nos 2 primeiros octetos.

Se existisse uma base de dados que tivesse lá todos os conjuntos de IP’s e os respectivos ISP’s facilmente eu conseguiria dizer que com base no pais de operação do ISP que o cliente está nesse mesmo pais. Existe uma empresa que fornece uma base de dados com estes dados e o melhor de tudo têm uma versão gratuita que pode ser usada sem restrições, essa empresa chama-se MaxMind, esta base de dados é fornecida em 2 formatos CSV e binário, o CSV é muito útil se quisermos por exemplo importar os dados para uma base de dados tipo MySQL, eu estou a usar o formato binário pois o update é mais fácil e só wget e decompactar e está o update da base de dados feito.

A MaxMind disponibiliza exemplos de utilização e API’s em várias linguagens C, C#, PHP, Python, VB.ne, Pascal e Javascript e também um modulo para apache (mod_geoip), módulo para PHP, módulo Perl e para os adeptos do processamento distribuido um objecto COM+.

Penso que o GeoIP já está apresentado agora vou partilhar um exemplo de uso simples com PHP, para começar fazemos download da ultima versão da base de dados que está disponivel aqui.

O exemplo de utilização e acesso à base de dados pode ser visto aqui assim como o seu output que está aqui. No exemplo de utilização estão os comentários que ajudam na leitura do código, podia explicar aqui mas creio que é mais fácil ler os comentários que coloquei no ficheiro, a utilização do HTML é só para embelezar!!

O ficheiro onde estão as funções que permitem isto é distribuido com a extensão .inc costumo renomear sempre para .inc.php para não deixar o código á mostra como por vezes altero esse ficheiro, tenho receio de deixar algum “buraco” exposto.

Este exemplo fica disponivel neste .rar ou naveguem nesta pasta…

A MaxMind fornece ainda outras bases de dados de utilização tão fácil quanto esta para identificar a cidade do IP e outras bases de dados pagas.

Template WordPress how to…

Wordpress LogoEncontrei no ndesign-studio.com um excelente manual para quem quer fazer um template para o WordPress, para quem se quer iniciar nestas andanças já tem neste manual “pano para mangas”, além do que é explicado neste manual existem ainda muitas mais “Template Tags” que podem ser consultadas no site codex do wordpress

A propósito já está cá fora a versão 2.3.1 do WordPress, é aconselhado o update pois esta versão corrige alguns bugs da versão anterior…

E já agora e a propósito do WordPress participem no site oficial da equipa de tradução do wordpress para Português que é o WordPress-pt.com … contribuam!! 😉

Solução para Erro de sistema: Lsass.exe

Hoje chegou-me ás mãos um portatil com windows xp home edition que no arranque dava o erro “Erro de sistema: Lsass.exe Ao tentar actualizar uma palavra-passe, este estado devolvido indica que o valor fornecido como palavra-passe actual não é correcto.”, a solução que resolveu o problema foi a seguinte:

1º – Arrancar com a consola de recuperação do Windows XP (não tinha cd do home edition arranquei com um do professional funcionou na mesma)

2º – copiar os ficheiros que estão na pasta “c:\windows\repair” para “c:\windows\system32\config” (não sei porque o comando xcopy não estava disponivel como eram 4 ficheiros nem procurei o executavel para o colocar na path) com o comando copy “copy ficheiro destino”

Se quiserem criem um batch file e escrevam:

copy c:\windows\repair\system c:\windows\system32\config\system
copy c:\windows\repair\software c:\windows\system32\config\software
copy c:\windows\repair\sam c:\windows\system32\config\sam
copy c:\windows\repair\security c:\windows\system32\config\security
copy c:\windows\repair\default c:\windows\system32\config\default

Reiniciei o windows e funcionou!!!

Lista de parametros do Linux

Para memória futura guardo neste post um documento com os parametros do Linux, não vou referir a fonte porque tinha isto num txt no ambiente de trabalho e não me recordo de onde retirei! O documento data de 2003 mas os parametros que procurava já estavam contemplados por isso serviu-me perfeitamente! Continuar a ler Lista de parametros do Linux

Instalar Ubuntu em discos SCSI numa adaptec aic-7899

Após uma horas a partir pedra por o Ubuntu não detectar os discos onde queria instalar, não sei se pelos discos ou pela controladora SCSI (adaptec aic-7899), um dos erros que o UBUNTU mostrava era “/bin/sh can’t access tty job control turned off ubuntu”, após varias tentativas frustadas tentei o seguinte no Splash de arranque do CD do UBUNTU fiz F6 e acrescentei “all_generic_ide” imediatamente antes de “quiet splash ““-” com isto o Live CD arrancou. Mas com a imagem toda distorcida, foi só reiniciar o bixo voltar a escrever o mesmo e arrancar com a opção 2 (“safe mode”)… já arrancou com imagem a funcionar… fiz Install e instalou correctamente!!
Reiniciei o computador arrancou corretamente, até agora ainda não falhou e se falhar não vai ser o sistema operativo!