Adicionem o novo domínio do blog aos seus favoritos! www.crashcomputer.com.br

Postagens com a tag ‘PHP’

   sexta-feira, 8 de julho de 2011

Coisas do tempo sobrando.



1 Star2 Stars3 Stars4 Stars5 Stars (Nenhum voto, seja o primeiro!)
Loading...

Com o tempo sobrando, resolvi criar um plugin para o WordPress, mas o problema e que eu estou apanhando igual a vaca na horta, pra descobrir um hook que me permita inserir meu plugin no formulário do editor de post.

Já li o FAQ de cabo a rabo, li a lista de hooks, testei vários deles, mas nenhum consegue inserir onde eu quero.

A função esta correta, pois usei para testar, o hook que insere no cabeçalho da pagina administrativa, e funcionou perfeitamente.

Logo, o problema e achar um hook (talvez não documentado) que insira onde eu quero, logo abaixo do campo de titulo do post e logo acima do link permanente, na tela de criação/edição do post.

Botei um post no forum do WordPress, vamos ver se alguém me ajuda. Alguém que passa por aqui, tem experiencia com plugins pro WordPress?

Mas não podeira de deixar de descer a boca no fórum do WordPress também… Tentei me registrar e diz que o nome de usuário que eu quero, já existe, ok… posso não ser o único, bora pra outro nome, dai descubro que o e-mail que eu costumo usar já esta registrado, tento um segundo e-mail e novamente, diz que também esta registrado.

Cazzo! Mas aquela bodega não permite que você recupere pelo e-mail, somente pelo username. Santa estupidez Batman! No caso um golpe baixo… apelei para o 10 minute mail e foda-se. Depois eu boto um admin da parede pra ver quais os username que estão associados aos meus dois e-mails.



   domingo, 21 de fevereiro de 2010

Linux Lixux



1 Star2 Stars3 Stars4 Stars5 Stars (Nenhum voto, seja o primeiro!)
Loading...

Quando eu meto o pau em linux, digo que é uma bosta, um lixo, os mais xiitas querem me pegar de pau. Mas veja a historinha de hoje.

Catei um exemplo simplérrimo de uma enquete que grava os dados em arquivo texto, toda feita em PHP. Coisinha simples, baba de usar.

Mexi daqui e dali, e integrei ela em um site meu. Fiz todos os testes no servidor local aqui (apache em cima do windows 2000 e php5). Tudo funcionou perfeitamente, uma maravilha.

O mexe-mexe foi basicamente formatação da parte html e css, ou seja não mexi em nada no engine, exceto fato de mover os “bancos de dados txt” pra um diretório, obviamente modifiquei o path no script e tudo joia. 1000 maravilhas aqui no servidor windows.

Dai subi o arquivo pro servidor web que ronda em…. linux lixux. Adivinha o resultado?

Contei exatamente TRÊS QUATRO erros cabeludos.

