Sophie

Sophie

distrib > Mandriva > 2008.1 > i586 > by-pkgid > 703d980c580707c382b4e43e25965bc5 > files > 10733

php-manual-pt_BR-5.2.4-1mdv2008.1.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Variáveis externas ao PHP</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Manual do PHP"
HREF="index.html"><LINK
REL="UP"
TITLE="Variáveis"
HREF="language.variables.html"><LINK
REL="PREVIOUS"
TITLE="Variáveis variáveis"
HREF="language.variables.variable.html"><LINK
REL="NEXT"
TITLE="Constantes"
HREF="language.constants.html"><META
HTTP-EQUIV="Content-type"
CONTENT="text/html; charset=UTF-8"></HEAD
><BODY
CLASS="sect1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Manual do PHP</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="language.variables.variable.html"
ACCESSKEY="P"
>Anterior</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Capítulo 12. Variáveis</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="language.constants.html"
ACCESSKEY="N"
>Próxima</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="language.variables.external"
>Variáveis externas ao PHP</A
></H1
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="language.variables.external.form"
>Formulários HTML (GET and POST)</A
></H2
><P
>&#13;     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:
    </P
><P
>&#13;     <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN3864"
></A
><P
><B
>Exemplo 12-8. Um formulário HTML simples</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="html"
>&#60;form action="foo.php" method="post"&#62;
    Nome:  &#60;input type="text" name="username" /&#62;&#60;br /&#62;
    Email: &#60;input type="text" name="email" /&#62;&#60;br /&#62;
    &#60;input type="submit" name="submit" value="Me aperte!" /&#62;
&#60;/form&#62;</PRE
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>
    </P
><P
>&#13;     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:
    </P
><P
>&#13;     <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN3869"
></A
><P
><B
>Exemplo 12-9. Acessando dados de um formulário HTML via POST</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="html"
>&#60;?php
// Disponível desde o PHP 4.1.0

   echo $_POST['username'];
   echo $_REQUEST['username'];

   import_request_variables('p', 'p_');
   echo $p_username;

// Disponivel desde o PHP 3. A partir do PHP 5.0.0, essas grandes
// variaveis pre-definidas podem ser desabilitadas pela diretiva register_long_arrays.

   echo $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.

   echo $username;
?&#62;</PRE
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>
    </P
><P
>&#13;     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, <TT
CLASS="literal"
>http://www.example.com/test.php?id=3</TT
>
     contém os dados GET que serão acessíveis com <CODE
CLASS="varname"
>$_GET['id']</CODE
>.
     Veja também <A
HREF="reserved.variables.html#reserved.variables.request"
>$_REQUEST</A
> e
     <A
HREF="function.import-request-variables.html"
><B
CLASS="function"
>import_request_variables()</B
></A
>.
    </P
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>Nota: </B
>
      <A
HREF="language.variables.predefined.html#language.variables.superglobals"
>Arrays superglobais</A
>,
      como <CODE
CLASS="varname"
>$_POST</CODE
> e <CODE
CLASS="varname"
>$_GET</CODE
>, estão
      disponíveis desde o PHP 4.1.0.
     </P
></BLOCKQUOTE
></DIV
><P
>&#13;     Como explicado, antes do PHP 4.2.0 o valor default de <A
HREF="ini.core.html#ini.register-globals"
>register_globals</A
>
     era <SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>on</I
></SPAN
>. E no PHP ele era sempre on. A comunidade
     PHP está encorajando todos a não alterarem essa diretiva, assumindo-a
     sempre como <SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>off</I
></SPAN
> e codificando
     em conformidade com isso.
    </P
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>Nota: </B
>
      A diretiva de configuração <A
