rubensk Postado Janeiro 28, 2013 Postado Janeiro 28, 2013 Pessoal, Como vocês tem lidado com acentuação nos dados de clientes como nome, endereço etc. ? Tem armazenado em ISO 8859-1 ? Tem armazenado em UTF-8 ? Se sim, pq ? Tem filtro para acentuação HTML (´) ?
edvan Postado Janeiro 28, 2013 Postado Janeiro 28, 2013 Pessoal, Como vocês tem lidado com acentuação nos dados de clientes como nome, endereço etc. ? Tem armazenado em ISO 8859-1 ? Tem armazenado em UTF-8 ? Se sim, pq ? Tem filtro para acentuação HTML (´) ? A acentuação é baseado no charset que o cliente define após instalação. A instalação padrão é utf-8 e o próprio WHMCS que irá fazer o armazenamento de acordo com o charset x codificação na base de dados. O cliente em si não se preocupa com isso... os programadores que terão que "se virar nos 30" para codificar/decodificar caso seja necessário fornecer esses dados para uma outra interface. Existe uma variável global no WHMCS que armazena o charset do sistema. $CONFIG['Charset']; Caso essa variável não seja retornada faça uma consulta em MySQL SELECT * FROM tblconfiguration WHERE setting='Charset'; Dependendo do charset, exemplo UTF-8 para ISO-8859-1 utilizando o utf8_encode você resolve isso rapidinho!
rubensk Postado Janeiro 28, 2013 Autor Postado Janeiro 28, 2013 Entendi. Não há risco de um campo entrado por cliente vir com HTMLs tipo ´ ?
edvan Postado Janeiro 28, 2013 Postado Janeiro 28, 2013 Entendi. Não há risco de um campo entrado por cliente vir com HTMLs tipo ´ ? Remota mas existe! Exemplo se o "doido" do cliente resolver preencher em html kkk Exemplo (cliente) http://clip2net.com/s/2Lwhh | http://clip2net.com/s/2Lwju (admin)
rubensk Postado Janeiro 29, 2013 Autor Postado Janeiro 29, 2013 Coloquei filtragem de HTML por via das dúvidas. Ficou assim:<pre class="_prettyXprint _lang-auto _linenums:0"> function _registrobr_normaliza($string) { $string = str_replace('&nbsp;',' ',$string); $string = trim($string); $string = html_entity_decode($string,ENT_QUOTES,'UTF-8'); //Instead of The Normalizer class ... requires (PHP 5 >= 5.3.0, PECL intl >= 1.0.0) $normalized_chars = array( 'Š'=>'S', 'š'=>'s', 'Ð'=>'Dj','Ž'=>'Z', 'ž'=>'z', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss','à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y', 'ƒ'=>'f', ' ' => ''); $string = strtr($string,$normalized_chars); $string = strtolower($string); return $string; } function _registrobr_StateProvince($sp) { if (strlen($sp)==2) return $sp; $estado = _normaliza($sp); $map = array( "acre" => "AC", "alagoas" => "AL", "amazonas" => "AM", "amapa" => "AP", "bahia" => "BA", "baia" => "BA", "ceara" => "CE", "distritofederal" => "DF", "espiritosanto" => "ES", "espiritusanto" => "ES", "goias" => "GO", "goia" => "GO", "maranhao" => "MA", "matogrosso" => "MT", "matogroso" => "MT", "matogrossodosul" => "MS", "matogrossosul" => "MS", "matogrossodesul" => "MS", "minasgerais" => "MG", "minasgeral" => "MG", "para" => "PA", "paraiba" => "PB", "parana" => "PR", "pernambuco" => "PE", "pernanbuco" => "PE", "piaui" => "PI", "riodejaneiro" => "RJ", "riograndedonorte" => "RN", "riograndenorte" => "RN", "rondonia" => "RO", "riograndedosul" => "RS", "riograndedesul" => "RS", "riograndesul" => "RS", "roraima" => "RR", "santacatarina" => "SC", "sergipe" => "SE", "saopaulo" => "SP", "tocantins" => "TO" ); if(!empty($map[$estado])){ return $map[$estado]; } else { return $sp; } } </pre>
rubensk Postado Fevereiro 4, 2013 Autor Postado Fevereiro 4, 2013 Pessoal, continuando sobre o tema acentuação, vocês já notaram se os dados com acentuação são passados para módulos (pagamento, registro de domínios) ? Estamos com essa impressão ainda não confirmada de que isso é podado... será alguma opção ?
edvan Postado Fevereiro 4, 2013 Postado Fevereiro 4, 2013 Pessoal, continuando sobre o tema acentuação, vocês já notaram se os dados com acentuação são passados para módulos (pagamento, registro de domínios) ? Estamos com essa impressão ainda não confirmada de que isso é podado... será alguma opção ? Módulos de pagamentos a maioria trabalha em UTF-8. A ResellerClub antigamente tinha restrições com acentuação ( lógica simples, inglês não tem acentuação ). As últimas renovações e registros que fiz não tive problemas ( mesmo enviando caracteres ) veja mais http://docs.whmcs.com/ResellerClub#An_unknown_fault_occured_-_please_contact_support
rubensk Postado Fevereiro 4, 2013 Autor Postado Fevereiro 4, 2013 Módulos de pagamentos a maioria trabalha em UTF-8. A ResellerClub antigamente tinha restrições com acentuação ( lógica simples, inglês não tem acentuação ). As últimas renovações e registros que fiz não tive problemas ( mesmo enviando caracteres ) veja mais http://docs.whmcs.com/ResellerClub#An_unknown_fault_occured_-_please_contact_support A API do Registro.br aceitua acentuação, apesar de apenas em ISO 8859-1 e é justamente nisso que estamos trabalhando para converter os dados vindos com o Charset que estiver em uso no WHMCS. O que notamos é que o parâmetro que usavamos vinha sempre em ASCII, mas achamos um onde vem acentuado no Charset do sistema.
edvan Postado Fevereiro 4, 2013 Postado Fevereiro 4, 2013 A API do Registro.br aceitua acentuação, apesar de apenas em ISO 8859-1 e é justamente nisso que estamos trabalhando para converter os dados vindos com o Charset que estiver em uso no WHMCS. O que notamos é que o parâmetro que usavamos vinha sempre em ASCII, mas achamos um onde vem acentuado no Charset do sistema. Isso é simples de resolver... em um outro post até citei a solução. Detectar o charset do cliente e converter se necessário!
rubensk Postado Fevereiro 4, 2013 Autor Postado Fevereiro 4, 2013 Isso é simples de resolver... em um outro post até citei a solução. Detectar o charset do cliente e converter se necessário! Essa parte já estava no código. O problema é que algumas variáveis são auto-convertidas pelo WHMCS para ASCII, possivelmente por problemas como o da ResellClub.
Posts Recomendados