Arquivos da categoria: PHP

Acompanhamento de Progresso no cURL com PHP

Utilizo com certa frequencia o cURL em meus projetos e adoro ele por conta de todas as possibilidades que ele nos dá, principalmente com o envio de cabeçalhos. Mas uma novidade para mim foi descobrir que era possível o acompanhamento de progresso no cURL com PHP.

Achei isso simplesmente fantástico! Estava com um problema em que uma aplicação não conseguia fazer o download de arquivos muito grandes, mas como saber onde era o problema? Procurando na internet toda encontrei callback do cURL para PHP que nos avisa a toda vez que um pedaço do arquivo é baixado ou subido. Continue lendo

PHP Curl Timeout e ConnectTimeout

Encontrei um problema no usando o php curl timeout . Problema relativamente leve no meu código. Utilizando o cURL para fazer o download de arquivos em um dos meus projetos me deparei com o cancelamento do download. Debugando inicialmente pensei que o arquivo que estava baixando estivesse corrompido, mas não estava, conferi todas as fontes e elas estavam perfeitas.
Segundo achei que fosse o tempo de execução do PHP, mas reparei que estava usando ele em CLI, logo não teria esse problema.
Terceiro alguma merendagem minha na configuração do cURL, esse dentre os dois primeiros tinha altas chances de ser a correta, ou a incorreta. Depende da interpretação. Esse era mesmo o problema, mas como ter certeza disso? Debugando!

Observando o código que eu tinha que está abaixo, é possível ver que ele é um código simples que qualquer tutorial de php cURL na internet te ensina a montar. Continue lendo

Problemas com a quantidade de itens no carrinho

Trabalhando junto com um cliente fizemos a atualização da versão do seu Magento da 1.7 para a 1.9. Fora um ou outro pequeno contratempo podemos dizer que a atualização correu de forma limpa. No entanto, eis que nos deparamos com um problema, que até então eu nunca tinha visto, a quantidade de itens no carrinho de nenhum produto era atualizado!

Toda a atualização correu bem e apesar de todos os testes que fizemos essa passou em branco. Acontece que desde a versão 1.8 do Magento ele trás um mecanismo de proteção contra CSRF em alguns formulários. Logo se você tem o Magento e o seu tema utiliza uma página de carrinho própria ( cart.phtml ) e você está enfrentando o mesmo problema com a quantidade de itens que não são atualizadas no carrinho você pode seguir os seguintes passos: Continue lendo

Diferenças entre aspas duplas (“) e simples (‘) no PHP

Nós desenvolvedores em geral trabalhamos muito com string usando aspas, na verdade o dia todo trabalhamos fazendo conversões, concatenação, trabalhando com strings vindas do banco de dados relacional, de um XML, de diversas fontes de dados. Na maioria das linguagens " e ' tem um comportamento similar, determinam o inicio e o fim de uma string. Resolvi então escrever esse post para não me deixar esquecer das diferenças entre aspas no PHP.

No PHP as aspas duplas (") e a aspas simples (') assim como outras linguagens também definem uma string, mas há diferenças entre elas. As strings de formadas por aspas duplas são dinâmicas, ou seja o seu conteúdo é alterado conforme o valor de uma variável dentro do contexto, caso tenha uma variável é claro. Enquanto as aspas simples são estáticas e não fornecem mecanismos para a variação do seu conteúdo mesmo que tenha uma variável definida nela. Exemplos. Continue lendo

Parte 1 – “echo print var_dump print_r”

Para inicio de conversa, vamos ao básico: "cuspir informação na tela". Nesse post serão mostrados com exemplos as principais "funções" que utilizo para a impressão de informação na tela, e qual delas podem ser úteis no debug.

echo e print

Aos apressados, rápido exemplo de utilização.

  1. <?php
  2.  
  3. echo "Olá Thiago";
  4. echo 'Olá Thiago';
  5. echo ("Olá Thiago");
  6. echo "Olá ", "Thiago";
  7. echo ("Olá", "Thiago");
  8. print "Olá Thiago";
  9. print ("Olá Thiago");
  10. //a saída para os "echos" e os print serão
  11. //Olá Thiago;
  12.  
  13. ?>

O uso do echo tem um comportamento diferenciado e requer certa atenção. O echo não é uma função do PHP e sim um construtor da linguagem. Por conta dessa característica o echo dispensa o uso de parênteses. Logo é possível usá-lo passando uma string diretamente (linhas 3, 4 e 5). Para saber mais sobre os construtores da linguagem PHP de uma olhada nesse link.

Continue lendo

adicionar_produtos_magento

Adicionar um ou multiplos produtos com apenas um link no Magento

Cria-se uma forma diante da necessidade, ou simplesmente descobre que essa forma já existe. Diferente do que há pela internet aqui eu compartilho uma forma realmente muito fácil de adicionar diversos produtos simples ao mesmo tempo via query string.

Usando o metodo ADD do próprio checkout/cart, passando os IDs do produto. Criei abaixo uma lista com quatro produtos fictícios apenas para mostrar com exemplos como a coisa funciona.

ID - 5584 - DVD UFC 2093
ID - 5506 - CD Thiago Santos Sertanejo Caipira Ao Vivo
ID - 5376 - Livro Minha Praia é o Shell
ID - 5247 - e-Book Alo alo Marcianos! Continue lendo

Workaround para o modulo do PedroTeixeira/Correios

Um amigo me relatou no dia de ontem (1/12/2012) que o retorno das informações do frete dos correios estavam retornando a mesma mensagem: Houve um erro inesperado, por favor entre em contato. Erro ao calcular o prazo, teste novamente mais tarde.(Cod. 99).

 

Mensagem de retorno dos Correios.

Continue lendo

PHP-CGI query string parameters vulnerabitily

Uma massa de emails que lotou o espaço em disco do HD de um dos servidores da empresa em qual trabalho foi o que motivou esse post. Na verdade o fim do espaço em disco me levou a encontrar um BUG no PHP-CGI 5.2.6 que levava a execução de código arbitrário a partir dos parâmetros de linha de comando. Ou seja com o comando

http://localhost/index.php?-s

Você obtém o conteúdo do código PHP. Isso é muito bizarro!

1. O que estava acontecendo?

Uma massa de emails de spam estavam sendo enviados como sendo da Fedex, identificamos esses emails e paramos o Postfix. No momento em que paramos, observamos a crescente fila de email e o decrescente espaço em disco.

Localizamos o foco da invasão, um dos sites que administramos estava com permissão na pasta e nos arquivos de usuário e grupo para o www-data. E o spammer havia criado um arquivo chamado pagenews.php e umas variações de w98089n.php (w[0-9]{1,8}n.php, mais ou menos isso).
Continue lendo

Adicionando campos customizados ao Customer no Magento

Adicionar um novo atributo(attribute) customizado(custom) para o cliente(custormer) no Magento nunca foi tão fácil, mas tenho que admitir que apanhei um pouco pra chegar nesse resultado final.

Basicamente o gostaria de fazer era adicionar um campo customizado ao customer do Magento e exibi-lo tanto no admin, quanto na página de registro e na página de informações do usuário o "Minha conta" (my account).

No exemplo que fiz aqui adicionei um campo customizado chamado CPF e o defini como obrigatório. A primeira parte desse código adiciona o atributo "cpf" ao cliente, ou seja cliente vai ter um atributo a mais. Além de nome, sobrenome ... e outras diversas informações, vai ter também o CPF.

Continue lendo