Radames Kremer 0 Denunciar post Postado Agosto 17, 2009 tive problema com o metodo get ja que o site do correios mudou o form para post entao fiz esse script, ele requer curl habilitado <?php /* Formatacao basica _____________________________________________________________________________________________________ | |servico|cepori|cepdes|peso|valorD|form|comp|larg|alt|diameter|mpro|valdec|arec|emba| ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ | PAC | X | X | X | * | | X | * | * | * | * | X | * | X | * | ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ | SEDEX | X | X | X | * | | | | | | | X | * | X | * | ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ | SEDEX10 | X | X | X | * | | | | | | | X | * | X | * | ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ | SEDEXHOJE | X | X | X | * | | | | | | | X | * | X | * | ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ |SEDEX A COBRAR | X | X | X | * | * | | | | | | X | | | * | ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ | eSEDEX | X | X | X | | | | | | | | | | | | ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ | MALOTE | X | X | X | | | | | | | | | | | | ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ X nao pode ser Nulo * pode ser Nulo O que estiver em branco deve ser nulo. Valores admiciveis servico = PAC = 41106 | SEDEX = 40010 | SEDEX10 = 40215 | SEDEXHOJE = 40290 | SEDEX A COBRAR = 40045 | eSEDEX = 81019 | MALOTE = 44105 mpro = S para entregar em mao propia e N para Nao entregar caso seja fora da area de entrega arec = Avisar recebimento S para sim N para nao valdec = Valor declarado valido para sedex, sedex10, sedexhoje, pac valorD = valor declarado para sedex a cobrar form = valido somente para pac, 1 para caixa/pacote ou 2 para rolo/prisma peso = no site as opcoes sao 0.300 e 1 a 30 kg com = comprimento da caixa ou do cilindro larg = largura da caixa alt = altura da caixa diameter = diametro do cilindro -- para mais informaçoes de diametro e medidas verifique no site emba - embalagens 116600055 = Caixa Encomenda 01 (18x13,5x9 cm) 116600063 = Caixa Encomenda 02 (27x18x9 cm) 870100203 = Caixa Encomenda 03 (27x22,5x13,5 cm) 116600080 = Caixa Encomenda 04 (36x27x18 cm) 116600160 = Caixa Encomenda 05 (54x36x27 cm) 765000652 = Envelope Bolha para CD 765000660 = Envelope Bolha para DVD 870200313 = Envelope SEDEX cartonado Grande (40x28 cm) 870200330 = Envelope SEDEX plástico Grande (40x28 cm) cepori = cep de origem cepdes = cep de destino */ function calc_frete($servico,$cepori,$cepdes,$peso,$valorD,$form,$comp,$larg,$alt,$diameter,$mpro,$valdec,$arec,$emba) { //conteudo do Post $data = "resposta=paginaCorreios&servico={$servico}&cepOrigem={$cepori}&cepDestino={$cepdes}&peso={$peso}&valorD={$valorD}&Formato={$form}&Comprimento={$comp}&Largura={$larg}&Altura={$alt}&Diametro={$diameter}&MaoPropia={$mpro}&valorDeclarado={$valdec}&avisoRecebimento={$arec}&embalagem={$emba}"; //Envia o Post e resgata html de resposta $html = curl_init('http://www.correios.com.br/encomendas/prazo/prazo.cfm'); curl_setopt($html, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"); curl_setopt($html, CURLOPT_TIMEOUT, 30); curl_setopt($html, CURLOPT_POSTFIELDS, $data); curl_setopt($html, CURLOPT_RETURNTRANSFER, 1); curl_setopt($html, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($html, CURLOPT_POST, 1); $return = curl_exec($html); curl_close($html); //tratamento inicial do html $return = explode('<!--/buscaCorreios-->', $return); $return = $return[1]; $return = explode('<!--buscaCorreios-->', $return); $return = $return[0]; $seg1 = explode('<tr class="tdAmarelo">', $return); $seg2 = explode('<tr class="tdAzul">', $return); //total do frete $tfrete = explode('<td colspan="2">', $seg1[2]); $tfrete = explode('</td>', $tfrete[1]); $tfrete = substr($tfrete[0], 3); //origem e destino $ordes = explode('<td align="center">', $seg1[1]); $origem = explode('</td>', $ordes[1]); $origem = $origem[0]; $destino = explode('</td>', $ordes[2]); $destino = $destino[0]; //prazo de Entrega $prazo = explode('<b>', $seg2[2]); $prazo = explode('</b>', $prazo[2]); $prazo = substr($prazo[0], 0, -17); //Resultados $result = "O frete de $origem ate $destino tera o custo de R$:$tfrete, e chegara em $prazo Dias Apos a postagem"; return $result; } function busca_cep($cep) { //dados do post $data = "resposta=paginaCorreios&servico=41106&cepOrigem=93880970&cepDestino={$cep}&peso=&valorD=&Formato=1&Comprimento=&Largura=&Altura=&Diametro=&MaoPropia=N&valorDeclarado=&avisoRecebimento=N&embalagem="; //envia e receb $html = curl_init('http://www.correios.com.br/encomendas/prazo/prazo.cfm'); curl_setopt($html, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"); curl_setopt($html, CURLOPT_TIMEOUT, 30); curl_setopt($html, CURLOPT_POSTFIELDS, $data); curl_setopt($html, CURLOPT_RETURNTRANSFER, 1); curl_setopt($html, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($html, CURLOPT_POST, 1); $return = curl_exec($html); curl_close($html); //tratamento inicial $return = explode('<!--/buscaCorreios-->', $return); $return = $return[1]; $return = explode('<!--buscaCorreios-->', $return); $return = $return[0]; $seg2 = explode('<tr class="tdAzul">', $return); $cidabai = explode('<td align="center">', $seg2[1]); //busca logradouro $logradouro = explode('</td>', $cidabai[4]); $logradouro = $logradouro[0]; //busca bairro $bairro = explode('</td>', $cidabai[6]); $bairro = $bairro[0]; //busca cidade e estado $cidaes = explode('</td>', $cidabai[8]); $cidaes = $cidaes[0]; $estado = substr($cidaes, -2); $cidade = substr($cidaes, 0, -3); //reultados $result = "<li>Cidade:$cidade</li><li>Estado:$estado</li><li>Bairro:$bairro</li><li>Logradouro:$logradouro</li>"; return $result; } echo calc_frete("41106","93880970","69075840","2","","1","","","","","N","","N",""); echo busca_cep("93010010"); ?> Compartilhar este post Link para o post Compartilhar em outros sites