sexta-feira, setembro 19, 2008

Microsoft Live Mail / Hotmail barra Chrome

Estou postando usando o Chrome. Nada deu errado por enquanto.
Mas quanto tento acessar o Hotmail (mail.live.com):
Atualize o seu navegador da Web
É recomendável atualizar seu navegador da web para obter o melhor do Windows Live Hotmail. A atualização levará apenas alguns minutos. Para começar, escolha um dos navegadores a seguir:
Microsoft Internet Explorer
Mozilla Firefox
Apple Safari
Se você não deseja atualizar agora, você ainda pode Continuar no Windows Live Hotmail, mas talvez algumas partes não funcionem ou não sejam exibidas adequadamente.

Depois, insistindo:
Esta é a versão clássica do Windows Live Hotmail
Essa versão funciona melhor com seu navegador. A versão completa do Windows Live Hotmail é executada no Internet Explorer 6.0 e superior (verifique os requisitos do sistema antes de instalá-la). A versão completa também funciona com o Firefox 2.0.

O que eles querem dizer com isso? O iE6 é melhor? Estão com medo do Chrome? Fazer uma média com a comunidade colocando links para Firefox e Safari?
Vai entender a Microsoft...

terça-feira, setembro 09, 2008

Permitir somente index.php pelo .htaccess

Apesar de haver vários frameworks, tem coisa que faço sem a utilização deles. Acho que isso é comum para desenvolvedores. É legal proibir o acesso direto do usuário aos arquivos do seu site, como uma imagem ou até mesmo um script que faça algo mais delicado como excluir_usuario.php, por exemplo. No Apache é fácil fazer isso usando o arquivo .htaccess.

Vamos lá:

Crie um arquivo .htaccess. Se for Windows, copie de um diretório que já exista e pague seu conteúdo, ou baixe um exemplo da internet. O Windows não deixa criar arquivo assim que ele considera sem nome (somente com extensão).

O Conteúdo dele seria assim:

# htaccess do Daniel - testando e evoluindo - v0.1

IndexIgnore *

Options +FollowSymlinks

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule !^index.php(.*)$ index.php$1 [L]
</IfModule>

<Files .htaccess>
order deny,allow
deny from all
</Files>


A primeira linha com IndexIgnore não deixa listar o conteúdo do diretório.
A linha do Options +FollowSymlinks é para o funcionamento do módulo de rescritra.
Se o módulo de escrita estiver ativado, usa ele para substituir qualquer chamada de arquivo diferente de index.php e chama o index.php com a querystring usada inicialmente, ou seja, se eu chamar daniel.php?a=ddd, chama o caminho index.php?a=ddd.
Depois ele proíbe o acess odireto ao .htaccess. Só isso.

É simples e atende minhas necessidades. Claro que pode ser que eu melhore (com sua ajuda inclusive), mas já é um começo para evitar surpresas desagradáveis.

Esse arquivo faz efeito para os subdiretórios também. Se você quiser alterar as regras deles, basta criar um .htaccess com elas. Em caso de não criar, deve-se criar um arquivo index.php que não faz nada, pois sempre haverá redirecionamento para o index.php de cada diretório. Ou então na regra do .htaccess, basta colocar para redirecionar não apra o index.php, mas para /index.php ou /site/index.php para sempre ir para o mesmo arquivo.

Abraço!!

terça-feira, agosto 26, 2008

Spam no MSN de usuários desconhecidos

Uma coisa chata que vem acontecendo é receber mensagem de alguém que não conheço dizendo para visitar sites estranhos. Ninguém precisa dizer para não acessar esses sites, mas sim como isso está acontecendo? São usuários com vírus, worm ou algo assim? E como chegam até mim, ou você? Se alguém souber, me avise!!!!

Falha do MySQL como serviço na instalação do XAMPP no Windows XP

Sempre usei o Apache, PHP e MySQL em instalações a parte, mas no meu note eu instalei o XAMPP e rodou legal (Vista). No trabalho a estação é XP e resolvi fazer o teste.
Baixei a última versão do XAMPP e instalei tudo como serviço (para iniciar junto com o Windows). Aparentemente deu tudo certo, até ver que o MySQL não subia. Pequisei, desistalei e reinstalei 3 vezes e nada. Solução: Executei o .bat que desistala o serviço do MySQL (xampp/mysql/mysql_uninstallservice.bat) e depois instalei novamente o serviço (xampp/mysql/mysql_installservice.bat). Pronto. Funcionou. Agora me pergunto: Por quê? Resposta: Sei lá! A instalação da versão que usei não deve estar 100% para o MySQL como serviço. Na data desta postagem, a instalação foi executada e reexecutada a partir desse arquivo 'xampp-win32-1.6.7-installer.exe'. Talvez a versão 1.6.8 já tenham corrigido esse problema.
Bom, se acontecer com você, tente isso!
Abraço!

