Mostrando postagens com marcador PHP. Mostrar todas as postagens
Mostrando postagens com marcador PHP. Mostrar todas as postagens

sexta-feira, 16 de julho de 2010

Twitter - Link para Twittar com acentos...

Bom dia, achei um bug muito engraçado no twitter hoje...
Estava tentando responder a uma pergunta no orkut questionando porque o link dele não estava funcionando...
Pesquisei e não encontrei a resposta, resolvi tentar a solução idiota, pois achei uns links que funcionavam com acentos e outros que não...
Percebi que a diferença entre eles era o www.
Sim o www...

$tweet = "Frase com acento é foda!!! Mas é muito legal a programação... ä";
$tweet =  ($tweet);
$tweet = utf8_encode($tweet);
$tweet = urlencode($tweet);
header("Location: http://twitter.com/?status=".$tweet); //Funciona
header("Location: http://www.twitter.com/?status=".$tweet); //Não funciona
 E lembre-se de codificar em UTF-8 antes de enviar...
Não sei exatamente a causa do bug... Creio que alguma configuração que desconheço no servidor do twitter...
O problema é que no servidor com www. os acentos ficam urlencodados the way they are "s%E7%E3o", já no sem www. ele decodifica para "são"...
Bug esquisito, espero que ajude quem estiver com esse problema com palavras acentuadas em seus links...
Detalhe, o problema também afeta hyperlinks (aquele <a href="http://www.twitter.com/?status=">...
Então preste atenção a este detalhe...
Isso claramente não afeta apenas o PHP, mas qualquer linguagem... Pois os links gerados não funcionam nos browsers também...
Segue links para você testar por você mesmo (os links não funcionam pra quem não esta logado):
Tenha medo, muito medo, :P

Update: Entendi o bug... Ao acessar a url com www ele redireciona para a url sem o www, e neste redirect ele acaba sujando a mensagem...
Coisa de programador idiota que faz urlencode(urlencode($text))...

terça-feira, 27 de abril de 2010

Projeto - Form Filler

Este é um simples projeto que desenvolvi com o intuito de preencher formulários automaticamente.
Ele usa o sistema do Greasemonkey do Firefox. Acesse-o aqui...

Ele simplesmente permite armazenar na hash do link as informações a serem preenchidas nos formulários.

A sintaxe é está LinkDestino#GSFFFA-------Dominio-------DadosCodificados em BinHex

Os DadosCodificados são o nome do campo Name=Valor ou o id #Id=Valor

O separador de múltiplos valores é --*--


Exemplo (retire as quebras de linhas e eventuais espaços:
http://www.tj.sp.gov.br/#GSFFFA-------www.tj.sp.gov.br-------63746c30305f436f6e74656e74506c616365486f6c646572436f6
e746575646f5f756350657371756973615261706964615f74787
44e756d65726f5065737175697361646f5f746578743d31323336

Espero que gostem...

domingo, 25 de abril de 2010

Editor do Carnê-Leão On-Line

Finalmente eu disponibilizei esta aplicação ao uso de vocês, o uso dela é simples, você envia o seu arquivo xml, edita no site, e após baixa o xml e substitui com o xml antigo.
Depois é só abrir o programa Carnê-Leão e imprimir os relatórios e a guia DARF, tudo nos conformes com a Receita Federal.
A aplicação pode ser acessada aqui: Editor On-Line do Carnê Leão
Não liguem para a interface eu fiz ela em 4 horas, e eu priorizei mais a segurança das informações do que a aparência.

Não confiem no programa, especialmente em seu cálculo do valor do imposto, pra mim ele funciona, mas eu não uso todas as opções do Carnê-Leão... Alguns pontos eu ainda não disponibilizei a edição, mas são as telas mais simples que você mesmo pode editar sem esforço...

sábado, 24 de abril de 2010

Gerador de Guias On-line

Olá, acabei de disponibilizar meus geradores de guias DARF, GARE-DR e FEDTJ em PDF, o gerador é muito simples, é um simples formulário que ao ser postado gera em PDF a guia em questão, sem frescurites...

Depois eu coloco um calendário nos seletores de data. Ainda está em fase de desenvolvimento então tomem cuidado com possíveis erros...

Segue o link para os Geradores:

quinta-feira, 15 de abril de 2010

Projetos em Aberto

Após a lista de projetos inacabados, segue a lista de projetos em aberto, que um dia eu farei.
- Programa gerador de guias DARF, GARE, FEDTJ
O FEDTJ já tem gerador, mas precisa de uma interface mais amigável
Os demais é fácil o gerador, só falta a interface

- Programa de cálculos judiciais
É simples fazer isso, mas to sem tempo, e eu queria um sistema que calculasse de diversas formas permitindo que o usuário escolha a forma de cálculo mais adequada, visto que há diferença entre os diversos programas de cálculo que existem, e tem de ser simples para o usuário utilizar.
Tempo me falta e paciência.

- Programa gerador de petições iniciais
Principalmente trabalhista, se você verificar as ações trabalhista em geral são sempre as mesmas coisas, se o programa for bem feito ele mesmo calcula os direitos do empregado, e fornece um guia para o cadastramento
eletrônico, e quem sabe um dia, gere um xml para o cadastro eletrônico, quando o sistema deles permitir.
Isso é extremamente complexo de se fazer, mas é possível com tempo.

- Integração total do meu sistema do escritório, com o sistema de prestação de contas, com o sistema do carnê-leão.
Com isso, em tese, toda entrada no escritório, seria automaticamente registrada em todos os demais sistemas.

- Editor do Carnê-Leão On-line
Precisava organizar um sistema de segurança do meu programa, mas ainda não tive tempo de gerar o mesmo.

- Chat on-line via Ajax para o escritório
Como a implementação do GTalk não foi bem sucedida no escritório, vou tentar implementar um chat via Ajax no mesmo, mas acho melhor eu criar um sistema de tarefas, o segredo vai ser como fazer a inclusão das tarefas de forma simples e rápida.
O chat tem si é muito simples de fazer, só me falta tempo.

quarta-feira, 14 de abril de 2010

Projetos Inacabados

No aprendizado de programação, você pode deixar vários projetos inacabados, que não foram terminados por diversos motivos, a vantagem de ter um portifólio de projetos inacabados é que eles demonstram a sua capacidade de inovar, mesmo que o projeto não tenha sido concluído, pois demonstra sua habilidade em trabalhar com panoramas diferentes,ainda mais se você não tem conhecimentos avançadas de programação, servem como uma ótima fonte de aprendizado, pois permitem que você descubra novas formas de realizar tarefas específicas, e também coisas novas que você nunca pensou em fazer, ou sabia que era possível.
Segue aqui a lista de projetos inacabados meus:
- Jogo de Truco On-line em VB5
Numa época em que jogar truco virou mania na escola, eu tentei fazer uma versão on-line do jogo, na época eu nem tinha conhecimento de como fazer a conexão entre os computadores, meu conhecimento de TCP/IP era limitado, mas o jogo já tinha o misturador de cartas, já que eu não sabia randomizar um array no VB, e tinha parte da lógica do jogo funcionando. Só faltou a parte de conexão que funcionava precariamente.

- Programa de Organização de Livros
Era um programa que tinha por objetivo cadastrar todos os livros do escritório, era praticamente funcional, mas usava demais o DAO do Access, e depois que eu descobri o SQL, nunca mais utilizei isso, foi o primeiro programa de uso útil que eu fiz, mas que nunca foi utilizado.

- Rascunho do Programa de controle de Processos Judiciais
Esse rascunho só tinha Javascript praticamente, era a seção que permitia incluir mais de um cliente e parte, e permitia cadastrar o cliente novo por completo na mesma tela, um caos de javascript.

- Rascunho de um programa de Catalogo de CDs e DVDs
Um rascunho bem simples, praticamente só tinha o desenho dos bancos de dados, e um programa feito em cima de outro.

- Programa de transmissão de dados via som.
Esse é um dos mais interessantes que fiz, mas fiz em VisualBasic, por isso não deu muito certo. Mas a idéia era interessante, e o programa chegou a ser capaz de transmitir 2 unidades de informação diferentes.
A idéia era usar a placa de som para transmitir dados entre computadores, usando um cabo P2-P2, até funcionava usando o microfone, mas precisava de uma especificação mais avançada, os dados eram transmitidos por tons em frequencias diferentes, o programa em VB era capaz de identificar a frequencia do som e dizer se era A ou B, a detecção de frequencia era precária, mas funcionava.
O projeto não deu certo principalmente porque surgiram os pendrives, mas a idéia era totalmente viável, só não sei a velocidade de transmissão do sistema.

Depois eu falo de mais outros projetos inacabados que eu tenha me esquecido...

quarta-feira, 7 de abril de 2010

Gerador de Guias FEDTJ

Update: Versão atualizada no seguinte link: http://blog.otavio.info/2010/04/gerador-de-guias-on-line.html.

Se você advoga no Estado de São Paulo, conhece as guias FEDTJ.
E sabe que o modelo que existe no site da Nossa Caixa em PDF é uma porcaria para gerar PDF em série...
Como eu estava precisando de um programa que gerasse essas guias em lote, a partir de uma fonte lógica (planilha do excel), fiz um programa eu mesmo...
O programa esta no meu site, Gerador de Guias FEDTJ em Lote.
Ele gera guias a partir de uma planilha separada por tabulações e enters...
Muito útil para quem precisa pedir 80 certidões de objeto e pé...
Basta preencher no excel todos os dados, e colar, depois só esperar e a guia já está pronta para impressão...Numa versão futura vou incluir a possibilidade de preencher os demais campos de códigos, mas como essa prática não é muito comum ao público em geral, nem para mim vou deixar para depois....

Péssimas instruções!!! Mas o programa é para quem quer gerar guias em lote, para uma guia, da muito mais trabalho que o normal, teoricamente... Talvez eu faça um gerador de uma guia só, mas é só design...

Fiz uma versão para Gerar guias DARF em Lote também: Gerador de Guias DARF em Lote

domingo, 14 de fevereiro de 2010

Guia PHP + Lighttpd ou Nginx

Segue um guia, feito para eu lembrar como que eu consegui instalar o Lighttpd + PHP...
  • Baixei a versão em ZIP mesmo;
  • Descompactei em uma pasta em que o Lighty vai ficar instalado;
  • O PHP eu baixei aquele VC6, mas acho que como CGI pode ser o VC9 também...
  • O PHP deve ser descompactado em uma pasta sem espaço no endereço;
  • No arquivo lighttpd-inc.conf descomentei as seguintes linhas:
server.modules = ("mod_cgi",)
cgi.assign                  = ( ".php" => "C:/PHP5/php-cgi.exe")
  •  E no arquivo PHP.ini que deixei na mesma pasta do php-cgi.exe, alterei a linha doc_root para ficar igual a linha server.document-root do Lighty.
Pronto, com essas instruções o PHP está operacional no modo CGI...

Agora para rodar no modo FastCGI é mais simples, ou não...
  • Alterar as seguintes linha no lighttpd-inc.conf
server.modules = ("mod_fastcgi",)
fastcgi.server = (".php" =>("localhost" =>("host" => "127.0.0.1","port" => 521 )))
  •  E lembrar de executar o servidor PHP com o comando: php-cgi.exe -b 127.0.0.1:521
  • No caso do FastCGI não tem a frescura de não poder ter espaços no nome, e precisar definir o doc_root...
  • A única desvatagem é precisar executar o php-cgi.exe manualmente...
Baixei essa versão do Lighttpd, aqui...

Um ótimo guia de como instalar, eu só tive problemas por causa do lazy read...
http://redmine.lighttpd.net/wiki/1/TutorialLighttpdAndPHP

Agora um guia para instalar Nginx + PHP:
O funcionamento do PHP se dá da mesma forma que no FastCGI acima, a única diferença são as configurações do nginx.conf e do php.ini:
  • No php.ini deve ser configurado a doc_root;
  • Caso vá colocar o root em outro lugar, alterar as seguintes linhas do nginx.conf:
server {
  location / {
     root "D:Apache Base/";
     index  index.html index.htm index.php;
  }
}
  location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:521;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  "D:/Apache Base/$fastcgi_script_name";
            include        fastcgi_params;
        }
Um site que me ajudou a entender o Nginx: http://eksith.wordpress.com/2008/12/08/nginx-php-on-windows/

Espero que isto ajude a instalar esses servidores que não são o Apache...
Em termos de consumo de memória, os três são identicos, mas aqui é um servidor de testes, sem carga... 10MB para cada de RAM, inclusive o php-cgi.exe....

quinta-feira, 4 de fevereiro de 2010

Calculando Vencimentos de Acordos no PHP

Acabei de postar este script no PHPBrasil: Calcular Datas de Vencimentos Mensais

Estou usando ele no meu App, para calcular as datas de vencimentos de acordos, se bem que ele faz parte de um conjunto maior, que estarei postando assim que ele estiver pronto.

O legal do código é a simplicidade, sem fórmulas complexas...
Apenas 11 linhas de código e 2 if's apenas...

segunda-feira, 25 de janeiro de 2010

Guia - Sites em UTF-8 e PHP

Vou explicar aqui como tornar seu site compativel com UTF-8...
Você precisa entender que há várias camadas em que a codificação é utilizada, logo para usar corretamente o UTF-8 é recomendado usar UTF-8 em tudo...
Veja onde podemos informar a codificação de um texto:
  • Cabeçalho HTTP Header - Content-Type: text/html; charset=utf-8;
  • Cabeçalho XML - <?xml version="1.0" encoding="utf-8" ?>
  • Cabeçalho HTML - <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
  • Cabeçalho XHTML - <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
Lembrando que em regra o que vale mesmo é tudo menos o cabeçalho HTTP, mas é complicado, porque depende do browser...

O cabeçalho HTTP, pode ser informado pelo próprio PHP ou pelo Apache através da seguinte linha no .htaccess: AddDefaultCharset UTF-8

Agora onde que um servidor PHP com MySQL trata de codificações:
  • O próprio código do PHP;
  • A conexão PHP MySQL;
  • O armazenamento dos dados no MySQL;
Para deixar o próprio código do PHP em UTF-8 basta usar um editor de texto que suporte UTF-8, o Bloco de Notas do Windows serve, mas ele usa o BOM, e isso atrapalha... Por isso use um editor que edite em UTF-8 mas tenha opção de não gerar o BOM, como o Notepad2 ou o Dreamweaver...
Para deixar a conexão do mysql basta usar: mysql_set_charset('utf8',$link);
O uso de SET NAMES não é recomendado nas versões novas do PHP e MySQL...
Já o armazenamento do MySQL a mudança é feita na hora de criar o banco de dados ou a tabela com o CHARACTER SET utf8;

Lembrando que o armazenamento MySQL não precisa ser obrigatoriamente em UTF-8, uma vez que podemos definir na conexão qual charset desejamos, é possível que a conexão seja UTF-8, mas o MySQL armazene em Latin1, não sendo do tipo BLOB o campo, o MySQL faz a conversão do charset...

Um dos problemas de usar UTF-8 no PHP é que algumas funções falham ao executar comandos com o strtoupper e o strtolower, que em palavras acentuadas, deixa as letras acentuados sem alteração.

Outro problema que pode ocorrer é quando o usuário usa um editor ISO-8859-1 para um site UTF-8, o código gerado precisa do utf8_encode...

Outro problema é quando o arquivo php é Latin1 e a conexão do banco de dados é UTF-8, e o usuário tenta substituir um texto no php, palavras acentuadas não são substituidas, porque a função procura por um caracter Latin1, enquanto a string do banco de dados venho com caracteres UTF-8....

Outro problema é quando o usuário exagera e usa vários utf8_encode....

Outro problema é usar htmlentities em uma string UTF-8... Deve se usar htmlspecialchars...

Outro problema, mas esse eu preciso confirmar é que no Javascript ao postar uma string, deve-se usar encodeURIComponent e não escape ou encodeURI...

Tomando esses cuidados, metade dos problemas dos programadores PHP desaparecem, e 80% dos problemas de usuários reclamando de letras estranhas também...

Nota: Latin1 é o ISO-8859-1 no MySQL por isso as vezes falo ele...

Sites:
http://www.w3.org/TR/2007/NOTE-i18n-html-tech-lang-20070412/
http://www.w3.org/International/tests/#lang-decl

sábado, 16 de janeiro de 2010

Criando função Mysql

Vou ensinar agora como criar uma função no MySQL para decodificar algo que use uma criptogração de "um disco criptográfico", não sei o nome correto, é aquela em que cada letra ou grupo de letras tem apenas um significado... Criptografia por Substituição talvez seja, não achei o nome ainda...
Neste exemplo a criptografia é apenas de números para letras, cada letra vale sua posição no alfabeto, ou seja, A=1, B=2, C=3, D=4, E=5, e assim por diante
CREATE FUNCTION Funcao01 (s CHAR(1))
RETURNS TINYINT
RETURN IF(s="A",0,IF(s="B",1,IF(s="C",2,
IF(s="D",3,IF(s="E",4,IF(s="F",5,IF(s="G",6,
IF(s="H",7,IF(s="I",8,IF(s="J",9,0))))))))));
Uma funcão simples e ridícula....
Para rodar basta chamar como uma função qualquer...
SELECT Funcao01("G");
Agora explicando, você tem de definir o tipo de cada variável que for entrar, no caso s é do tipo CHAR(1) com tamanho 1, e a saída - o retorno da função vai ser do tipo TINYINT...
A função IF é simples, IF(condição,true,false)...

Uma informação importante, eu testei aqui o código e estava dando erro no MySQL ao criar a função:
ERROR 1307 (HY000): Failed to CREATE FUNCTION Funcao01
A solução foi rodar o mysql_upgrade.exe para atualizar os bancos de dados que eram de uma versão anterior do MySQL... (Se bobear era do MySQL 4.0, :P)
mysql_upgrade.exe -u root -p
Digite a senha do root, e espere ele terminar...

Bug no Apache/PHP e Expressões Regulares

Encontrei outro bug, mas descobri que já postaram no PHP Bugs: http://bugs.php.net/bug.php?id=47689
O problema que esse bug é um bug do Apache, conforme os comentários no site a correção é aumentar o Stack Size do Apache, editando o httpd.exe...
Como eu estou com preguiça de fazer isso, corrigi meu código de outro jeito...

Estou tentando fazer uma expressão regular pra capturar partes de um html gigante com vários ...
Segue um exemplo do código
$b= "" . str_repeat("a", 686)."";
$a = '/((.|\r|\n|\t)*?)<\/td>/i';
preg_match_all($a,$b,$c);
print_r($c);
O problema é que se o Match tiver mais de 685 caracteres o Apache trava, sem mensagem de erro, apenas falha na conexão...
Ou seja se tivermos 685 a's o script roda normal, mas 686 a's ele trava...
Rodando em linha de comando não tem o problema...
A solução foi simples, no lugar da expressão regular usei essa: /(.*?)<\/td>/si
Foi simples assim, o modificador s faz com que o ponto . também capture newline \n, é que no exemplo não tem \n, mas no texto tinha...
Segue o site onde aprendi sobre o *? e s: Extreme regex foo: what you need to know to become a regular expression pro
Isso não corrige o problema do Apache, mas se o seu caso for igual ao meu, vale a dica!!!

domingo, 13 de dezembro de 2009

Port do Cipher50 do Visual Fox Pro em PHP

Postei no PHPBrasil, veja aqui...
Port para PHP do algoritmo CIPHER50.FLL em C++ usado no Visual Fox Pro...
É o algoritmo usado no CD da Lista Telefônica da Telefonica...
O uso é simples, chame a função encrypt(texto,key)...
É um algoritmo em que a função de codificar é a mesma de decodificar...
Se não estiver disponivel lá, acesse aqui...
If it's not avaliable on the first link you can find the port here...

terça-feira, 8 de dezembro de 2009

Pesquisa Fonética 2

Na busca por algoritmos encontrei outro nesse endereço: http://www.iremar.com.br/fonetica.php
Testarei em breve e comentarei aqui os resultados, se é melhor, pior que o outro...

domingo, 6 de dezembro de 2009

Pesquisa Fonética em PHP

Na aplicação PHP que desenvolvi foi necessário a implementação de uma pesquisa fonética, no entando, usar a função SOUNDEX se mostrou ineficaz por vários motivos...

Foi então que encontrei um trabalho nesse link...

Nele é proposto um algoritmo para pesquisa fonética em português, acho que o nome é BUSCABR...

Para utilizar esta função criei a seguinte classe no PHP que pode ser vista aqui..

Exemplo e Explicação:
echo BuscaBR::Fonetica("José da Silva"); // Retorna: / js d slv /
echo BuscaBR::Fonetica("José da Silva",1);; // Retorna:  js d slv
O segundo argumento "1", serve para fazer com que o retorno venha delimitado por //, tive de fazer isso pois minha outra classe usava trim, e removia os espaços antes de depois...

Mas porque espaços antes e depois da string?

Porque ao pesquisar, %js%, sem espaços, ele vai match jsm (Josiane)...
Agora pesquisando por % js %, com espaços, ele vai match apenas José ou Jozé ou Josi, Giosé...
E se no MySQL estiver armazenado sem espaços, ele sempre vai ignorar a primeira e a última palavra, que apesar de terem as letras certas, faltam um espaço...

Espero de façam bom uso dela...

Link da Função: http://pastebin.com/f1819c394

PS: Percebi que a minha função que foi feita com base no guia do texto está errada, pois na tabela do texto ele inclui diversas letras que não estavam no guia, logo segue a nova versão do código aqui... Já alterei nos links acima...

terça-feira, 1 de dezembro de 2009

PHP Classes

Estou aprendendo a usar classes, apesar que ainda não entendi esse negócio de orientação a objetos...
Minha dúvida atualmente é se crio uma classe com funções estáticas para substituir funções livres no meu código...
A performace é um pouco mais lenta, mas os benchmarks são inconclusivos...

sábado, 28 de novembro de 2009

Carnê-Leão - Receita Federal

Cansado da tela pequena do Carnê-Leão da Receita Federal fiz um editor em PHP do arquivo dele, a única coisa que eu não fiz foi a geração da DARF para pagamento, mas o cálculo do imposto devido é fácil de fazer...

Uma dúvida que estou é se eu libero a fonte desta aplicação, ou faço uma versão web para as pessoas enviarem seus xmls e editarem online e depois baixar de volta para imprimir seus DARF's...

Ou envio o código pra Receita e quem sabe eles usam ele...

segunda-feira, 23 de novembro de 2009

PHP POG - Samples

Segue 2 códigos úteis para programadores que não sabem programar corretamente uma função e suas variáveis...
Uma espécie de SetGlobalAll();

De fora pra dentro:
extract($GLOBALS,EXTR_REFS); //No inicio da função
De dentro pra fora:
Savior(get_defined_vars()); //No final da função

function Savior($def)
{
foreach ($def as $key => $val)
{
global $$key;
$$key = $val; //podia usar extract mas daria na mesma... 1 linha por 1 linha....
}
}

quarta-feira, 4 de novembro de 2009

Post Extraordinário

Um post meio estranho, com duas notícias incrivéis do que aconteceu nestes últimos dias:

  • Um leitor do blog postou nos comentários do meu post explicando a simplicidade de como decodificar o Banco de Dados dos Correios, veja aqui. Parabéns ao FelipeTv que encontrou a resposta com as poucas dicas que passei.

sexta-feira, 16 de outubro de 2009

Como aprender PHP

Um guia simples para iniciantes para aprender PHP, não vou ensinar códigos e sim condutas de como adquirir conhecimentos sem parecer um idiota.
  1. Saiba pra que serve o PHP - é uma linguagem de programação server-sided (não você não pode controlar o micro do usuário com PHP, só com sua saída, seja HTML, Javascript, XML, qualquer coisa, menos ele próprio;
  2. Aprenda inglês - se não consegue, aprenda pelo menos o significado das palavras usadas para programar em PHP, e crie vergonha de aprender a ler inglês, não precisa aprender gramática, só o significado das palavras e saber que elas podem aparecer diferente (tempo verbal), e use um tradutor online sempre aberto em uma aba;
  3. Consulte sempre a documentação oficial no site (www.php.net - em Documentation - tem em Português também - só procurar);
  4. Ative a exibição de erros: display_errors = on;
  5. Ative a exibição de qualquer tipo de erro: E_ALL;
  6. Se aparecer apenas uma página em branco sem erro, veja o código fonte da página, o erro pode estar escondido;
  7. Na dúvida pesquise no Google antes de perguntar para alguém (você economiza o tempo de alguém e aprende a pesquisar);
  8. Não achou no Google? Use o menor número de palavras chave e tente novamente;
  9. Não? Tenta denovo com sinônimos;
  10. Agora pode perguntar, mas você provavelmente parecerá um idiota, pois se alguém souber a resposta significa que você não procurou o bastante, :P....
Aqui vai umas regrinhas básicas para que seu código funcione em qualquer plataforma:
  1. Não use magic_quotes, register_globals, short_tags;
  2. Não crie tabelas no MySQL com nomes em maiúsuclas;
  3. Use mysql_real_escape_string;
Não lembro de mais nada por enquanto...