sábado, setembro 30, 2017

Formulário não envia todos os campos


Prezados,

Recentemente, enfrentamos uma questão de forma que não foi enviada com todos os campos do formulário. Deixe-me descrever a questão em detalhes.

Nosso form, ao criar um novo contato ou atualizar um antigo, as tags selecionadas não estavam sendo salvas. Isso estava funcionando antes, mas de repente essa questão surgiu. Após uma investigação aprofundada, descobrimos que nem todos os campos do formulário foram publicados ou, em outras palavras, a variável PHP $_POST não listou todos os campos. Em nossa máquina Windows, conseguimos todos os campos, mas na caixa Linux o problema existia. Primeiro pensamos que a questão poderia ter causado devido à diretiva PHP "post_max_size", embora tenha sido configurada para 24M. Nós tentamos atualizá-lo para 128M. Mas a questão ainda estava lá.

Em seguida, buscamos na internet e obtivemos uma pista de http://akrabat.com/php/missing-fields-in-_post/ . Nosso servidor estava usando o PHP 5.3.22. Então, buscamos a diretiva "max_input_vars", que era nova desde 5.3.9, foi definida como 1000 por padrão. Aumentamos o número para 2000 e a questão foi resolvida.

Devido ao número de grupos no formulário, o número do campo aumentou para mais de 1000. Então, o PHP estava truncando os dados do POST e, no máximo, 1000 campos foram retornados. É por isso que os campos de Tags não foram listados na variável $ _POST.

(traduzido e adaptado)

Texto original e link do post da resolução do problema:

http://sajjadhossain.com/2013/07/11/form-not-submitting-with-all-form-fields/


quarta-feira, setembro 06, 2017

Windows Server 2012 R2 - Lentidão no acesso à RDP

Ao utilizarmos o Windows Server 2012 R2 via área remota de trabalho (RDP), notamos uma lentidão no acesso e resposta dos comandos, mesmo desativando várias opções do cliente de acesso, a lentidão persistia.  Buscando na internet surgiu uma solução que melhorou sensivelmente o problema:

On the Windows Server 2012 machine, disable the Large Send Offload via the following steps:
a. Open Network Connections.
b. Right-click the icon of the NIC which is responsible for the connection to terminal clients and select Properties.
c. In Networking tab, click Configure… button.
d. In the next window, switch to Advanced tab.
e. Click the Large Send Offload Version 2 (IPv4) and change the value to Disabled.

Na máquina do Windows Server 2012, desative o "Deslocamento de Envio Grande" por meio das seguintes etapas:
a. Abra as conexões de rede.
b. Clique com o botão direito do mouse no ícone da NIC que é responsável pela conexão aos clientes do terminal e selecione Propriedades.
c. Na guia Rede, clique no botão Configurar.
d. Na próxima janela, mude para a guia Avançado.
e. Clique na Versão de envio grande de descarga 2 (IPv4) e altere o valor para "Desativado".

Caso encontre outra, o post será atualizado.

Segue a fonte do fórum:

https://social.technet.microsoft.com/Forums/ie/en-US/df918c8c-83e1-4900-ac68-cd20ecce3115/windows-server-2012-r2-slow-rdp?forum=winserver8setup


quinta-feira, março 30, 2017

FOREACH e LIST no PHP - Problema na instrução

Prezados,

No manual do PHP em http://php.net/manual/pt_BR/control-structures.foreach.php, há um problema na instrução quando se usa o "foreach" com "list", no exemplo descrito está:

$array = [
    [1, 2],
    [3, 4],
];

foreach ($array as list($a, $b)) {
    // $a contains the first element of the nested array,
    // and $b contains the second element.
    echo "A: $a; B: $b\n";
}

Mas há um problema na linha "foreach ($array as list($a, $b)) {" onde ocorre o problema "Notice: Undefined offset:" e o código não executa.

Buscando na internet uma solução, encontrei no fórum "https://bugs.php.net/bug.php?id=10203" a seguinte solução do usuário "torben@php.net":

$arr = array(array(1, 2), array(3, 4));
foreach ($arr as $narr) {
    list($a, $b) = array_values($narr);
    echo "$a, $b\n";
}