sexta-feira, agosto 01, 2008

Ativar Módulo Rewrite no Apache

Para muitos pode ser meio manjado, mas com o surgimento de diversos frameworks e ferramentas PHP que utilizam o módulo de reescrita de endereço a necessidade de sua utilização vem crescendo. Para ativar o módulo basta ir no arquivo de configuração httpd.conf na pasta conf do Apache e retirar o caractere de comentário do início da linha que manda o apache carregar o bendito.

De
#LoadModule rewrite_module modules/mod_rewrite.so
para
LoadModule rewrite_module modules/mod_rewrite.so

E depois ache AllowOverride None e mude para AllowOverride All. Deve ter duas vezes essa declaração. Ex:

[Directory /]
Options FollowSymLinks
AllowOverride None (altere para All)
Order deny,allow
Deny from all
[/Directory]


Na minha instalação do xampp em casa, o arquivo de configuração está em C:\xampp\apache\conf\.

Após fazer a alteração é preciso reiniciar o Apache. Para isso basta executar C:\xampp\xampp_restart.exe ou então ir em Computador/Gerenciar/Serviços e clicar com o botão direito do mouse e escolher a opção Reiniciar.

Até! :D

segunda-feira, julho 07, 2008

Spam do orkut.com.BR

Recebi em um e-mail que não é um dos cadastrados no orkut um convite para amizade no site. Tudo igualzinho, daria até para enganar, mas o pior detalhe e que mais me chamou atenção: .com.br. Os links aliás levam para este domínio, mas eu não vou entrar e espero que você também não entre.


Olá, dj daniel,

danielle souza (dannysouzza@hotmail.com) o convidou para ser seu amigo no orkut.

Para confirmar ou rejeitar essa solicitação, clique em http://www.orkut.com.br/FriendAdd.aspx?accept=true&uid=14704134884054860026
Para ver o perfil de danielle, clique em: http://www.orkut.com.br/Profile.aspx?uid=14704134884054860026


* * *

Para controlar os e-mails de notificação, acesse as suas Configurações da conta: http://www.orkut.com.br/NotificationSettings.aspx

Se você quiser ignorar danielle, visite o perfil de danielle e clique em “ignorar”: http://www.orkut.com.br/Profile.aspx?uid=14704134884054860026

Se você não for usuário do orkut e quiser impedir que todos os usuários do orkut enviem e-mails para você, visite: http://www.orkut.com.br/Block.aspx

quarta-feira, julho 02, 2008

Spam - Lojas Americanas

Bizarro... chegou um e-mail das "lojas americanas" como se meu e-mail tivesse algum cadastro lá.



Prezado(a) cliente,

Recebemos seu pedido
sua compra será debitada em sua conta bancária,
dentro de 24 horas.

CLIQUE AQUI PARA VER SEU PEDIDO OU CANCELAR !!

VEJA O RESUMO DO SEU PEDIDO.

Desde já agradecemos pela sua preferência.

Silvia Lira-Atendimento a Clientes
Sac.atendimento@americanas.com
www.americanas.com.br





O link desta página leva e este link: http://fly2.ws/SUCtvtE . Não entrem.. eu não entrei
O remetente mascarado da mensagem é AdministracaoCDP@lojasamericanas.com.br.

Tem gente que cai nessa. Por isso, se puderem, avisem.
Abraço!

sexta-feira, maio 30, 2008

Testando CMS Made Simple

Hardware: P4, 1Gb de RAM
Software: Win2K, Apache2, PHP5

Instalando passo a passo
  • Extraí o arquivo baixado do site http://www.cmsmadesimple.org/ e descompactei no diretório.
  • Ao acessar, fui redirecionado para a instalação onde me é mostrada uma página amigável com testes realizados sobre meu PHP, módulos, permissões e funções: No meu caso o único problema foi que eu não tinha um arquivo config.php, e ele pediu para o criar manualmente (vazio mesmo) - Poderia já vir por padrão um arquivo em branco.
  • Criei o arquivo e ele identificou. Reclamou de outras configurações do Apache, mas foi só um alerta. CONTINUE.
  • Usuário administrador, e-mail e senha (coloquei admin/admin). CONTINUE.
  • O nome do site e os dados para conexão (MySQL, PqSQL ou SQLLite, banco, usuário, senha, prefixo das tabelas etc). Criei manualmente um banco para esse teste e deixei marcadas as opções para criar as tabelas (apaga os dados se já existir) e colocar um exemplo de conteúdo. CONTINUE.
  • É exibida uma lista de tudo que ele fez com relação ao banco, e pede para eu terminar de configurar a aplicação com o caminho do servidor, físico e qual variável será usada para passagens via URL (GET - QueryString). Deixei tudo como já vem prenchido, com exceção da variável que era 'page' e mudei para 'pagina'. CONTINUE.
  • Mensagem de Sucesso. Pergunta se quer ir para o site ou instalar módulos adicionais.
  • Em uma outra janela vi como ficou o site. O exemplo instalado contém informações de como personalizar o site.
  • Na mesma janela da instalação escolhi a opção de instalar módulos adicionais, o que me jogou para a administração.
