Arfoo script – corrigir php
Arfoo script é um script em php para fazer um directorio de sites, permite registo de sites, divulgando sites, blogs e até empresas.
Recebi à uns dias um pedido de ajuda para a resolução de um problema no script Arfoo devido à actualização da versão do php em alguns servidores.
Contacto com pedido de ajuda:
Hi, i need a little help, i have a arfoo website and since yesterday i have a php error, see my site here ........... and the category list on the sidebar, your site don't have that problem, did you solved? how?
thanks.
Hanz
hanz-----29@gmail.com
Este script parece ter sido abandonado pelos seus criadores, apesar de ainda estar disponivel para download no site oficial, não tem actualizações à algum tempo, mas mesmo com as várias actualizações da versão do PHP nos servidores, todas as funções que foram desativadas e substituidas não têm prejudicado o script. Até agora.
A versão do PHP 5.4 vem desativar várias funções e substitui-las por outras. Neste caso, como uma das antigas funções ainda é usada pelo script, este gera erros em algumas páginas interrompendo a construção das páginas.
Exemplo do erro:
A função que me refiro é a ereg_replace
, que foi substituida pela preg_replace
, apesar da sintaxe destas funções serem semelhantes, tem pontos que diferem provocando erros.
No caso do Arfoo Script, a correção é simples, só necessitará de editar o ficheiro /core/FrontController.php. Veja abaixo onde e o que deve mudar.
Edite o ficheiro e siga para a linha 118 onde vai encontrar o código abaixo
$newTitle = substr( ereg_replace( "\-$", '', ereg_replace( "\-+", '-', strtolower( ereg_replace( "[^A-Za-z0-9]", '-', str_replace( $specialChars, $normalChars, htmlspecialchars_decode($title) ) ) ) ) ), 0, $stringMaxLength ); return $newTitle;
Substitua por este novo código
$newTitle = substr( preg_replace( "/\-$/i", '', preg_replace( "/\-+/i", '-', strtolower( preg_replace( "/[^A-Za-z0-9]/i", '-', str_replace( $specialChars, $normalChars, htmlspecialchars_decode($title) ) ) ) ) ), 0, $stringMaxLength ); return $newTitle;
O que foi necessário foi corrigir adicionando delimitadores no padrão do texto a pesquisar.
Mudou-se o nome da função, adicionou-se a barra no ínicio /
e /i
no final.
antes:
ereg_replace( "\-$", |
depois:
preg_replace( "/\-$/i", |
Após a correcção o sistema deverá estar a funcionar normalmente.
Apesar de não ter actualizações este script continua a funcionar bem, não se sabe de falhas de segurança nesta versão, é um script gratuito, personalizável e tem funcionalidades que só se encontra em scripts pagos, perante isto penso que é o script ideal para directórios de sites.