<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >Algo Útil</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="Um simples tutorial" HREF="tutorial.html"><LINK REL="PREVIOUS" TITLE="Sua primeira página PHP" HREF="tutorial.firstpage.html"><LINK REL="NEXT" TITLE="Tratando Formulários" HREF="tutorial.forms.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="tutorial.firstpage.html" ACCESSKEY="P" >Anterior</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >Capítulo 2. Um simples tutorial</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="tutorial.forms.html" ACCESSKEY="N" >Próxima</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="sect1" ><H1 CLASS="sect1" ><A NAME="tutorial.useful" >Algo Útil</A ></H1 ><P > Vamos fazer alguma coisa um pouco mais útil agora. Nós iremos checar qual é o tipo de navegador que o visitante está utilizando para ver a nossa página. De fato, para fazer isto nós teremos que checar qual é o valor da string agente que o navegador envia como parte de sua requisição HTTP. Esta informação é armazenada em uma <A HREF="language.variables.html" >variável</A >. Variáveis sempre começam com um símbolo de cifrão no PHP. A variável que nos interessa no momento é a <CODE CLASS="varname" >$_SERVER["HTTP_USER_AGENT"]</CODE >. </P ><DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Nota sobre as Auto-Globais do PHP: </B > <A HREF="reserved.variables.html#reserved.variables.server" >$_SERVER</A > é uma variável especial reservada do PHP que contém todas as informações sobre o servidor web. Ela é conhecida como uma Auto-Global (ou Superglobal). Veja a página do manual relacionada as <A HREF="language.variables.predefined.html#language.variables.superglobals" >Auto-globais</A > para mais informações. Estas variáveis especiais foram introduzidas no PHP <A HREF="http://www.php.net/releases/4_1_0.php" TARGET="_top" >4.1.0</A >. Antes desta versão, nós usávamos os velhos arrays <CODE CLASS="varname" >$HTTP_*_VARS</CODE >, como o <CODE CLASS="varname" >$HTTP_SERVER_VARS</CODE >. Entretanto, este estilo antingo foi removido, porém ainda existem. (Veja a nota sobre <A HREF="tutorial.oldcode.html" >códigos antigos</A >.) </P ></BLOCKQUOTE ></DIV ><P > Para chamar esta variável, nós podemos fazer isto: </P ><P > <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN236" ></A ><P ><B >Exemplo 2-2. Imprimindo a variável (Elemento Array)</B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php </font><font color="#007700">echo </font><font color="#0000BB">$_SERVER</font><font color="#007700">[</font><font color="#DD0000">"HTTP_USER_AGENT"</font><font color="#007700">]; </font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ><P > Um exemplo de saída deste script poderia ser: <TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><PRE CLASS="html" >Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)</PRE ></TD ></TR ></TABLE > </P ></DIV ></TD ></TR ></TABLE > </P ><P > Há muitos <A HREF="language.types.html" >tipos</A > de variáveis disponíveis no PHP. No exemplo acima nós escrevemos um elemento <A HREF="language.types.array.html" >Array</A >. Arrays podem ser muito úteis. </P ><P > <CODE CLASS="varname" >$_SERVER</CODE > é somente uma variável que é automaticamente disponibilizada para você pelo PHP. Uma lista de Variáveis Reservadas pode ser vista na seção <A HREF="reserved.variables.html" >Variáveis Reservadas</A > do manual ou você pode pegar uma lista completa delas criando um arquivo como este: </P ><P > <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN248" ></A ><P ><B >Exemplo 2-3. Exibindo todas as variáveis pré-definidas usando a função <A HREF="function.phpinfo.html" ><B CLASS="function" >phpinfo()</B ></A ></B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php phpinfo</font><font color="#007700">(); </font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE > </P ><P > Se você carregar este arquivo no seu navegador você irá ver uma página com todas as informações sobre o PHP junto com uma lista de todos os tipos de variáveis disponíveis para você. </P ><P > Você pode colocar mútiplas declarações PHP dentro da tag PHP e criar pequenos blocos de códigos que faem muito mais do que um simples echo. Por exemplo, se você quer checar se o navegador é o Internet Explorer faça algo como isso: </P ><P > <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN255" ></A ><P ><B >Exemplo 2-4. Exemplo usando <A HREF="missing-stuff.html#control-structures" >controles de declarações</A > e <A HREF="missing-stuff.html#functions" >funções</A ></B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br /></font><font color="#007700">if (</font><font color="#0000BB">strstr</font><font color="#007700">(</font><font color="#0000BB">$_SERVER</font><font color="#007700">[</font><font color="#DD0000">"HTTP_USER_AGENT"</font><font color="#007700">], </font><font color="#DD0000">"MSIE"</font><font color="#007700">)) {<br /> echo </font><font color="#DD0000">"Você está usando o Internet Explorer<br />"</font><font color="#007700">;<br />}<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ><P > Um exemplo de Saída seria: <TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><PRE CLASS="html" >Você está usando o Internet Explorer<br /></PRE ></TD ></TR ></TABLE > </P ></DIV ></TD ></TR ></TABLE > </P ><P > Aqui nós mostraremos alguns novos conceitos. Nós temos a declaração <A HREF="language.control-structures.html#control-structures.if" >if</A >. SE você é familiar com a sintaxe básica usada pela linguagem C isto parecerá ser lógico para você. Se você não conhece a linguagem C ou alguma outra linguagem onde a sintaxe usada acima é usada, você provavelmente precisará de um livro introdutório sobre o PHP, dê uma lida nos primeiros capítulos do livro, ou leia a parte sobre a <A HREF="langref.html" >Referência da Linguagem</A > no manual. Você pode encontrar uma lista de livros sobre PHP em at <A HREF="???" TARGET="_top" >???</A >. </P ><P > O segundo conceito que iremos abordar é a chamada à função <A HREF="function.strstr.html" ><B CLASS="function" >strstr()</B ></A >. A função <A HREF="function.strstr.html" ><B CLASS="function" >strstr()</B ></A > é trazida junto com o PHP, ela faz uma busca em uma palavra por uma outra palavra. Neste caso nós procuramos pela palavra <TT CLASS="literal" >"MSIE"</TT > dentro de <CODE CLASS="varname" >$_SERVER["HTTP_USER_AGENT"]</CODE >. Se a palavra for encontrada, a função returna <TT CLASS="constant" ><B >TRUE</B ></TT > e se ela não for encontrada a função retorna <TT CLASS="constant" ><B >FALSE</B ></TT >. Se o retorno for <TT CLASS="constant" ><B >TRUE</B ></TT >, a declaração <A HREF="language.control-structures.html#control-structures.if" >if</A > ocorre e o código dentro dela é executado. Caso contrário, o código não é executado. Sinta-se à vontade para criar exemplos similares com o <A HREF="language.control-structures.html#control-structures.if" >if</A >, <A HREF="control-structures.else.html" >else</A >, e outras funções como a <A HREF="function.strtoupper.html" ><B CLASS="function" >strtoupper()</B ></A > e <A HREF="function.strlen.html" ><B CLASS="function" >strlen()</B ></A >. Cada uma delas está no manual com seus respectivos exemplos. </P ><P > Nós podemos avançar agora e mostrar à você como alternar entre os modos PHP mesmo que você esteja executando blocos de códigos: </P ><P > <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN281" ></A ><P ><B >Exemplo 2-5. Mesclando entre os modos PHP e HTML</B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br /></font><font color="#007700">if (</font><font color="#0000BB">strstr</font><font color="#007700">(</font><font color="#0000BB">$_SERVER</font><font color="#007700">[</font><font color="#DD0000">"HTTP_USER_AGENT"</font><font color="#007700">], </font><font color="#DD0000">"MSIE"</font><font color="#007700">)) {<br /></font><font color="#0000BB">?><br /></font><h3>strstr retorna verdadeiro</h3><br /><center><b>Você está usando o Internet Explorer</b></center><br /><font color="#0000BB"><?php<br /></font><font color="#007700">} else {<br /></font><font color="#0000BB">?><br /></font><h3>strstr retorna falso</h3><br /><center><b>Você não está usando o Internet Explorer</b></center><br /><font color="#0000BB"><?php<br /></font><font color="#007700">}<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ><P > Um exemplo de saída deste script poderia ser: <TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><PRE CLASS="html" ><h3>strstr retorna verdadeiro</h3> <center><b>Você está usando o Internet Explorer</b></center></PRE ></TD ></TR ></TABLE > </P ></DIV ></TD ></TR ></TABLE > </P ><P > Ao invés de usar a declaração echo do PHP para imprimir a saída dos dados, nós saímos do modo do PHP e usamos o HTML normal. O importante à notar aqui é que a lógica do script continua intacta. Somente alguns blocos HTML será enviados de acordo com o que a declaração <A HREF="function.strstr.html" ><B CLASS="function" >strstr()</B ></A > retornar, ou seja <TT CLASS="constant" ><B >TRUE</B ></TT > ou <TT CLASS="constant" ><B >FALSE</B ></TT >. Em outras palavras, se a palavra <TT CLASS="literal" >MSIE</TT > for encontrada ou não. </P ></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="tutorial.firstpage.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="tutorial.forms.html" ACCESSKEY="N" >Próxima</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Sua primeira página PHP</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="tutorial.html" ACCESSKEY="U" >Acima</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Tratando Formulários</TD ></TR ></TABLE ></DIV ></BODY ></HTML >