Administração
  • Design intuitivo com links no na parte superior.
  • Como escolhi anteriormente a opção de adicionar módulos, é exibida uma lista de vários módulos separados por ordem alfabética. Existem as opções de baixar e instalar. Não instalei nada.
  • No 'home', é mostrada uma página com a explicação de cada item principal de menu. Gostei bastante do que vi: administração de usuários e grupos, layout, módulos, arquivos, preferências, e notícias que já vem instalado junto com outros módulos.
Instalando um módulo
  • Agora decidi que vou instalar alguns módulos (Module Manager).
  • Não encontrei nenhuma wiki de cara... Blog achei um 'Blogs' (tudo isso no gerenciador de módulos). Bastou eu clicar em 'Download & install' e pronto. A próxima tela foi uma mensagem de sucesso.
  • O Cart Made Simple deu pau.
  • O Chat Made Simple foi OK.
  • Tem uma porrada de módulos... para tudo que você imagina, até de backup, jobs, editores diversos.
  • Coloquei agora o Polls Made Simple (pesquisa)
  • Como o Cart Made Simple deu pau, tentei agora o Shop Made Simple e deu certo.
  • Coloquei um fórum também.
  • Fiquei chateado de não ter encontrado uma wiki.
  • Configurei o Shop e o Blogs, mas não consigo fazer chamar do menu.
  • Achei. Não há uma maneira visual como no WordPress. Para incluir um módulo na página, deve tudo ser feito manualmente através de linha de comando. As instruções estão na página principal do módulo em específico. Depois é só formatar.
Gostei. Apesar de não saber de inicio como fazer para incluir o módulo na página, achei simples mesmo. Acho que poderiam evitar de fazer com que a pessoa precisasse criar manualmente o arquivo config.php. Nota 8,5, por não dar para inserir visualmente os módulos.

segunda-feira, maio 26, 2008

Testando eZ Publish

Hardware: P4, 1Gb de RAM
Software: Win2K, Apache2, PHP5

Instalando passo a passo
  • Logo de cara ao instalar já reclamou das funções strftime() e strtotime() por não ser uma função segura. Encheu minha tela de reclamações. Todas as telas.
  • Lá embaixo (tinha muitos warnings), escolhi o idioma e cliquei em NEXT.
  • Pediu para eu criar um diretório para o upload (?) chamado C:\WINNTTEMP. Criei e então NEXT.
  • Configuração de e-mail. Como não tenho o servidor ativo na minha máquina deixei em branco. NEXT.
  • Selecionei MySQL como banco a utilizar. NEXT.
  • Servidor, usuário e senha do MySQL. NEXT.
  • Idioma de suporte (português Brasil). NEXT.
  • Aí veio uma tela para escolher entre Plain Site (Stripped install. Contains no special toolbar or menu choices), Website Interface (Website Interface is a web based CMS solution based on eZ Publish. It contains templates and settings that meets the most common requirements for content management systems) e ez Flow (The eZ Flow extension to eZ Publish enables editors to build complex page layouts and pre-plan the publication schedule to ensure a constant flow of rich content). Para esse teste selecionei a segunda opção, pois vou testá-lo como CMS. NEXT.
  • Mostrou-me essa mensagem de erro:
    Fatal error: Maximum execution time of 30 seconds exceeded in ...\ezpublish4\kernel\setup\steps\ezstep_site_types.php on line 108
    Fatal error: Maximum execution time of 30 seconds exceeded in ...\ezpublish4\lib\ezutils\classes\ezexecution.php on line 144
  • Voltei a tela e escolhei o Plan Site. NEXT.
  • Deu certo. Importou ou instalou esse pacote. NEXT.
  • Mapeei o idioma para Português do Brasil. NEXT.
  • Método de acesso escolhi URL (como recomendado). NEXT.
  • É exibida uma tela com os detalhes do site (UR e administrador) e um combo para eu escolher o banco de instalação. Criei um banco ezpublish e o escolhi. NEXT.
  • Deu erro. Esse meu banco é iso-8859-1 e o ez Publish exige que seja UTF-8. Mudei o charset do banco (ALTER DATABASE `ezpublish` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci). Tá enchendo o saco. NEXT.
  • Nome e senha do administrador. NEXT.
  • Me mandou copiar o arquivo .htaccess_root como .htaccess no diretório rais do site. O Windows reclama de um arquivo começar com ponto. Copiei via linha de comando (copy .htaccess_root .htacess). NEXT.
  • Pergunta se quer enviar os dados da instalação para o site http://ez.no. Desmarquei. NEXT.
  • Está demorando para carregar a página...
  • Terminou. Me mostra uma mensagem de finalização e link para administração e para o site em si.
