Variáveis
externas
ao
PHP
Formulários
HTML
(
GET
and
POST
)
Quando
um
formulário
é
submetido
para
um
script
PHP
,
qualquer
variável
do
formulário
será
automaticamente
disponível
para
o
script
.
Há
várias
maneiras
de
acessar
estas
informações
,
por
exemplo
:
Exemplo
8-1
.
Um
formulário
HTML
simples
form
action="
foo.php
"
method="post
"
Nome
:
input
type="text
"
name="username
"
br
Email
:
input
type="text
"
name="email
"
br
input
type="submit
"
name="submit
"
value="Me
aperte
!
"
/
form
|
|
Dependendo
da
configuração
local
e
suas
preferencias
pessoais
,
essas
são
as
vias
pela
qual
você
pode
acessar
os
dados
de
seus
formulários
:
Exemplo
8-2
.
Acessando
dados
de
um
formulário
HTML
via
POST
?php
/
/
Disponível
desde
o
PHP
4.1.0
print
$_POST[
'username']
;
print
$_REQUEST['username']
;
import_request_variables('p'
,
'p_')
;
print
$p_username
;
/
/
Disponível
deste
o
PHP
3
.
print
$HTTP_POST_VARS['username']
;
/
/
Disponível
se
a
diretiva
register_globals
=
on
.
/
/
Desde
o
PHP
4.2.0
o
valor
default
de
register_globals
é
off
/
/
Usar
/
manter
esse
método
é
preferível
.
print
$username
;
?
|
|
Utilizar
um
formulário
GET
é
similar
,
exceto
que
você
use
a
variável
GET
predefinida
.
O
metodo
GET
obtem
os
dados
da
QUERY_STRING
(
a
informação
depois
do
'
?
'
numa
URL
)
.
Então
,
por
exemplo
,
http
:
/
/www.example.com
/
test.php?id=3
contém
os
dados
GET
que
serão
acessíveis
com
$_GET[
'id'
]
.
Veja
também
$_REQUEST
e
import_request_variables(
)
.
Como
explicado
,
antes
do
PHP
4.2.0
o
valor
default
de
register_globals
era
on
.
E
no
PHP
ele
era
sempre
on
.
A
comunidade
PHP
está
encorajando
todos
a
não
alterarem
essa
diretiva
,
assumindo-a
sempre
como
off
e
codificando
em
conformidade
com
isso
.
O
PHP
entende
arrays
no
contexto
de
variáveis
de
formulários
(
veja
o
FAQ
O
PHP
entende
arrays
no
contexto
de
variáveis
de
formulários
(veja
o
FAQ
relacionado
)
.
Você
pode
,
por
exemplo
,
agrupar
variáveis
relacionadas
juntas
,
ou
usar
esse
recurso
para
receber
valores
de
um
campo
de
seleção
múltipla
.
Por
exemplo
,
podemos
ter
um
formulario
que
manda
informações
para
si
mesmo
até
um
comando
submetido
para
mostrar
todos
os
dados
.
Exemplo
8-3
.
Variáveis
de
formulários
mais
complexos
?php
if
(
$HTTP_POST_VARS['action'
]
==
'submitted'
)
{
print
'
pre
'
;
print_r($HTTP_POST_VARS)
;
print
'
a
href="'
.
$HTTP_SERVER_VARS['PHP_SELF'
]
.'
"
De
novo
/
a
'
;
print
'
/
pre
'
;
}
else
{
?
form
action=
"
?php
echo
$HTTP_SERVER_VARS['PHP_SELF']
;
?
"
method="post
"
Nome
:
input
type="text
"
name="personal[name]
"
br
Email
:
input
type="text
"
name="personal[email]
"
br
Cerveja
:
br
select
multiple
name="beer[]
"
option
value="antartica
"
Antartica
/
option
option
value="brahma
"
Brahma
/
option
option
value="skol
"
Skol
/
option
/
select
br
input
type="hidden
"
name="action
"
value="submitted
"
input
type="submit
"
name="submit
"
value="Enviar
dados
!
"
/
form
?php
}
?
|
|
No
PHP
3
,
os
arrays
variáveis
de
formulários
eram
limitados
a
uma
dimensão
.
No
PHP
4
,
essa
restrição
não
existe
mais
.
Nomes
de
variáveis
SUBMIT
IMAGE
Quando
submetendo
um
formulário
,
é
possível
de
se
utilizar
imagens
ao
invés
do
botão
de
submit
padrão
com
uma
tag
do
tipo
:
Quando
o
usuário
clica
em
algum
lugar
da
imagem
,
o
formulário
que
o
acompanha
é
transmitido
para
o
servidor
com
duas
variáveis
adicionais
,
sub_x
e
sub_y
.
Eles
contém
a
coordenadas
do
clique
do
usuário
na
imagem
.
Os
mais
experientes
percebem
que
os
atuais
nomes
dessas
variáveis
enviados
pelo
browser
contém
um
ponto
ao
invés
de
um
sublinhado
,
mas
o
PHP
converte
o
ponto
para
um
sublinhado
automaticamente
.
Cookies
HTTP
O
PHP
suporta
transparentemente
cookies
HTTP
como
os
definidos
pela
especificação
da
Netscape
.
Cookies
são
um
mecanismo
de
armazenamento
de
dados
no
browser
cliente
e
permite
o
rastreamento
ou
identificação
do
retorno
de
usuários
.
Você
pode
criar
cookies
com
a
função
setcookie(
)
.
Cookies
são
parte
do
header
HTTP
,
então
,
a
função
setcookie(
)
precisa
ser
chamada
antes
de
qualquer
saída
ser
enviada
ao
browser
.
Esta
é
a
mesma
restrição
da
função
header(
)
.
Dados
de
cookies
são
disponíveis
nos
arrays
de
dados
de
cookies
apropriados
,
como
$_COOKIE
,
$HTTP_COOKIE_VARS
como
também
em
$_REQUEST
.
Veja
o
manual
de
setcookie(
)
para
mais
detalhes
e
exemplos
.
Se
você
deseja
assimilar
vários
valores
para
uma
única
variável
cookie
,
você
pode
fazer
dele
um
array
:
Isso
irá
criar
dois
cookies
separados
enquanto
MeuCookie
será
um
único
array
em
seu
script
.
Se
você
quiser
colocar
em
apenas
um
cookie
vários
valores
,
considere
utilizar
serialize(
)
ou
explode(
)
nos
valores
primeiro
.
Note
que
um
cookie
substituirá
um
anterior
com
o
mesmo
nome
em
seu
browser
mesmo
se
o
nome
ou
o
caminho
for
diferente
.
Então
,
para
uma
aplicação
de
carrinho
de
compras
em
que
você
quer
ter
um
contador
e
repassá-lo
:
Pontos
em
nomes
de
variáveis
postadas
Normalmente
o
PHP
não
altera
o
nome
de
variáveis
quando
elas
são
passadas
para
o
script
.
Entretanto
,
é
necessário
notar
que
o
ponto
(
ponto
final
)
não
é
um
caracter
válido
no
nomes
de
variáveis
do
PHP
.
Para
ilustrar
,
veja
o
seguinte
exemplo
:
?php
$varname.ext
;
/
*
nome
de
variável
inválido
*
/
?
|
Dessa forma, o interpretador entende isso como uma variável
nomeada
$varname
, seguida do operador de concatenação de strings, seguida de um
identificador (uma string não delimitada que não bate com
nenhuma palavra chave ou reservada) 'ext'. Obviamente, isso não
tem os resultados pretendidos.
Nessa
situação
,
é
importante
saber
que
o
PHP
automaticamente
substituirá
qualquer
ponto
nos
nomes
de
variáveis
recebidas
com
sublinhados
.
Determinando
o
tipo
das
variáveis
Porque
o
PHP
determina
os
tipos
de
variáveis
e
faz
conversões
(
geralmente
)
quando
necessárias
,
nem
sempre
é
óbvio
o
tipo
de
uma
variável
tem
em
todos
os
momentos
.
O
PHP
incluí
várias
funções
que
permitem
determinar
qual
o
tipo
de
uma
variável
,
por
exemplo
:
gettype(
)
,
is_array(
)
,
is_float(
)
,
is_int(
)
,
is_object(
)
,
e
is_string(
)
.
Veja
também
o
capítulo
Tipos
.