PHP e HTML
PHP e HTML possuem muita interação: PHP pode gerar HTML, e o HTML
pode passar informações para o PHP. Antes de ler esses faqs, é importante
que você aprenda como recuperar variáveis de fontes externas. A página do manual
neste tópico inclui muitos exemplos.
Que codificação/decodificação é preciso quando eu passo um valor através de um formulário/URL?
Existem muitos estágios para o qual a codificação é importante. Assumindo que
você tenha uma string $data, o qual contém
a string que você quer passar de um jeito não codificado, esses são os
estágios relevantes:Interpretação HTML. A fim de especificar uma string aleatória, você
precisa incluá-la entre aspas, e converter todo o valor dos caracteres especiais para a realidade HTML usando
URL: Uma URL consite de diversas partes. Se você quer que seus dados sejam
interpretados como um item, você precisa codificá-los com
Exemplo #1 Um elemento oculto de formulário HTML
<?phpecho "\n";?>
Nota:
É errado $data, porque é a responsabilidade do navegador em
Exemplo #2 Dados a serem editados pelo usuário
<?phpecho "\n";
echohtmlspecialchars($data)."\n";
echo"";?>
Nota:
Os dados são mostrados no navegador como pretendido, porque o navegador irá
interpretar os simbolos de escape do HTML.
Em consequência do envio, tando via GET como POST, os dados vão ser urlencoded
pelo navegador para transferência, e urldecoded diretamente pelo PHP. Resumindo,
você não precisa fazer qualquer urlencoded/urldecoded pelo php,
tudo é feito automaticamente.
Exemplo #3 Em uma URL
<?phpecho "\n";?>
Nota:
De fato você está fingindo uma requisição HTML GET, portanto é necessário
Nota:
Você precisa urlencoded() os dados.
Você vai notar que & na URL é substituido
por &. Embora a maioria dos navegadores vão se recuperar
se vecê esquecer disto, isso nem sempre é possivel. Então, memso se a URL
não é dinâmica, você precisa
Estou tentando usar uma tag , mas as variáveis
$foo.x e $foo.y não estão
disponíveis.
Ao enviar um formulário, é possivel usar uma imagem em vez de
um botão submit padrão, como na tag:
Quando o usuário clica em qualquer lugar na imagem, o formulário que o acompanha
será transmitido para o servidor com duas variáveis adicionais:
foo.x e foo.y.
Porque foo.x e foo.y faria
nome de variáveis inválidas no PHP, elas são automaticamente convertidas para
foo_x e foo_y. Ou seja, os
periodos são substituidos por sublinhados. Então, você teria acesso a essas variáveis
como qualquer outro descrito na seção sobre como recuperar
variáveis de fontes
externas. Por exemplo,Nota:
Os espaços nos nomes das variáveis requisitadas são convertidas para sublinhado.
Como eu crio arrays em um HTML
?Para obter o resultado do seu
enviado como umarray para seu script PHP
você nomeia os elementos , ou
como estes:
Observe os colchetes após o nome da variável, é isso que
torna uma variável um array. Você pode agrupar os elementos dentro de diferentes arrays,
atribuindo o mesmo nome a diferentes elementos:
Isso poduz dois arrays, MyArray e MyOtherArray, que serão enviados
para o script PHP. Também é possível atribuir chaves específicas
para seus arrays:
O array AnotherArray ira conter agora as chaves 0, 1, email e phone.
Nota:
Especificar uma chave de array é opcional no HTML. Se você não especificar
as chves, o array preenche na ordem em que os elementos aparecem
no formulário. Nosso primeiro exemplo ira conter as chaves 0, 1, 2 e 3.
Como eu faço para obeter os resultados de uma múltipla seleção de uma tag HTML?
A seleção de multiplas tags em uma construção HTML permite os usuários
selecionar multiplos itens de uma lista. Esses itens são então passados
ao manipilador de ações para o formulário. O problema é que eles
são todos passados com o mesmo nome widget. I.e.
Cada opção selecionada chegará ao manipulador de ações como:
var=option1
var=option2
var=option3
Cada opção irá substituir o conteúdo da variável anterior
$var. A solução é usar
a caracteristica "array de elementos do formulário" do PHP. A seguir
devem ser usados:
Isso diz ao PHP para tratar $var como um array e
cada atribuição de um valor para [var] acrescenta um item ao array.
O primeiro item se torna $var[0], o próximo
$var[1], etc. A função
Note que se você esta usando JavaScript o []
no nome do elemento pode lhe causar problemas quando você tenta
se referir ao elemento pelo nome. Ao invés use o ID numérico do elemento
do formulário, ou coloque o nome da variável entre aspas simples e
use isso como um índice para os elementos do array, por exemplo:
variable = document.forms[0].elements['var[]'];
Como eu posso passar uma variável do Javascript para o PHP?
Uma vez que o Javascript é (normalmente) uma tecnologia da parte do cliente, e
o PHP é (normalmente) uma tecnologia da parte do servidor, e uma vez que o HTTP é um
protocolo "sem lado", as duas linguagens não podem compartilhar variáveis
diretamente.
É , no entanto, possível passar variáveis entre as duas.
Uma maneira de realizar isso é gerar um código Javascript
com PHP, e ter um navegador que se atualize, passando variáveis
especificas de volta para o script PHP. O exemplo abaixo mostra
precisamente como fazer isso -- isso permite ao código PHP capturar a altura
e largura da tela, algo que normalmente só é possível no
lado do cliente.
Exemplo #4 Gerando Javascript com PHP
<?phpif (isset($_GET['width']) AND isset($_GET['height'])) {// output the geometry variablesecho"Screen width is: ".$_GET['width'] ."
\n";
echo"Screen height is: ".$_GET['height'] ."
\n";
} else {// pass the geometry variables
// (preserve the original query string
// -- post variables will need to handled differently)echo"
echo" location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}"."&width=\" + screen.width + \"&height=\" + screen.height;\n";
echo"\n";
exit();
}?>