Essa fase foi estressante e traumatizante. Nunca mais quero ver a palavra NEXT, nem as funções strftime() e strtotime(). Achei muito estranho ter que criar um diretório no C:\ e copiar na mão o arquivo de acesso do servidor. Vamos vê-lo funcionando.

Mão na massa
  • Tentar logar como Admin/admin e deu timeout. Me registrei. Não consegui me logar com o novo usuário , pois acho que tem que ativar. Tentei logar como admin/admin e deu certo.
  • Na área adminsitrativa, há possibilidades de gerenciar usuários e grupos, um loja virtual, o design do site, gerenciar pacotes. O normal para qualquer CMS. Não vi nada de diferencial para essa instalação básica. Só estou achando lento demais.
  • O interessante é a estrutura por diretórios/pastas, mas isso às vezes confunde um pouco (muita hierarquia). A edição das páginas é feita com um editor WYSIWYG. O gerenciamento de arquivo parece ser um ponto forte.
  • Não consegui habilitar meu novo usuário. A única maneira deve ser através do e-mail, mas como não tenho como enviar, não consegui.
Achei meio confuso mas tem tudo que um CMS precisa ter. Pela instalação, não recomendo. Posso estar sendo precipitado, mas não me agradou. Vou usá-lo mais tarde e ver se essa primeira impressão é desfeita. Nota.... 5 está de bom tamanho (tem tudo, mas é lento assim como a instalação.)

CMS em PHP

CMS significa Content Manager System, ou seja, Sistema Gerenciador de Conteúdo, ótimos para sites com bastante manutenção de conteúdo e portais. Para o dessenvolvedor e para o cliente, é ideal utilizar um que seja fácil de customizar e de usar. Esse é um grande problema. Qual CMS usar??? Para nós, pobres desenvolvedores que gostam, ou precisam, usar um CMS com resultado em XHTML limpo, é uma dúvida cruel. Ainda mais tendo que unir esse fato à simplicidade de administração e ao poder da personalização. Tenho 3 nomes que particularmente aprovei em situações que utilizei.
  • Drupal - o mais simples e fácil de administrar, porém a edição/diagramação das páginas é um pouco restrita (PHP+MySQL|PgSQL).
  • Wordpress - criado para ser um sistema de blog fácil e robusto com diversos recursos para personalização e controle, possui plugins que fazem dessa poderosa ferramenta um gerenciador de conteúdo muito bom (PHP+MySQL).
  • CMSMadeSimple - realmente simples e poderoso, com templates e módulos para o site, porém falha pelo português inexistente no site oficial (PHP+MySQL|PgSQL).
Hoje, depois de muita reflexão, prefiro o Wordpress devido a grande gama de templates, plugins, idiomas e facilidade na administração e diagramação das páginas.

Mas minha última necessidade foi usar um que pudesse ser usado com diversos bancos. Encontrei estes outros CMS interessantes em PHP e que utilizam os maiores e mais usados bancos de dados do mercado (MySQL, PostgreSQL, Oracle e MS SQLServer)
Já sem utilização de banco de dados, ou seja, armazena os dados em arquivos texto (flat file), encontrei esses:
Vale a pena testá-los. Publicarei meus testes um a um aqui no blog.

Abraço!

terça-feira, abril 15, 2008

orkut não diz nada

Outro dia minha cunhada me perguntou se eu havia olhado o orkut da nova namorada do meu irmão. Respondi que não, e ela falou que deveria, pois é namorada do meu irmão e deveria me preocupar com isso. Agora me diga: O que o orkut diz sobre uma pessoa?

Se você quer conhecer uma pessoa, você precisa conversar com ela, dar tempo para que você consiga ter alguma opinião sobre ela (se esse for o intuito), não entrar no orkut. Sites de relacionamento mostram o que as pessoas querem mostrar, as comunidades que ela entrou para mostrar para os outros.

