<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PHP Archives - Pereira, Thiago Santos.</title>
	<atom:link href="https://thiagosantos.com/blog/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>https://thiagosantos.com/blog/category/php/</link>
	<description>the fun of code.</description>
	<lastBuildDate>Sun, 12 May 2019 22:16:24 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5</generator>
	<item>
		<title>WordPress &#8211; Perdendo Qualidade de Imagem e Deixando as Opacas</title>
		<link>https://thiagosantos.com/blog/697/php/wordpress-perdendo-qualidade-de-imagem-e-deixando-as-opacas/</link>
					<comments>https://thiagosantos.com/blog/697/php/wordpress-perdendo-qualidade-de-imagem-e-deixando-as-opacas/#respond</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Thu, 09 May 2019 13:30:13 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[image loosing quality]]></category>
		<category><![CDATA[imagens perdendo qualidade]]></category>
		<category><![CDATA[loosing quality]]></category>
		<category><![CDATA[opaque]]></category>
		<guid isPermaLink="false">https://thiagosantos.com/blog/?p=697</guid>

					<description><![CDATA[<p>Se você é apressado: instale o modulo &#8220;imagick&#8221; do PHPNo Ubuntu/Debian: apt install imagick-php7.2PECL : pecl install imagick O WordPress tem uma classe abstrata chamada WP_Image_Editor. Há duas outras classes que a estendem chamadas WP_Image_Editor_GD e WP_Image_Editor_Imagick. Para que nós não tenhamos que criar uma função para escolher entre as classes há uma no core [&#8230;]</p>
<p>The post <a href="https://thiagosantos.com/blog/697/php/wordpress-perdendo-qualidade-de-imagem-e-deixando-as-opacas/">WordPress &#8211; Perdendo Qualidade de Imagem e Deixando as Opacas</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Se você é apressado: instale o modulo &#8220;imagick&#8221; do PHP<br>No Ubuntu/Debian: apt install imagick-php7.2<br>PECL : pecl install imagick</p>



<p>O WordPress tem uma classe abstrata chamada WP_Image_Editor. Há duas outras classes que a estendem chamadas  WP_Image_Editor_GD e WP_Image_Editor_Imagick.  Para que nós não tenhamos que criar uma função para escolher entre as classes há uma no core do WP chamada wp_get_image_editor(), que automáticamente escolhe uma das duas classes disponíveis.</p>



<span id="more-697"></span>



<p>Mas como exatamente o WordPress escolhe? Existe hierarquia?</p>



<p>Há uma segunda função chamada  _wp_image_editor_choose() que faz o trabalho de escolher entre as duas classes disponíveis e nos retorna a que podemos usar. A escolha é simples, conforme a imagem, o código escolhe a que estiver disponível dando prioridade para a WP_Image_Editor_Imagick. No entanto, no meu caso eu não tinha o modulo do imagick habilitado por isso o WordPress estava usando a WP_Image_Editor_GD o que estava me fazendo perder qualidade na imagem e as deixando sem vida. Essa é a primeira vez que tenho esse tipo de problema com a biblioteca GD, vale até dar uma estudada a fundo.</p>



<p>Entenda, que toda imagem enviada para o WordPress é comprimida com excessão da imagem original. Logo, todas as variações das imagens que você usa no seu código é manipulada usando uma das classes disponíveis. Recomendo por tanto usar a classe do modulo imagick quando você trabalhar com imagens de agências, em sites de notícias, blogs onde a qualidade da foto precisa ser boa!<br></p>
<p>The post <a href="https://thiagosantos.com/blog/697/php/wordpress-perdendo-qualidade-de-imagem-e-deixando-as-opacas/">WordPress &#8211; Perdendo Qualidade de Imagem e Deixando as Opacas</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/697/php/wordpress-perdendo-qualidade-de-imagem-e-deixando-as-opacas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Magento 2 &#8211; alterar a quantidade mínima de caracteres da senha</title>
		<link>https://thiagosantos.com/blog/666/ecommerce/magento/magento-2-alterar-a-quantidade-minima-de-caracteres-da-senha/</link>
					<comments>https://thiagosantos.com/blog/666/ecommerce/magento/magento-2-alterar-a-quantidade-minima-de-caracteres-da-senha/#comments</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Sun, 25 Mar 2018 02:03:51 +0000</pubDate>
				<category><![CDATA[Ecommerce]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">http://thiagosantos.com/blog/?p=666</guid>

					<description><![CDATA[<p>Introdução Em um post anterior montei um passo a passo de como alterar a complexidade da regra de validação da senha dos usuários no Magento 2. Para complementar aquele, estou postando esse em que eu faço um passo a passo de como alterar a quantidade mínima de caracteres da senha. Administrador Já logado no admin [&#8230;]</p>
<p>The post <a href="https://thiagosantos.com/blog/666/ecommerce/magento/magento-2-alterar-a-quantidade-minima-de-caracteres-da-senha/">Magento 2 &#8211; alterar a quantidade mínima de caracteres da senha</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introdução</h2>
<p>Em um post anterior montei um passo a passo de como <a href="http://thiagosantos.com/blog/656/ecommerce/magento/magento-2-alterando-a-complexidade-da-regra-de-validacao-da-senha/">alterar a complexidade da regra de validação da senha</a> dos usuários no Magento 2. Para complementar aquele, estou postando esse em que eu faço um passo a passo de como alterar a quantidade mínima de caracteres da senha.<span id="more-666"></span></p>
<h2>Administrador</h2>
<p>Já logado no admin do Magento 2, vá em <strong>Store -&gt; Configuration</strong>, depois acesse no menu lateral <strong>Customers &#8211; &gt; Customer Configuration</strong> e depois em <strong>Password Options</strong></p>
<p><figure id="attachment_667" aria-describedby="caption-attachment-667" style="width: 909px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" class="size-full wp-image-667" src="http://thiagosantos.com/blog/wp-content/uploads//2018/03/Screen-Shot-2018-03-24-at-21.05.40.png" alt="Alterar a quantidade minima de caracteres" width="909" height="97" srcset="https://thiagosantos.com/blog/wp-content/uploads/2018/03/Screen-Shot-2018-03-24-at-21.05.40.png 909w, https://thiagosantos.com/blog/wp-content/uploads/2018/03/Screen-Shot-2018-03-24-at-21.05.40-300x32.png 300w, https://thiagosantos.com/blog/wp-content/uploads/2018/03/Screen-Shot-2018-03-24-at-21.05.40-768x82.png 768w, https://thiagosantos.com/blog/wp-content/uploads/2018/03/Screen-Shot-2018-03-24-at-21.05.40-624x67.png 624w" sizes="(max-width: 909px) 100vw, 909px" /><figcaption id="caption-attachment-667" class="wp-caption-text">Campo para alterar a quantidade minima de caracteres para o usuário do magento</figcaption></figure></p>
<p>Por padrão o Magento define como 8 caracteres a quantidade minima de uma senha, esse valor pode ser alterado para mais ou para menos. Faço a recomendação para que caso seja para menos de 8 caracteres tenha no mínimo <a href="http://thiagosantos.com/blog/656/ecommerce/magento/magento-2-alterando-a-complexidade-da-regra-de-validacao-da-senha/">duas classes de caracteres</a> como obrigatório para a senha.</p>
<h2>Senhas</h2>
<p>Quanto mais fáceis permitimos que a senha seja menos forte a senha será digitada pelo usuário. Temos uma ligação direta com a proteção dos dados dos usuário. Precisamos ter em mente que há uma real necessidade de manter os usuários salvos deles mesmos. Por isso válido a necessidade de uma senha com no mínimo de duas classes de caracteres e com 8 dígitos.</p>
<p>The post <a href="https://thiagosantos.com/blog/666/ecommerce/magento/magento-2-alterar-a-quantidade-minima-de-caracteres-da-senha/">Magento 2 &#8211; alterar a quantidade mínima de caracteres da senha</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/666/ecommerce/magento/magento-2-alterar-a-quantidade-minima-de-caracteres-da-senha/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Removendo os emojis do header do WordPress</title>
		<link>https://thiagosantos.com/blog/644/php/removendo-os-emojis-do-header-do-wordpress/</link>
					<comments>https://thiagosantos.com/blog/644/php/removendo-os-emojis-do-header-do-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Wed, 25 Oct 2017 00:01:23 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">http://thiagosantos.com/blog/?p=644</guid>

					<description><![CDATA[<p>Remove de forma fácil o script do emoji no Wordpress, adicione os códigos abaixo no seu functions.php</p>
<p>The post <a href="https://thiagosantos.com/blog/644/php/removendo-os-emojis-do-header-do-wordpress/">Removendo os emojis do header do WordPress</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Volta e meia montando um tema nos deparamos com algumas tags que o WordPress põe como padrão como o emojis e o embed (sim é possível remover isso também).</p>
<p>Essas tags deixam visualmente um tema básico ou baseado nos temas do WordPress elegante e visualmente iinteressante. Mas são desnecessários quando você está montando um tema já com o html pronto! Então segue abaixo um conjunto de comando de remove_actions para tirar esses carinhas do header do seu tema.</p>
<p><span id="more-644"></span></p>
<pre lang="php">
remove_action( 'wp_head', 'print_emoji_detection_script', 7 ); 
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' ); 
remove_action( 'wp_print_styles', 'print_emoji_styles' ); 
remove_action( 'admin_print_styles', 'print_emoji_styles' );
</pre>
<p>Tendo alguma dúvida pode comentar ai que eu respondo!</p>
<p>The post <a href="https://thiagosantos.com/blog/644/php/removendo-os-emojis-do-header-do-wordpress/">Removendo os emojis do header do WordPress</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/644/php/removendo-os-emojis-do-header-do-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Acompanhamento de Progresso no cURL com PHP</title>
		<link>https://thiagosantos.com/blog/627/php/acompanhamento-de-progresso-no-curl-com-php/</link>
					<comments>https://thiagosantos.com/blog/627/php/acompanhamento-de-progresso-no-curl-com-php/#comments</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Fri, 19 Jun 2015 21:21:30 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">http://thiagosantos.com/blog/?p=627</guid>

					<description><![CDATA[<p>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 [&#8230;]</p>
<p>The post <a href="https://thiagosantos.com/blog/627/php/acompanhamento-de-progresso-no-curl-com-php/">Acompanhamento de Progresso no cURL com PHP</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>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.</p>
<p>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.<span id="more-627"></span></p>
<p>Vamos ao código, primeiro o callback</p>
<pre lang="php">&lt;?php 

function curl_progress($resource,$download_size, $downloaded, $upload_size, $uploaded) {     if($download_size &gt; 0)
         print ("Progresso download: ".($downloaded / $download_size  * 100));
    if($upload_size&gt; 0)
         print ("Progresso Upload: ".($uploaded/ $upload_size * 100));
}

</pre>
<p>Agora a nossa implementação do cURL</p>
<p>&nbsp;</p>
<pre lang="php">&lt;?php 

 $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Expect:' ) );
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERAGENT, "Arktre::odiopuro");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, 'curl_progress');
    curl_setopt($ch, CURLOPT_NOPROGRESS, false); // necessário para fazer o progresso funcionar
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    $response = curl_exec($ch);

</pre>
<p>O resultado é essa saída bonita!</p>
<pre>Progresso: 0.6532900454675
Progresso: 2.5532900454675
Progresso: 2.5532900454675
Progresso: 2.5532900454675
[...]
Progresso: 76.914346406643
Progresso: 77.548795145797
Progresso: 100
</pre>
<p>Rápido de resolver!</p>
<p>http://php.net/manual/en/function.curl-setopt.php<br />
https://gist.github.com/bdunogier/1030450<br />
http://stackoverflow.com/questions/13958303/curl-download-progress-in-php</p>
<p>The post <a href="https://thiagosantos.com/blog/627/php/acompanhamento-de-progresso-no-curl-com-php/">Acompanhamento de Progresso no cURL com PHP</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/627/php/acompanhamento-de-progresso-no-curl-com-php/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>PHP Curl Timeout e ConnectTimeout</title>
		<link>https://thiagosantos.com/blog/623/php/php-curl-timeout-e-connecttimeout/</link>
					<comments>https://thiagosantos.com/blog/623/php/php-curl-timeout-e-connecttimeout/#comments</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Fri, 19 Jun 2015 21:03:07 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">http://thiagosantos.com/blog/?p=623</guid>

					<description><![CDATA[<p>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 [&#8230;]</p>
<p>The post <a href="https://thiagosantos.com/blog/623/php/php-curl-timeout-e-connecttimeout/">PHP Curl Timeout e ConnectTimeout</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>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.<br />
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.<br />
Terceiro alguma <em>merendagem</em> 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!</p>
<p>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.<span id="more-623"></span></p>
<pre lang="php">&lt;?php
$url = "http://example.com/arquivo_grandao.zip";

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Expect:' ) );
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "Arktre::odiopuro");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
</pre>
<p>&nbsp;</p>
<p>Como ter certeza agora que o problema era mesmo do cURL? Simples! <a href="http://thiagosantos.com/blog/627/php/acompanhamento-de-progresso-no-curl-com-php/">Analisando o progresso do download, explico como fazer isso nesse post.</a> Logo como saída eu tinha porcentagens de progresso variadas entre 40% e 80%, mas nunca 100%.</p>
<p>&nbsp;</p>
<pre>Progresso: 0.6532900454675
Progresso: 2.5532900454675
Progresso: 2.5532900454675
Progresso: 2.5532900454675
[...]
Progresso: 76.914346406643
Progresso: 77.548795145797
Progresso: 78.755615489735
</pre>
<p>Depois disso ficou fácil entender que o próprio cURL estava interrompendo o download do arquivo. O cURL tem dois parâmetros importantes de timeout o CURLOPT_CONNECTTIMEOUT e o CURLOPT_TIMEOUT, o primeiro especifica o tempo máximo que o cURL pode levar para conectar a outra ponta, e o segundo o tempo máximo de execução do cURL. Meu problema estava nesse segundo parâmetro. Como o arquivo baixado era muito grande e a minha banda não tão larga, o cURL precisava de mais tempo para baixar o arquivo completo.</p>
<pre lang="php">&lt;?php
$url = "http://example.com/arquivo_grandao.zip";

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Expect:' ) );
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "Arktre::odiopuro");
<strong>curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0);
curl_setopt($ch, CURLOPT_TIMEOUT, 900);</strong>
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
</pre>
<p>&nbsp;</p>
<p>Depois disso o progresso funcionou normalmente, indo até o 100. Simples de resolver!</p>
<p>&nbsp;</p>
<p>The post <a href="https://thiagosantos.com/blog/623/php/php-curl-timeout-e-connecttimeout/">PHP Curl Timeout e ConnectTimeout</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/623/php/php-curl-timeout-e-connecttimeout/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Problemas com a quantidade de itens no carrinho</title>
		<link>https://thiagosantos.com/blog/593/php/problemas-com-a-quantidade-de-itens-carrinho/</link>
					<comments>https://thiagosantos.com/blog/593/php/problemas-com-a-quantidade-de-itens-carrinho/#comments</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Fri, 05 Sep 2014 19:35:21 +0000</pubDate>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[carrinho não atualizando]]></category>
		<category><![CDATA[magento não atualizando]]></category>
		<category><![CDATA[problema]]></category>
		<category><![CDATA[quantidade de produtos]]></category>
		<guid isPermaLink="false">http://thiagosantos.com/blog/?p=593</guid>

					<description><![CDATA[<p>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 [&#8230;]</p>
<p>The post <a href="https://thiagosantos.com/blog/593/php/problemas-com-a-quantidade-de-itens-carrinho/">Problemas com a quantidade de itens no carrinho</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>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!</p>
<p>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 <a title="CSRF" href="http://en.wikipedia.org/wiki/Cross-site_request_forgery" target="_blank">CSRF</a> 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:<span id="more-593"></span></p>
<p>Abra o arquivo &#8220;cart.phtml&#8221; referente ao tema que você está usando no seu site atualmente. Procure pela linha abaixo</p>
<pre class="wp-code-highlight prettyprint prettyprinted" lang="php" style="font-size: 12px; font-family: monospace, serif;"><span class="pln" style="color: #000000;">&lt;form action="</span><span class="pun" style="color: #666600;">&lt;?</span><span class="pln" style="color: #000000;">php echo $this</span><span class="pun" style="color: #666600;">-&gt;</span><span class="pln" style="color: #000000;">getUrl</span><span class="pun" style="color: #666600;">(</span><span class="str" style="color: #008800;">'checkout/cart/updatePost'</span><span class="pun" style="color: #666600;">)</span> <span class="pun" style="color: #666600;">?&gt;</span><span class="pln" style="color: #000000;">" method="post"&gt;

</span></pre>
<p>Logo abaixo você insere o seguinte trecho de código:</p>
<pre class="wp-code-highlight prettyprint prettyprinted" lang="php" style="font-size: 12px; font-family: monospace, serif;"><span class="pun" style="color: #666600;">&lt;?</span><span class="pln" style="color: #000000;">php echo $this</span><span class="pun" style="color: #666600;">-&gt;</span><span class="pln" style="color: #000000;">getBlockHtml</span><span class="pun" style="color: #666600;">(</span><span class="str" style="color: #008800;">'formkey'</span><span class="pun" style="color: #666600;">);</span> <span class="pun" style="color: #666600;">?&gt;</span></pre>
<p>Ficando assim:</p>
<pre class="wp-code-highlight prettyprint prettyprinted" lang="php" style="font-size: 12px; font-family: monospace, serif;"><span class="pln" style="color: #000000;">&lt;form action="</span><span class="pun" style="color: #666600;">&lt;?</span><span class="pln" style="color: #000000;">php echo $this</span><span class="pun" style="color: #666600;">-&gt;</span><span class="pln" style="color: #000000;">getUrl</span><span class="pun" style="color: #666600;">(</span><span class="str" style="color: #008800;">'checkout/cart/updatePost'</span><span class="pun" style="color: #666600;">)</span> <span class="pun" style="color: #666600;">?&gt;</span><span class="pln" style="color: #000000;">" method="post"&gt;
&lt;?php echo $this-&gt;getBlockHtml('formkey');?&gt;</span></pre>
<p>Simples assim!<br />
Testa ai e veja se a quantidade de itens no carrinho mudou!</p>
<p>obs: façam um backup prévio</p>
<p>Referencias:<br />
http://stackoverflow.com/questions/20915093/magento-quantity-in-checkout-shopping-cart-dont-work-properly<br />
https://github.com/nexcess/magento-turpentine/blob/master/TECHINCAL_NOTES.md</p>
<p>The post <a href="https://thiagosantos.com/blog/593/php/problemas-com-a-quantidade-de-itens-carrinho/">Problemas com a quantidade de itens no carrinho</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/593/php/problemas-com-a-quantidade-de-itens-carrinho/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Diferenças entre aspas duplas (&#8220;) e simples (&#8216;) no PHP</title>
		<link>https://thiagosantos.com/blog/573/php/diferencas-entre-aspas-duplas-e-simples-no-php/</link>
					<comments>https://thiagosantos.com/blog/573/php/diferencas-entre-aspas-duplas-e-simples-no-php/#comments</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Mon, 11 Aug 2014 17:29:29 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[' e "]]></category>
		<category><![CDATA[\" e \' no PHP]]></category>
		<category><![CDATA[diferencas]]></category>
		<category><![CDATA[e aspas simples]]></category>
		<category><![CDATA[entre aspas duplas]]></category>
		<guid isPermaLink="false">http://thiagosantos.com/blog/?p=573</guid>

					<description><![CDATA[<p>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 &#8221; e &#8216; tem um comportamento similar, determinam o inicio e o fim de uma [&#8230;]</p>
<p>The post <a href="https://thiagosantos.com/blog/573/php/diferencas-entre-aspas-duplas-e-simples-no-php/">Diferenças entre aspas duplas (&#8220;) e simples (&#8216;) no PHP</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>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 &#8221; e &#8216; 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.</p>
<p>No PHP as aspas duplas (&#8220;) e a aspas simples (&#8216;) 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.<span id="more-573"></span></p>
<pre lang="php">&lt;?php

$nome = "Thiago";
$sobrenome = "Santos";

echo "Meu nome é $nome $sobrenome";

/**
* A saída será
* Meu nome é Thiago Santos;
*/

echo 'Meu nome é $nome $sobrenome';
/**
* A saída será
* Meu nome é $nome $sobrenome
*/

?&gt;
</pre>
<p>Conseguimos ver claramente a diferença entre as duas formas. Logo se houver dúvida de quando usar uma forma ou usar a outra forma tenha em mente que as aspas duplas é dinâmica e interpretativa enquanto as aspas simples são estáticas. Assim caso você queira incluir na sua string um valor variável ou um dos carácteres (\n,\r,\t,\r\n) utilize as aspas duplas, caso contrário use as aspas simples.</p>
<p>&nbsp;</p>
<pre lang="php">&lt;?php

$nome = "Thiago";
$sobrenome = "Santos";

echo "Meu nome é $nome\n$sobrenome";

/**
* A saída será
* Meu nome é Thiago 
* Santos;
*/

echo 'Meu nome é $nome\n$sobrenome';
/**
* A saída será
* Meu nome é $nome\n$sobrenome
*/

?&gt;
</pre>
<p>Simples né? Então vamos ficar atentos e praticar!</p>
<p>Referencias:<br />
<a href="http://www.un-programmeur-php.ca/articles/chaine.php">http://www.un-programmeur-php.ca/articles/chaine.php</a></p>
<p>The post <a href="https://thiagosantos.com/blog/573/php/diferencas-entre-aspas-duplas-e-simples-no-php/">Diferenças entre aspas duplas (&#8220;) e simples (&#8216;) no PHP</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/573/php/diferencas-entre-aspas-duplas-e-simples-no-php/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Parte 1 &#8211; &#8220;echo print var_dump print_r&#8221;</title>
		<link>https://thiagosantos.com/blog/521/php/1-echo-print-var_dump-print_r/</link>
					<comments>https://thiagosantos.com/blog/521/php/1-echo-print-var_dump-print_r/#comments</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Wed, 16 Oct 2013 18:45:40 +0000</pubDate>
				<category><![CDATA[Iniciantes]]></category>
		<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">http://thiagosantos.com/blog/?p=521</guid>

					<description><![CDATA[<p>Para inicio de conversa, vamos ao básico: &#8220;cuspir informação na tela&#8221;. Nesse post serão mostrados com exemplos as principais &#8220;funções&#8221; 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. &#60;?php echo "Olá Thiago"; echo 'Olá Thiago'; echo ("Olá [&#8230;]</p>
<p>The post <a href="https://thiagosantos.com/blog/521/php/1-echo-print-var_dump-print_r/">Parte 1 &#8211; &#8220;echo print var_dump print_r&#8221;</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span style="line-height: 1.714285714; font-size: 1rem;">Para inicio de conversa, vamos ao básico: &#8220;cuspir informação na tela&#8221;. Nesse post serão mostrados com exemplos as principais &#8220;funções&#8221; que utilizo para a impressão de informação na tela, e qual delas podem ser úteis no debug.</span></p>
<p><a name="echo"></a><span style="color: #3366ff;"><strong>echo e print</strong></span></p>
<p>Aos apressados, rápido exemplo de utilização.</p>
<pre lang="php">&lt;?php

echo "Olá Thiago";
echo 'Olá Thiago';
echo ("Olá Thiago");
echo "Olá ", "Thiago";
echo ("Olá", "Thiago");
print "Olá Thiago";
print ("Olá Thiago");
//a saída para os "echos" e os print serão
//Olá Thiago;

?&gt;</pre>
<blockquote><p><span style="color: #339966;">O uso do <span style="text-decoration: underline;"><em>echo</em></span> 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 <span style="text-decoration: underline;"><em>echo</em></span> 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 <a title="Lista de palavras reservadas no PHP" href="http://php.net/manual/pt_BR/reserved.keywords.php">nesse link</a>.</span></p>
<p><span style="color: #339966;"><span id="more-521"></span></span></p></blockquote>
<p>A utilização do echo pode ser feita em qualquer parte do código em um arquivo PHP, não adianta que não vai funcionar em arquivos com a extensão diferente da <em>.php</em> a não ser é claro que estejam essas extensões configuradas para serem interpretadas pelo PHP.</p>
<pre lang="php">&lt;html&gt;
&lt;head&gt;
&lt;title&gt;&lt;?php echo "Titulo da página";?&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Meu site em PHP&lt;/h1&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p><span style="color: #3366ff;"><strong> var_dump e print_r</strong></span></p>
<p>Eu utilizo muito essas duas duas funções para debugar variáveis. Não as utilizo para um impressão de um conteúdo normal como eu fária com o <em>echo</em> ou <em>print</em>. Normalmente utilizo o <em>var_dump</em> para a impressão do conteúdo de variáveis quando eu preciso saber o tipo do valor (se é inteiro, string, float &#8230; ) e o <em>print_r</em> quando eu só preciso ver o analisar o conteúdo.</p>
<p>Exemplos com variáveis simples.</p>
<pre lang="php">&lt;?php

$nome = "Thiago";
$idade = 26;

// utilizando o print_r

print_r($nome);
print_r($idade);
/** a saída aqui será:
 *  Thiago
 *  26
 */

// usando o var_dump

var_dump($nome);
var_dump($idade);

/**
 * A saída aqui será
 * string(6) "Thiago"
 * int(26)
 */

?&gt;</pre>
<p>Exemplos com variáveis complexas.</p>
<pre lang="php">&lt;?php
$obj = new StdClass();
$obj-&gt;nome = "Thiago";
$obj-&gt;obj = new StdClass();
$obj-&gt;obj-&gt;idade = 26;

var_dump($obj);

/**
 * a sua saída será: 

 * object(stdClass)#1 (2) {
 *   ["nome"]=&gt;
 *   string(6) "Thiago"
 *   ["obj"]=&gt;
 *   object(stdClass)#2 (1) {
 *     ["idade"]=&gt;
 *     int(26) 
 *  }
 * }
**/

print_r($obj);

/**
 * a sua saída será:

 * stdClass Object
 * (
 *    [nome] =&gt; Thiago
 *    [obj] =&gt; stdClass Object
 *        (
 *            [idade] =&gt; 26
 *        )
 *
 * )
*/
?&gt;</pre>
<p>Fica visível a diferença entre as duas chamadas. O <em>var_dump</em> é muito mais rico em detalhe que o <em>print_r</em> que em compensação é muito mais fácil de ler e entender. A utilização dos dois vai variar do seu objetivo ao &#8220;cuspir&#8221; o conteúdo de uma variável. Se o seu objetivo é ver o que tem dentro rápido pode usar o <em>print_r</em> se o objeto é ver exatamente o que tem e qual o tipo de dados armazenados na variável então a melhor opção é o <em>var_dump</em>.</p>
<p>&nbsp;</p>
<p><span style="color: #3366ff;"><strong>Exercicios</strong></span></p>
<p>Corrija os códigos abaixo:<br />
Teste linha a linha numerando as com erro e sugerindo a correção na parte de comentário ai embaixo.</p>
<p>&nbsp;</p>
<pre lang="php">&lt;?php

print ("Olá ", "Thiago");
echo "Thiago";
var_dump(echo "Thiago");
print_r("Thiago");
var_dump(26);

?&gt;</pre>
<p>&nbsp;</p>
<p>The post <a href="https://thiagosantos.com/blog/521/php/1-echo-print-var_dump-print_r/">Parte 1 &#8211; &#8220;echo print var_dump print_r&#8221;</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/521/php/1-echo-print-var_dump-print_r/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