HREF="ref.info.html#ini.magic-quotes-gpc"
>magic_quotes_gpc</A
>
      afeta os valores de GET, POST e Cookies. Se
      estiver ativada, o valor (It's "PHP!") se tornará automaticamente (It\'s \"PHP!\").
      Escaping é necessário para inserção em bancos de dados. Veja também
      <A
HREF="function.addslashes.html"
><B
CLASS="function"
>addslashes()</B
></A
>, <A
HREF="function.stripslashes.html"
><B
CLASS="function"
>stripslashes()</B
></A
> e
      <A
HREF="ref.sybase.html#ini.magic-quotes-sybase"
>magic_quotes_sybase</A
>.
     </P
></BLOCKQUOTE
></DIV
><P
>&#13;     O PHP entende arrays no contexto de variáveis de formulários
     (veja o <A
HREF="faq.html.html"
>FAQ</A
> 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.
    </P
><P
>&#13;     <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN3895"
></A
><P
><B
>Exemplo 12-10. Variáveis de formulários mais complexos</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#007700">if (isset(</font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">'action'</font><font color="#007700">]) &amp;&amp; </font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">'action'</font><font color="#007700">] == </font><font color="#DD0000">'submitted'</font><font color="#007700">) {<br />&nbsp;&nbsp;&nbsp;&nbsp;echo </font><font color="#DD0000">'&lt;pre&gt;'</font><font color="#007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">print_r</font><font color="#007700">(</font><font color="#0000BB">$_POST</font><font color="#007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;echo </font><font color="#DD0000">'&lt;a href="'</font><font color="#007700">. </font><font color="#0000BB">$_SERVER</font><font color="#007700">[</font><font color="#DD0000">'PHP_SELF'</font><font color="#007700">] .</font><font color="#DD0000">'"&gt;Tente de novo&lt;/a&gt;'</font><font color="#007700">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;echo </font><font color="#DD0000">'&lt;/pre&gt;'</font><font color="#007700">;<br />} else {<br /></font><font color="#0000BB">?&gt;<br /></font>&lt;form action="<font color="#0000BB">&lt;?php </font><font color="#007700">echo </font><font color="#0000BB">$_SERVER</font><font color="#007700">[</font><font color="#DD0000">'PHP_SELF'</font><font color="#007700">]; </font><font color="#0000BB">?&gt;</font>" method="post"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;Nome:&nbsp;&nbsp;&lt;input type="text" name="personal[name]" /&gt;&lt;br /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;Email: &lt;input type="text" name="personal[email]" /&gt;&lt;br /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;Cerveja: &lt;br /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;select multiple name="beer[]"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="antartica"&gt;Antartica&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="brahma"&gt;Brahma&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="skol"&gt;Skol&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/select&gt;&lt;br /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="hidden" name="action" value="submitted" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="submit" name="submit" value="Enviar dados!" /&gt;<br />&lt;/form&gt;<br /><font color="#0000BB">&lt;?php<br /></font><font color="#007700">}<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>
    </P
><P
>&#13;     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.
    </P
><DIV
CLASS="sect3"
><H3
CLASS="sect3"
><A
NAME="language.variables.external.form.submit"
>Nomes de variáveis SUBMIT IMAGE</A
></H3
><P
>&#13;      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:
     </P
><DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN3902"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="html"
>&#60;input type="image" src="image.gif" name="sub" /&#62;</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
><P
>&#13;      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.
     </P
></DIV
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="language.variables.external.cookies"
>Cookies HTTP</A
></H2
><P
>&#13;     O PHP suporta transparentemente cookies HTTP como os definidos pela <A
HREF="http://wp.netscape.com/newsref/std/cookie_spec.html"
TARGET="_top"
>especificação da Netscape</A
>. 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 <A
HREF="function.setcookie.html"
><B
CLASS="function"
>setcookie()</B
></A
>. Cookies são parte do
     header HTTP, então, a função <A
HREF="function.setcookie.html"
><B
CLASS="function"
>setcookie()</B
></A
> precisa ser chamada antes
     de qualquer saída ser enviada ao browser. Esta é a mesma restrição
     da função <A
HREF="function.header.html"
><B
CLASS="function"
>header()</B
></A
>. Dados de cookies
     são disponíveis nos arrays de dados de cookies apropriados,
     como <CODE
CLASS="varname"
>$_COOKIE</CODE
>, <CODE
CLASS="varname"
>$HTTP_COOKIE_VARS</CODE
>
     como também em <CODE
CLASS="varname"
>$_REQUEST</CODE
>. Veja o manual de
     <A
HREF="function.setcookie.html"
><B
CLASS="function"
>setcookie()</B
></A
> para mais detalhes e
     exemplos.
    </P
><P
>&#13;     Se você deseja assimilar vários valores para uma única variável cookie, você
     pode fazer dele um array:
    </P
><DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN3917"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br />&nbsp;&nbsp;setcookie</font><font color="#007700">(</font><font color="#DD0000">"MeuCookie[foo]"</font><font color="#007700">, </font><font color="#DD0000">"Testando 1"</font><font color="#007700">, </font><font color="#0000BB">time</font><font color="#007700">()+</font><font color="#0000BB">3600</font><font color="#007700">);<br />&nbsp;&nbsp;</font><font color="#0000BB">setcookie</font><font color="#007700">(</font><font color="#DD0000">"MeuCookie[bar]"</font><font color="#007700">, </font><font color="#DD0000">"Testando 2"</font><font color="#007700">, </font><font color="#0000BB">time</font><font color="#007700">()+</font><font color="#0000BB">3600</font><font color="#007700">);<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
></P
></DIV
><P
>&#13;     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 <A
HREF="function.serialize.html"
><B
CLASS="function"
>serialize()</B
></A
> ou
     <A
HREF="function.explode.html"
><B
CLASS="function"
>explode()</B
></A
> nos valores primeiro.
    </P
><P
>&#13;     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:
    </P
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN3923"
></A
><P
><B
>Exemplo 12-11. Exemplo <A
HREF="function.setcookie.html"
><B
CLASS="function"
>setcookie()</B
></A
></B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#007700">if (isset(</font><font color="#0000BB">$_COOKIE</font><font color="#007700">[</font><font color="#DD0000">'count'</font><font color="#007700">])) {<br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$count </font><font color="#007700">= </font><font color="#0000BB">$_COOKIE</font><font color="#007700">[</font><font color="#DD0000">'count'</font><font color="#007700">] + </font><font color="#0000BB">1</font><font color="#007700">;<br />} else {<br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$count </font><font color="#007700">= </font><font color="#0000BB">1</font><font color="#007700">;<br />}<br /></font><font color="#0000BB">setcookie</font><font color="#007700">(</font><font color="#DD0000">"count"</font><font color="#007700">, </font><font color="#0000BB">$count</font><font color="#007700">, </font><font color="#0000BB">time</font><font color="#007700">()+</font><font color="#0000BB">3600</font><font color="#007700">);<br /></font><font color="#0000BB">setcookie</font><font color="#007700">(</font><font color="#DD0000">"Cart</font><font color="#007700">[</font><font color="#DD0000">$count</font><font color="#007700">]</font><font color="#DD0000">"</font><font color="#007700">, </font><font color="#0000BB">$item</font><font color="#007700">, </font><font color="#0000BB">time</font><font color="#007700">()+</font><font color="#0000BB">3600</font><font color="#007700">);<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="language.variables.external.dot-in-names"
>Pontos em nomes de variáveis postadas</A
></H2
><P
>&#13;     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:
     <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br />$varname</font><font color="#007700">.</font><font color="#0000BB">ext</font><font color="#007700">;&nbsp;&nbsp;</font><font color="#FF8000">/* nome de variável inválido */<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
>
     Dessa forma, o interpretador entende isso como uma variável nomeada
     <CODE
CLASS="varname"
>$varname</CODE
>, 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.
    </P
><P
>&#13;     Nessa situação, é importante saber que o PHP
     automaticamente substituirá qualquer ponto nos nomes de variáveis recebidas com
     sublinhados.
    </P
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="language.variables.determining-type-of"
>Determinando o tipo das variáveis</A
></H2
><P
>&#13;     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:
     <A
HREF="function.gettype.html"
><B
CLASS="function"
>gettype()</B
></A
>, <A
HREF="function.is-array.html"
><B
CLASS="function"
>is_array()</B
></A
>,
     <A
HREF="function.is-float.html"
><B
CLASS="function"
>is_float()</B
></A
>, <A
HREF="function.is-int.html"
><B
CLASS="function"
>is_int()</B
></A
>,
     <A
HREF="function.is-object.html"
><B
CLASS="function"
>is_object()</B
></A
>, e
     <A
HREF="function.is-string.html"
><B
CLASS="function"
>is_string()</B
></A
>. Veja também o capítulo
     <A
HREF="language.types.html"
>Tipos</A
>.
    </P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="language.variables.variable.html"
ACCESSKEY="P"
>Anterior</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Principal</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="language.constants.html"
ACCESSKEY="N"
>Próxima</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Variáveis variáveis</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="language.variables.html"
ACCESSKEY="U"
>Acima</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Constantes</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>