Eu tenho orkut e acho muito legal, pois tenho indiretamente contato com meus amigos e familiares do presente e do passado, coisa que não conseguiria se não fosse essa ferramenta. Mas é só. Colocar fotos, vídeos etc e tal é opção de cada um. Muitas pessoas fazem depoimentos lindos, mas falsos. Recados de saudades, amizade e amor, mas falsos. Entram em comunidades intelectuais, de grupos interessantes, mas somente para mostrar que se interessa pro determinado assunto, para tentar se mostrar inteligente ou ligado no mundo.

É preciso tomar muito cuidado ao avaliar uma pessoa através desses sites de relacionamento. Até empresas usam, de forma errônea para mim, orkut para selecionar candidatos. O orkut para mim é fachada. É o que você quer expor de si para o mundo, e nem sempre reflete o que você é ou o que realmente faz. Sou daqueles caras que prefere ler em papel impresso (as árvores que me perdoem) e conversar pessoalmente, sem MSN, sem Skype. As vezes olhar nos olhos de alguém lhe revela mais do que horas de conversa.

Quanto a namorada do meu irmão, ela parece ser legal...

segunda-feira, abril 07, 2008

Convertendo caracteres em entidades HTML com PHP

Esse aqui é muito legal! Cada caractere da string é convertido para entidade HTML usando a numeração decimal ASCII. Comecei usando para exibir e-mail e os robôs não pegarem (não é funciona tão bem quanto esperava, mas converte bunitinho):

function getAscii($str) {
if (strlen($str)>0) {
for ($i=0;$i<strlen($str);$i++) {
$arr[] = "&#".ord($str{$i}).";";
}
return implode('',$arr);
} else {
return '';
}
}

Abraço!

Validação de Texto com ER

Eu fiz uma postagem mostrando a função que eu uso para validar campos de acordo com seu conteúdo e tamanho máximo. Pesquisando um pouco mais, vi que as expressões regulares pecavam um pouco em alguns pontos, pois estava restringindo demais o conteúdo.
Como exemplo vou citar um site que fiz. Eu usei expressões regulares como essa: '^[A-Za-zÀ-ú0-9@#%!&\*\?\)\(\$\}\{\+\.\-\_\,\;\:\n\r ]*$'
Legal! Pega tudo! Mas ficou enorme, e analisando a tabela ASCII (usada nas expressões regulares quando usamos faiza de caracteres entre colchetes), pude observar que se eu pegar o intervalo entre exclamação e arroba (!-@) abrange todos esses caracteres:
! " #$ % & 1 ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @
que são caracteres razoáveis para se aceitar em textos. Depois do arroba, vêm as letras maiúsculas, depois abra colchete, pipe, fecha colchete, circunflexo, underline, crase e depois as letras minúsculas. Esses caracteres entre as letras maipúsuclas e minúsculas eu prefiro deixar de fora, com exceção do underline '_'... Bom, resumindo, podemos simplificar a expressão regular sem causar perigo de aceitar caracteres como NULL, CR, LF, DEL, e assim colocar os caracters fora do comum que necessitar, como no meu caso o símbolo de libra '£' (o site era para o público inglês).
A expressão então para aceitar textos comuns ficaria:
'^[A-Za-zÀ-ÿ !-@\}\{\n\r£]*$'
Eu mudei o intervalo de À-ú para À-ÿ, pois não sei se certo idioma usa 'y' com acento. E no caso mantive a permissão para nova linha e retorno de carro. Obviamente você, após receber os caracteres aceitáveis, irá tratá-los. Eu costumo:
  • substrituir \n\r por somente \n
  • arranco as chaves, colchetes etc se não for usar
  • arranco tudo que possa prejudicar meu código: str_replace(Array(']','[','{','}','>','<',chr(34),chr(39)),'',$str);
  • arranco os apóstrofes e aspas se não precisar: str_replace(Array(chr(34),chr(39)),'',$str);
  • converto \n em <br />: ereg_replace("\r",'',ereg_replace("\n",'<br />',$str));
Mas lembre-se: não saia arrancando tudo. Se você receber um texto formatado com HTML, você não pode arrancar maior, menor e aspas.
Uma vez eu precisei salvar no PostgreSQL formatar os caracteres para jogar no Adabas pelo Mainframe. Então tive que substituir e colocar tudo em maiúsculo para ficar compatível. Fiz mais ou menos isso:
function noAccent($str) {
return strtr($str, "ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿºª", "SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy..");
}
function toMainframe($str) {
return strtoupper(noAccent(strip_tags($str)));
}

e aí
$str = toMainframe($str);
Bom, expressão regular é assim: você pode controlar tudo que você quer e não quer. AS funcções do PHP ajudam bastante, mas no caso foi um exemplo de uso que pode ser aplicado a qualquer linguagem que suporte ER.

Abraço!

quarta-feira, março 19, 2008

Fazendo um filho float caber no pai