Dessa forma o loop funcionou como o esperado para o propósito do array.

Abraços.

quarta-feira, setembro 21, 2016

Problemas de bibliotecas usando jquery, ajax e struts em HTTPS


Prezados,

Assim como eu, quem teve problemas com as bibliotecas JQuery, Ajax etc. na chamada de links em seus scritps após inserir certificados HTTP em seu site, linhas como por exemplo:

script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.js"

Basta modificar o "http" do link para "https", assim:

script type="text/javascript" src="https://code.jquery.com/jquery-1.8.3.js"

Isso serve para todas as chamadas externas quando se começa a trabalhar com certificados no seu site (HTTPS).

Abraços.

(adaptado do fórum: http://respostas.guj.com.br/5655-problema-com-https-usando-jquery-ajax-e-struts-1)


quarta-feira, agosto 10, 2016

Problemas com campos BIGINT em arrays no CakePHP


Prezados verificamos que, ao trabalhar com campos BIGINT em arrays no CakePHP, é necessário passar o parâmetro "unsigned" para que o campo seja lido corretamente, por exemplo:

->schema()->addColumn('SEUCAMPOBIGINT', 'unsigned');

Assim tudo funciona!

Dica do amigo Danilo Dinelli.  Obrigado.

Abraços.


Problemas ao abrir planilhas com conteúdo HTML XMLNS no Excel


Prezados, hoje, após uma atualização do Excel verifiquei que os arquivos de planilhas exportados dos nossos scripts em HTML / XMLNS não abriam no Excel.  Ao "vasculhar" na internet em busca de uma solução achei uma "dica" em um site explicando que o problema é devido a uma atualização da Microsoft que bloqueou a abertura de arquivos, considerados por eles, "suspeitos".  Devido a isso a solução mais viável é dizer ao Excel que uma pasta (e suas subpastas) são "confiáveis" e assim ele abre todos os arquivos desta pasta.

Vá em Opções > Central de Confiabilidade, como na figura abaixo:



Clique "Procurar" e selecione a pasta em que os arquivos serão salvos, depois clique em "Adicionar um novo local", selecione a pasta e marque a opção "As subpastas deste local também são confiáveis":


Clique em Ok, feche todas as janelas e pronto.  O único problema é que, todos os arquivos que foram exportados em HTML com a extensão XLS devem ser salvos nesta pasta que você definiu.


Caso não prefira fazer dessa forma, existe a opção de desbloquear os arquivos individualmente, para isso clique com o botão direito do mouse sobre o arquivo > Propriedades > Na guia "Geral", marcar o botão "Desbloquear" e depois clicar em "Ok".


Lembrando que este problema surgiu de uma atualização de segurança do Microsoft Office. Até que a Microsoft disponibilize um novo patch para "corrigir" esta "mancada", estas são as melhores soluções.

Adaptado do site: https://social.technet.microsoft.com/Forums/pt-BR/2fd89045-7f5b-4c88-8e8e-d18d4efa403d/excel-no-abre-mais-contedo-html-xmlns?forum=officept

Abraços.

terça-feira, março 08, 2016

Excluir apenas alguns registros com só uma SQL


Prezados,

Mais uma vez, uma dica que ajuda demais em casos específicos como quando, por exemplo, você precisa excluir apenas alguns registros de uma tabela mas não quer executar sempre o mesmo comando trocando apenas o identificador do registro.  O comando "IN" ajuda bastante nisso, veja como aplicar.

Normalmente usaríamos:

DELETE FROM seubancodedados.suatabela WHERE campo = valordocampo1
DELETE FROM seubancodedados.suatabela WHERE campo = valordocampo2
DELETE FROM seubancodedados.suatabela WHERE campo = valordocampo3
etc.

Aplicando o "IN" temos:

DELETE FROM seubancodedados.suatabela WHERE campo IN (valordocampo1, valordocampo2, valordocampo3)

Dessa forma com apenas um com comando você exclui somente os registros que tenham os identificadores valordocampo1, valordocampo2 etc. isso sem apagar toda a tabela.  Ele funciona em qualquer comando/sintaxe onde você tenha que comparar se o valor a ser modificado é igual ao que você precisa modificar.

Abraços.