1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.
  2. Informação: Pela 0:30 desta Sexta-feira (9 de Dezembro, 23:30 de Quinta-feira nos Açores) o Fórum e restantes sites da ZWAME vão estar offline para manutenção durante cerca de 1h30.
    Se necessário faremos actualizações via Twitter e Facebook.
    Remover anúncio

incoerência HTML

Discussão em 'Programação' iniciada por D X, 9 de Junho de 2005. (Respostas: 9; Visualizações: 892)

  1. D X

    D X

    Olá!

    Queria partilhar connvosco a minha irritação por esta incoerência no HTML:

    1. Se enviarem num input hidden o valor " vão receber \"

    2. Se enviarem numa textarea (ou num input text, etc..) o valor " vão receber "

    Não vejo nenhuma razão para que isto seja assim e perdi horas à procura dum bug gerado por esta disparidade entre o input hidden e restantes elementos de forms. BUH... >(

    Se tiverem um servidor a correr PHP experimentem:
    (atenção: há código seleccionável até ao fim da pág. que ficou a preto sobre fundo preto (???)
    PHP:
    <?
    if(isset(
    $_POST["a"])){

    var_dump($_POST["a"]);
    var_dump($_POST["s"]);
    }

    ?>

    <form method="post">
    <input type="hidden" value="&quot;" name="s">
    <textarea name="a">&amp;quot;</textarea>
    <input type="submit">

    </form>
    ... Ou será que isto é do servidor (apache 2.0)???
     
    Última edição: 9 de Junho de 2005
  2. NoMercy

    NoMercy Power Member

    Tambem me aconteceu. Julgo que deve ser da skin, porque com a "bullet proof style" isto não acontece.

    E em vez de
    Código:
    <textarea name="a">&amp;quot;</textarea> 
    assim:
    Código:
    <textarea name="a">&quot;</textarea> 
    continua a acontecer?

    Não tenho aqui php por isso nem dá para fazer experiências. Ainda assim, entretém-te a "mastigar" isto: http://www.w3.org/TR/PR-html40-971107/html40.txt :P
     
  3. BraBo

    BraBo Banido

    Dentro do hidden o valor atribuido ja está com encoding... por isso te vai o normal ' mas com o BackSlash para protecção do Php... Dentro dos Input Text e TextAreas é o utilizador que insere o código, que quando é enviado é transformado em HTML, logo fica &quot; ...
    Isso não é um bug, é assim mesmo, e não tem a ver com o Php ou mesmo Apache mas sim como o browser te manda a informação para o servidor (penso eu de que). Faz o decode que obtens o valor que o user inseriu, masmo como foi inserido.

    PS: tenta por um Input Text já com o valor da &quot;, mas literal (') e vê se não te mostra do outro lado o mesmo que o hidden... Depois diz qualquer coisa.
     
    Última edição: 9 de Junho de 2005
  4. NoMercy

    NoMercy Power Member

    @BraBo, o primeiro comentário que fiz era em relação á parte do código dentro da tag de php que não aparece com a skin original mas que fica bem com a skin "bullet proof style"

    És bem capaz de ter razão. Foi a primeira coisa em que pensei, mas como não tinha a certeza sobre o "processamento" do php, preferi não comentar isso e deixar isso para quem soubesse melhor.
     
  5. BraBo

    BraBo Banido

    O Php é processado do lado do servidor. Aquilo que chega ao cliente é qualquer outra coisa (XML, HTML, Imagens ...) ...
     
  6. NoMercy

    NoMercy Power Member

    Eu sei.
    O que não sei é o que ocorre quando o servidor recebe dados do cliente e os envia ao php para processar. Por exemplo, usando o módulo CGI.pm (perl), para processar informação que é enviada do browser para o servidor, certos caracteres ou sequência deles é analizada e alterada para protecção do servidor. A mesma coisa poder-se-ia passar (e provavelmente passa-se) com php e é isso que desconheço, ou seja, aquilo que é relativo ao php.
     
  7. BraBo

    BraBo Banido

    Ele só faz o encoding. Usa o $var = urldecode($_REQUEST['var']);
     
  8. D X

    D X

    Obr BraBo e NoMercy pelas explicações!

    Cheguei à conclusão de que neste caso, o hidden torna-se ínutil. Tenho de usar um input text, com <div style="display:none"> antes!!!

    Passo a explicar porquê... se interessar a alguém :wow:

    O que queria passar como valor do input hidden era um array "serializado" (array depois de passar pela função php serialize). Ora, este array adopta como elemento estruturador as aspas. Se um elemento dum array tem aspas, então o array serializado fica desestruturado.
    Por isso queria usar « &quot; » em vez de « " » nos elementos do array.
    Só que ao passar no POST o array serializado com « &quot; » e « " » arrumados nos seus lugares, recebo tudo como « \" » e então já não consigo "unserializar" o array para o poder usar.

    Com o input text, tá tudo bem. :)
     
  9. Nazgulled

    Nazgulled Power Member

    na minha opinião, acho essa uma maneira má de mandares um input k n keres k ng veja...

    encontrei isto algures por ai:

    talvez ajude, talvez não...
     
  10. D X

    D X

    Boa solução

    Essa, Nazgulled, parece-me ser uma solução bastante boa! Sem dúvida mais " elegante " do que o meu truque!
    Único senão, a codificação e descodificação de strings torna as páginas mais lentas.

    Vou pensar se vale a pena modificar o código para adoptar essa solução, neste caso. De qualquer forma, é bom saber que existem alternativas para poder usar o hidden.

    Obrigado pessoal !! :009:
     

Partilhar esta Página