Já tomei murros na boca do estômago por isso. Colocava uma div float: left, por exemplo, e ela era maior que o conteúdo texto da div pai. Aí esse infeliz transbordava, sobrepunha os limites da div pai. Era um filho rebelde, que não obedecia os limites impostos.
Mas graças a essa página Easy Clearing, minha vida mudou! Sem usar HTML, comente com CSS, você coloca um ponto invisível agredago/depois da div e usa um display: inline-block (isso para funciona em todos os navegadores).

Esse é o CSS que você deve usar:

.clearfix:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}

.clearfix {display: inline-block;}

/* Hides from IE-mac \*/
* html .clearfix {height: 1%;}
.clearfix {display: block;}
/* End hide from IE-mac */

Aí, na div que vai flutuar, você coloca no atributo class dela esse nome "clearfix".
Exempo:
<div class="clearfix">...</div>

Lembrando que o class permite mais de uma classe:
<div class="menu lateralesquerda clearfix">...</div>

Assim ele puxa a formatação das classes menu, lateralesquerda e clearfix.

Abraço!

quarta-feira, janeiro 23, 2008

Validando em PHP Expressões Regulares

Trabalhar com PHP é fácil, pois ele é poderoso e simples.

Para você fazer um teste se uma variável possui o padrão que você deseja (máscara), basta usar a função ereg ou eregi, que retorna TRUE (corresponde) ou FALSE (não corresponde)
A função ereg é case sensitive, ou seja, diferencia maiúsculas de minúsculas; já a eregi ignora essa diferença.

Exemplo:

$meus = (isset($_GET['meus'])) ? trim($_GET['meus']) : '';
if (ereg("[^a-zA-Z]",$meus)) {
$meus = '';
}

Acima eu verifico se a variável $_GET['meus'] foi inicializada; se sim atribuo ela à minha variável meus, senão atribuo vazio. Depois (eu poderia colocar junto com a verificação acima, mas assim fica mais fácil de enxergar) eu verifico se a variável é composta somente por letras. Sepossuir em seu conteúdo algo "não letra" (o não é simbolizado pelo "^" no início do bloco entre colchetes), atribuo vazio à variável (se for composta por letras... mantenho ela como está).
Poderíamos usar a eregi, que funciona igualzinho, apenas com a diferença que falei anteriormente.

Seguem uma função que uso para validar variáveis. Dá para ser incrementada e modificada, por isso, poste aqui se fizer algum melhoramento!