– Alerta de divisão por zero quando a enquete esta com zero votos.
– Não consegue gravar nem a poder de macumba nos arquivos, mesmo dando chmod 666, e tudo se passa lindamente como se tivesse gravado e não dá um erro se quer.
– Dá um alerta pra lá de bizarro na função FREAD.
– Consegui criar 6 arquivos com caracteres proibidos no nome, tal como “enquete\data.txt” que não é apagado por nenhum cliente FTP, pois dá erro 550, prohibited file name. (Edit 21/01/2010: Consegui apagar, a dica esta aqui: http://www.crashcomputer.caetano.eng.br/?p=1290)

Não é lindo?

O que tive que “desmanchar”:

– O alerta de erro de divisão, resolvi da forma tosca… todas enquetes sempre irão sair com um voto… o meu. Dai não dá o erro.
– E não gravou nem a pau, pedrada e o cacete que for no diretório /enquete. Tive que mover os arquivos txt pra RAIS do servidor e remover o caminho para o diretório. Dai gravou…
– O erro da função FREAD, em um fórum alguém deu duas dicas: Não deixar nenhum dos dois arquivos vazios (quando criar a enquete) e colocar uma @ antes da função FREAD

Tempo gasto na operação “fazer o que roda bem no servidor windows, rodar meia boca no servidor linux, entre um milhão de googleadas”: 3 horas.

Tempo que gastei (antes) pra modificar a enquete: 40 minutos.

É pra matar ou não?

Depois disso eu continuo dizendo… linux é um merda… viva o Windows com todos os seus bugs e defeitos, mas esse qualquer um com um minimo de conhecimentos conserta ou remenda.



   quinta-feira, 28 de agosto de 2008

O Bug que não é bug… É feature!



1 Star2 Stars3 Stars4 Stars5 Stars (Nenhum voto, seja o primeiro!)
Loading...

Ontem logo apos fazer o post ai abaixo, fui atrás de algumas explicações sobre o $header da função mail() e acabei descobrindo algo que até então eu não sabia: SQL Injection

Trata-se de uma falha de segurança que permite injetar código malicioso para fins nada amigáveis, por exemplo na função mail().

Nisso andando pra lá e pra cá no Google eu acabo por cair em uma pagina no phpwiki que explica formas de se proteger do SQL Injection e uma delas (até um tanto controversa) é o uso do magic quotes.

Pra variar a página estava fora do ar (ou é xilique de dns) mas nada que recorrendo ao wayback machine não resolva:

http://web.archive.org/web/20080204231757/http://www.securephpwiki.com/index.php/Email_Injection

Dai lendo sobre o magic quotes (não me lembro a página), me deparo com o trecho abaixo:

The magic_quotes_gpc PHP configuration directive affects Get, Post and Cookie values. If turned on, value (It’s “PHP!”) will automagically become (It\’s \”PHP!\”).

E claro, o Jannone já cantou a bola no comentário. É o recurso dúbio do “magic quote” que esta ativado no servidor linux.

E o pior que nem é culpa do administrador, pois o magic quote sai habilitado por padrão na instalação do PHP4, e não é habilitado no PHP5 (o que eu estou usando aqui localmente).

E como já no servidor linux esta instalado o PHP4… bummmmm….

Assim sendo, até que o meu remendo não é dos piores e nem o mais dos feios, pois ele é transparente no caso de rodar aqui localmente no PHP5 e faz sua função lá no servidor onde tem PHP4.



   quarta-feira, 27 de agosto de 2008

Gambiarra, "Recurso técnico" ou o que seja.



1 Star2 Stars3 Stars4 Stars5 Stars (Nenhum voto, seja o primeiro!)
Loading...

Em minhas aventuras como gambiar…. erhhh… programador em php, como todo bom iniciante, as vezes apanho por bobeira, mas nada que uma consultinha no Google ou em um dos zilhões de fóruns sobre php não conserte depois de bater testa uns 15 minutos no monitor.

Mas ontem aconteceu uma que me deixou atordoado. Estava do lado de cá montando um script pra cuspir um e-mail multpart, formatado em texto plano e html. No meio do meu código (o html gerado pelo script para o e-mail) tem uma linha que deve ser carregado com valores passados por variaveis vindas do script php que monta a página web. Até ai, nada de novo… nada que $_SESSION[cesta][$indice][ITEM] não insira o valor no html gerado para o e-mail.

Tudo vai muito bem na parte txt… Mas na hora de gerar o html começa o martírio com as aspas.

E pra atribuir uma string (valores não numéricos) a uma variável, é necessário que o dado esteja delimitado por aspas, desse jeito: $v_iten .= “blábláblá”;

Legal, logo se for atribuir tags html é preciso dizer ao interpretador php que a próxima aspa (que no caso pertence a uma tag html) não é a que fecha a delimitação da string… OU usar aspas simples ( ‘ ) ao invés da aspas dupla ( ” ).

Sabido o que eu queria agora vamos ao pepino em si. De cara eu fui pelo método mais simples, o que gera menos texto pra escrever, usei tudo aspas simples nas tags html.

No servidor local, que esta instalado em meu pc (web developer suite, ou seja php5 + apache for windows) tudo funcionou redondamente, como deveria ser. O código cuspido no e-mail era assim: <tr><td class=’grid’ height=’26’ width=…

Maaaaassss… murphy esta de plantão e é claro que DEU pau na hora que eu subi pro servidor, que roda em linux (não me pergunte a versão do php que esta por lá deve ser 4.alguam coisa).

Explicando um pouco mais, a tripa de tags html são geradas em $v_iten que na verdade é um array. E este é passado ao script que gera o e-mail através de um field hidden no código e envia via post.

Do outro lado a variável é recebida do post e copiada para $v_iten novamente.

Porém no servidor linux ela chegava assim: <tr><td class=\’grid\’ height=\’26\’ width=…

Não me pergunte porque o php que esta rodando lá no servidor, inventou de inserir \ (backslach) nas aspas simples, talvez querendo dizer… a próxima aspas é pra imprimir e não é código, tal como se faz com a aspas duplas, quando ela é imprimivel e não é delimitadora: \”

Dai vou eu tentar o plano B nas tags html… ao invés de aspas simples, vamos usar \” que deve funcionar.

Aha… não funcionou! Não sei porque, ai tanto faz no meu servidor local quanto no web, o php se perdia nas aspas e misturava o código html presente na variável, no código da pagina, fazendo um rebú danado.

Não teve o que eu fizesse que resolveu. A solução (porca mas digamos… “bem sacada”) que acabei utilizando foi… fazer search & replace na variável depois de passada pelo post, a procura dos \ e substituir por… nada…

Resumindo (inclusive com o comentário, que ficou engraçado):

//GAMBIAR... OPS! RECURSO TÉCNICO PRA CONSERTAR O BUG QUE ACONTECE NO PHP DO SERVER LINUX...
$v_itens = str_replace("\\", "", $v_iten);

É feio? É porco? É… mas funcionou. Quando eu tiver tempo e cabeça ou vou atrás de entender o que esta acontecendo e como resolver da forma correta, mas por enquanto dessa forma esta funcionando eheheh



  Melhor visualizado a
1024 x 768 True color
Proudly powered by WordPress. Theme developed with WordPress Theme Generator.
E altamente gambiarrado por mim mesmo :)
Copyright © 2010 by Crash Computer. All rights reserved.