Viva, eis um problema que me deparei recentemente e tive de resolver da 
maneira que achei menos própria visto não ter encontrado outra solução 
por mim mesmo ou recorrendo a busca na internet.

Actualmente temos um script de php que serve de "proxy" entre o domínio 
de um projecto e o domínio onde alojamos os serviços utilizados por 
este. "Client side" são feitos pedidos de serviços a este script que por 
sua vez por intermédio de fsock executa o pedido no domínio de serviços, 
uma vez recebida a resposta esta e então apresentada ao "Client". Depois 
de muito "trial and error" afinamos esta "proxy" para lidar tanto com 
GET como com POST.

O problema surgiu quando tivemos de replicar cookies, mais exactamente 
quando a resposta a um serviço gera um cookie e na "Proxy" tento 
replicar esse mesmo cookie para o "Client". A primeira vista seria 
simples, bastaria que ao analisar o "header" da resposta do servico 
quando encontra-se linhas do tipo "set-cookie" bata-se injectar essa 
mesma linha no header para o "Client" via comando "header()" do php. Eis 
que subitamente reparo que quando faço isso apenas o ultimo cookie 
gerado dessa forma prevalece na resposta ao "Client". Depois de muito 
ler sobre o assunto conclui que se trata de um "Bug" no php que tanto 
quanto consegui apurar se deve ao facto do header nao ser 
verdadeiramente enviado para o client a cada chamada do comando 
"header()" mas sim durante o primeiro output real, por exemplo num echo, 
print etc... assim sendo assumi que quando usamos o comando "header()" 
este regista "propriedades" designadas pela parte direita da string 
antes do ":" numa espécie de buffer  fazendo com que ´so possa existir 
uma e uma só propriedade "set-cookie" no registo do header que será 
então enviado ao client.

Este problema acabou por ser resolvido por intermédio do comando 
"setcookie" que ao contrario do "header" não aceita valores string mas 
sim varias propriedades que definem o cookie o que me obrigou a 
interpretar a string original  e converter uma data formatada  em  
timestamp ( que foi por si só uma dor de cabeça).

Embora tenha resolvido o problema ainda não estou 100% convencido que 
não exista uma forma de utilizar o comando "header()" para o mesmo 
propósito com uma fracção dos problemas. Será que existe alguma forma de 
adicionar varias propriedades "set-cookie" ao head buffer que vai ser 
enviado ao client que não tenha descoberto? será que e possível fazer 
vários envios desse buffer permitindo assim definir varias vezes a mesma 
propriedade?

PS: weeee tive 10 minutos para participar, só espero não ser um tema 
demasiado excêntrico para o habitual he he he

--~--~---------~--~----~------------~-------~--~----~
Recebeu esta mensagem porque está inscrito em Grupo "Mailing List da Comunidade 
Portuguesa de Rich Internet Applications - www.riapt.org" do Grupos Google.
 Para enviar mensagens para este grupo, envie um email para 
[email protected]
 Para anular a inscrição neste grupo, envie um email para 
[email protected]
 Para mais opções, visite este grupo em 
http://groups.google.com/group/riapt?hl=pt-PT
-~----------~----~----~----~------~----~------~--~---

Responder a