function validarCampo($str,$tipo,$tam) {
$padrao = '';
if (strlen($str)<=0) {return FALSE;}
if (!is_numeric($tam)) {return FALSE;}
if (strlen($str)>$tam) {return FALSE;}
if ($tipo=='n1') { $padrao = '^[0-9]+$'; } //numerico
if ($tipo=='n2') { $padrao = '^[0-9 ]+$'; } //numerico com espaços
if ($tipo=='fl') { $padrao = '^[+-]?(([0-9]+|[0-9]{1,3}(\.[0-9]{3})+)(\,[0-9]*)?|\,[0-9]+)$'; } //float
if ($tipo=='a1') { $padrao = '^[A-Za-zÀ-ú]*$'; } // alfa
if ($tipo=='a2') { $padrao = '^[A-Za-zÀ-ú0-9\&\; ]*$'; } // string - alfanumerico
if ($tipo=='a3') { $padrao = '^[A-Za-z0-9]*$'; } // string - alfanumerico sem acentuação
if ($tipo=='a4') { $padrao = '^[A-Za-zÀ-ú0-9@#%!&\*\?\)\(\$\}\{\+\.\-\,\;\: ]*$'; } // string - alfanumerico com caracteres especiais
if ($tipo=='a5') { $padrao = '^[A-Za-zÀ-ú0-9@#%!&\*\?\)\(\$\}\{\+\.\-\_\,\;\:\n\r ]*$'; } // string - alfanumerico com caracteres especiais
if ($tipo=='ht') { $padrao = '^[A-Za-zÀ-ú0-9@#%!&\*\?\)\(\$\}\{\+\.\-\_\,\;\:\n\r\<\>\/ ]*$'; } // caracteres de um trecho HTML
if ($tipo=='em') { $padrao = '^[0-9a-zA-Z]+[\_\-\.]?[0-9a-zA-Z]+@(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9]\.)+[A-Za-z]{2,6}|\[[0-9]{1,3}(\.[0-9]{1,3}){3}\])$'; } //email
if ($tipo=='u1') { $padrao = '^((ht|f)tp(s?)\:\/\/|~\/|\/){1}([0-9a-zA-Z]+:[0-9a-zA-Z]+@)?([a-zA-Z]{1}([0-9a-zA-Z-]+\.?)*(\.[0-9a-zA-Z]{2,5}){1})$'; } //url
if ($tipo=='u2') { $padrao = '^((ht|f)tp(s?)\:\/\/|~\/|\/){1}([0-9a-zA-Z]+:[0-9a-zA-Z]+@)?(([a-zA-Z]{1}([0-9a-zA-Z-]+\.?)*(\.[0-9a-zA-Z]{2,5}){1})(:[0-9]{1,5})?)?((\/?[0-9a-zA-Z_-]+\/)+|\/?)([0-9a-zA-Z]+([0-9a-zA-Z_-]?[0-9a-zA-Z]+)?\.[0-9a-zA-Z]{3,4})?([,][0-9a-zA-Z]+)*((\?[0-9a-zA-Z]+=[0-9a-zA-Z]+)?(&[0-9a-zA-Z]+=[0-9a-zA-Z]+)*([,][0-9a-zA-Z]*)*)?$'; } //url com subpasta e arquivo
if ($tipo=='t1') { $padrao = '^[0-9]{10}$'; } //telefone com DDD
if ($tipo=='t2') { $padrao = '^[0-9]{12}$'; } //telefone com DDD e país
if ($tipo=='t3') { $padrao = '^[0-9]{2} [0-9]{2} [0-9]{4}\-[0-9]{4}$'; } //telefone com DDD e país formatado 55 13 9999-9999
if ($tipo=='t4') { $padrao = '^0800[0-9]{6,7}$'; } //telefone 0800 sem espaços (080000(0)0000)
if ($tipo=='t5') { $padrao = '^0800\-[0-9]{2,3}\-[0-9]{4}$'; } //telefone 0800 formatado 0800-00(0)-0000
if ($tipo=='ip') { $padrao = '^[0-9]{3}.[0-9]{3}.[0-9]{3}.[0-9]{3}$'; } //ip
if ($tipo=='mo') { $padrao = '^\[0-9]{1,3}(\.[0-9]{3})*\,[0-9]{2}$'; } //moeda
if ($tipo=='d1') { $padrao = '^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$'; } //data no formato DD/MM/AAAA
if ($tipo=='d2') { $padrao = '^[0-9]{4}\/[0-9]{2}\/[0-9]{2}$'; } //data no formato AAAA/MM/DD
return ereg($padrao,$str);
}

Essa função recebe uma valor (uma string), um tipo de campo para validar e um tamanho máximo que este valor pode ter. Se não bate com o padrão ou for maior que o tamanho permitido, retorna FALSE.
Ela usa padrões de formatação também, como por exemplo "/" para data. Poderíamos usar "/" ou "-". Ficaria algo como '^[0-9]{4}[\/\-][0-9]{2}[\/\-][0-9]{2}$'. Aí vai do gosto do freguês.

Obs: o caractere "^" no início da expressão, indica que ela deve começar com aquele padrão, e o caractere "$" indica que deve terminar com o padrão também. Nesses casos, o conteúdo da variável deve seguir exatamente o padrão estipulado em seu todo. Se não colocássemos estes caracteres, esse padrão poderia ocorrer em qualquer lugar do campo/variável.
Se o caractere "^" aparecer dentro de um bloco "[]", ele significa NÃO.

Os que demoraram mais, através de pesquisas e ajustes foi criação (se assim posso dizer) do padrão de URL e o de e-mail, porque nos testes sempre aparecia algo novo... por isso, qualquer falha em qualquer padrão avise/comente!

Um bom guia é http://guia-er.sf.net, do Aurélio.

Abraço!!!

segunda-feira, dezembro 24, 2007

Expressões Regulares

Esse é o melhor guia explicativo de expressões regulares: http://guia-er.sourceforge.net/ do Aurélio. E tem um livro com o mesmo conteúdo... Ajude-o!

Estou postando isso porque eu sempre olho esse guia e nunca divulguei. Me senti culpado.
A última vez que precisei usá-lo, foi para inserir aspas em um arquivo CVS de http://www.magentocommerce.com/.
Texto,Tradução

Mas quando o conteúdo tem ",", temos que colocar entre aspas:
"Texto","Tradução, certo?"

Para isso basta usa a seguinte expressão regular para encontrar as expressões sem aspas.

Busca por:
^([^"].*),(.*[\w\?\!\.\:\;\>\)\'])$
Substituir por:
"\1","\2"
Abraço!

terça-feira, outubro 30, 2007

Multiple IE

Para quem é webmaster, a coisa mais chata é você ter que desenvolver e testar em todos os navegadores para assegurar melhor visualização para os clientes de seus clientes. E o Internet Explorer muda de versão e de maneira com que renderiza as páginas como uma menina que troca de roupa indecisa para uma festa. Fora o fato de testar no Opera e Firefox, pelo menos (mas os últimos seguem mais os padrões).

Essa ferramenta, Multiple IE, é muito interessante porque instala várias versões do IE na sua máquina sem sobrescrever as outras:

http://tredosoft.com/Multiple_IE

Esse artigo fala de testes com as versões do IE e suas diferenças

http://www.quirksmode.org/browsers/multipleie.html

quarta-feira, outubro 24, 2007

Paleta de Cores

A combinação de cores é fundamental para um bom leiaute. Eu sei... você deve estar olhando para esse blog e pensando que não é um dos mais bonitos que já viu ("Casa de ferreiro, espeto de pau"), mas isso é uma coisa que você deve levar a sério ao criar ou remodelar o site de seu cliente.
Existem algumas ferramentas web que ajudam você a não ficar perdido nas cores do site. Ajudam bastante, pois lhe dão as cores que combinam com a cor que você escolher. Muito legal!
  • http://www.colorblender.com/ é simples e muito poderoso - "é uma ferramenta online para encontrar cores e palette design".
  • http://www.colorschemer.com fornece ferramentas gratuitas e pagas com o intuito de auxiliar o desenvolvimento de sua paleta de cores de seu design. Em http://www.colorschemer.com/online.html você usa uma ferramenta muito boa também para encontrar cores similares para usar em seu site.
  • http://kuler.adobe.com/ é da Adobe Labs feito em Flash. O usuário pode criar sua paleta baseada em cores análogas, complementares, monocromáticas, tri-cores, compostas, sombras ou totalmente personalizadas, e salvá-la para outras pessoas verem.
Abraço!

quarta-feira, outubro 17, 2007

Span Bradesco

Recebi hoje esse e-mail com um link para um executável (.exe), se dizendo ser do Bradesco. Nem conta tenho lá....

ATENÇÃO - COMUNICADO IMPORTANTE

Prezado Cliente,

Informamos que desde 14/06/2007, o uso da CHAVE DE SEGURANÇA BRADESCO - ELETRÔNICA para acesso ao Bradesco Net Empresa passou a ser obrigatório.
Desde a data 14/06/2007 o sistema de identificação do Bradesco Net Empresa foi atualizado para a versão 2.0.1.15 para melhor interagir com o sistema de segurança atual.
Informamos que para continuar acessando normalmente o Bradesco Net Empresa será necessário efetuar a atualização deste componente até a data 16/10/2007.
Para realizar a atualização basta clicar em uma das opções abaixo e em seguida clicar em download e logo após em executar, feito isso aguarde alguns segundos e siga as instruções de instalação.
Para realizar a atualização escolha uma das opções abaixo:
http://www.bradescopessoajuridica.com.br/certificado-2.0.1.15-link1.exe http://www.bradescopessoajuridica.com.br/certificado-2.0.1.15-link2.exe

Em caso de dúvida, contatar a Central de Apoio à Empresa, pelo e-mail apoioaempresa@bradesco.com.br , de segunda a sexta-feira, das 07h00 às 20h00


Os links levam a um executável em http://fgoineau.free.fr/NetEmpresa-2.0.1.15.exe
Nem é preciso dizer para não clicar e baixar o arquivo....

Abraço!

quinta-feira, outubro 11, 2007

Fatos sobre Capitão Nascimento

A maioria baseado nos fatos de Chuck Norris, mas.... muito bom....
http://viabrasil.wordpress.com/2007/09/12/capitao-nascimento-facts/

Fatos como:
"Antes de entar para o BOPE, ele foi chamado de equivocadamente Aspira, e logo
veio a resposta:- Aspira é o caralho, meu nome é Nascimento porra…!!! Neste
momento ele foi promovido a Capitão do BOPE (ele foi o único a entrar sem
treinamento)." (*Dudu Mineiro*)

“Judas nem ia trair Jesus, mas capitão Nascimento disse: 07, traz o saco.”

"Quando Deus resolveu criar o Universo foi pedir permissão ao Cap. Nascimento e
ele respondeu: “Senta o dedo nessa porra!”

"A roupa do Super-homem era preta até o Cap. Nascimento dizer: “Tira essa roupa
preta porque você é moleque!”

"Quando Deus disse “Que se faça a luz!”, Cap. Nascimento falou “Tá de sacanagem,
sr. 01? Tá com medinho do escuro, sr. 01?”

"Se colocar no Google as palavras “Cap. Nascimento” + “se ferrou” vai obter 0
resultados e um aviso: Você quis dizer: “Baiano” + “se ferrou”.


Pessoal muito criativo! Muito bom... alias.. Tropa de Elite é um dos melhores filmes nacionais que já vi... Recomendo!