<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >Questões Diversas</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="FAQ: Perguntas Mais Freqüentes" HREF="faq.html"><LINK REL="PREVIOUS" TITLE="Migrando do PHP 4 para o PHP 5" HREF="faq.migration5.html"><LINK REL="NEXT" TITLE="Apêndices" HREF="appendices.html"><META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8"></HEAD ><BODY CLASS="chapter" 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="faq.migration5.html" ACCESSKEY="P" >Anterior</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="appendices.html" ACCESSKEY="N" >Próxima</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="chapter" ><H1 ><A NAME="faq.misc" >Capítulo 62. Questões Diversas</A ></H1 ><P > Aqui estão algumas questôes que nós não pudemos colocar em outra categoria. Aqui você encontra elas. </P ><DIV CLASS="qandaset" ><DL ><DT >1. <A HREF="faq.misc.html#faq.misc.bz2" > Como eu posso utilizar os manuais compactados com o bz2 no Windows? </A ></DT ><DT >2. <A HREF="faq.misc.html#faq.misc.arguments.references" > O que faz & antes de um argumento na declaração de uma função, ex. <A HREF="function.asort.html" ><B CLASS="function" >asort()</B ></A >? </A ></DT ><DT >3. <A HREF="faq.misc.html#faq.misc.registerglobals" > Como eu lido com <TT CLASS="literal" >register_globals</TT >? </A ></DT ></DL ><DIV CLASS="qandaentry" ><B ><DIV CLASS="question" ><P ><A NAME="faq.misc.bz2" ></A ><B >1. </B > Como eu posso utilizar os manuais compactados com o bz2 no Windows? </P ></DIV ></B ><DIV CLASS="answer" ><P ><B > </B > Se você não tiver uma ferramenta de arquivos para trabalhar com arquivos bz2 <A HREF="http://www.bzip.org/" TARGET="_top" >download</A > a ferramenta de linha de comando da Redhat (por favor veja maiores informações abaixo). </P ><P > Se você não gostar de usar uma ferramenta de linha de comando, você pode tentar ferramentas gratuitas como <A HREF="http://www.stuffit.com/" TARGET="_top" >Stuffit Expander</A >, <A HREF="http://www.ultimatezip.com/" TARGET="_top" >UltimateZip</A >, <A HREF="http://www.7-zip.org/" TARGET="_top" >7-Zip</A >, ou <A HREF="http://www.quickzip.org/" TARGET="_top" >Quick Zip</A >. Se você tiver ferramentas como <A HREF="http://www.rarlab.com/" TARGET="_top" >WinRAR</A > ou <A HREF="http://www.powerarchiver.com/" TARGET="_top" >Power Archiver</A >, você pode facilmente descomprimir arquivos bz2 com elas. Se você usa o Total Commander, (anteriormente Windows Commander), um plugin para o bz2 esta disponível gratuitamente em <A HREF="http://www.ghisler.com/" TARGET="_top" >Total Commander</A >. </P ><P > A ferramenta de linha de comando bzip2 da Redhat: </P ><P > Usuários Win2k Sp2 obtenha a versão 1.0.2, todos os outros usuários de windows a versão 1.00. Após o download renomeie o executável para bzip2.exe. Para sua conveniencia, coloque em um diretório que esteja no seu path, ex. C:\Windows aonde C representra o drive que você instalou o Windows. drive. </P ><P > Nota: lang significa a sua língua( Português do Brasil: pt_BR) e x para o formato desejado, ex.: pdf. Para descompactar php_manual_lang.x.bz2 siga estas instruções simples: <P ></P ><UL ><LI ><P >abra uma janela com o prompt de comando</P ></LI ><LI ><P > Use o comando cd para a pasta onde você guardou o php_manual_lang.x.bz2 </P ></LI ><LI ><P > digite bzip2 -d php_manual_lang.x.bz2, descompactando php_manual_lang.x na mesma pasta </P ></LI ></UL > </P ><P > Caso você tenha feito o download de php_manual_lang.tar.bz2 com vários arquivos html nele, o procedimento é o mesmo. A unica diferença é que você obtém um arquivo php_manual_lang.tar. O formato tar format é conhecido e tratado com as ferramentas de arquivos mais comuns para o Windows, por exemplo <A HREF="http://www.winzip.com/" TARGET="_top" >WinZip</A >. </P ></DIV ></DIV ><DIV CLASS="qandaentry" ><B ><DIV CLASS="question" ><P ><A NAME="faq.misc.arguments.references" ></A ><B >2. </B > O que faz & antes de um argumento na declaração de uma função, ex. <A HREF="function.asort.html" ><B CLASS="function" >asort()</B ></A >? </P ></DIV ></B ><DIV CLASS="answer" ><P ><B > </B > Indica que o argumento é <A HREF="language.references.pass.html" >passado por referência</A > e a função provavelmente irá modifica-lo de acordo com a documentação. Você pode passar apenas variáveis desta forma e você não precisa passa-los com & na chamada da função (e o mesmo esta <A HREF="ini.core.html#ini.allow-call-time-pass-reference" >obsoleto</A >). </P ></DIV ></DIV ><DIV CLASS="qandaentry" ><B ><DIV CLASS="question" ><P ><A NAME="faq.misc.registerglobals" ></A ><B >3. </B > Como eu lido com <TT CLASS="literal" >register_globals</TT >? </P ></DIV ></B ><DIV CLASS="answer" ><P ><B > </B > Para informações sobre as implicações de segurança de <TT CLASS="literal" >register_globals</TT >, leia o capitulo de segurança em <A HREF="security.globals.html" >Using register_globals</A >. </P ><P > É preferível usar <A HREF="language.variables.predefined.html#language.variables.superglobals" >superglobals</A >, do que depender de <TT CLASS="literal" >register_globals</TT > estar ativo. </P ><P > Se você esta em um servidor compartilhado com <TT CLASS="literal" >register_globals</TT > desativado e você precisa usar alguma aplicação de legado, a qual requira que esta opção esteja ativada, ou você esta em algum servidor de hospedagem, aonde isto esteja ativo, mas você quer eliminar os riscos de segurança, você pode precisar emular a definição contrária com o PHP. É sempre uma boa idéia primeiro perguntar se seria possível mudar a opção de configuração do PHP de alguma maneira, mas se não for possível, então você pode usar estes trechos de código para compatibilidade. </P ><P > <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN274854" ></A ><P ><B >Exemplo 62-1. Emulando Register Globals</B ></P ><P > Isto irá emular register_globals On. Se você alterou a sua diretiva <A HREF="ini.core.html#ini.variables-order" >variables_order</A >, considere mudar <CODE CLASS="varname" >$superglobals</CODE > de acordo. </P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br /></font><font color="#FF8000">// Emular register_globals on<br /></font><font color="#007700">if (!</font><font color="#0000BB">ini_get</font><font color="#007700">(</font><font color="#DD0000">'register_globals'</font><font color="#007700">)) {<br /> </font><font color="#0000BB">$superglobals </font><font color="#007700">= array(</font><font color="#0000BB">$_SERVER</font><font color="#007700">, </font><font color="#0000BB">$_ENV</font><font color="#007700">,<br /> </font><font color="#0000BB">$_FILES</font><font color="#007700">, </font><font color="#0000BB">$_COOKIE</font><font color="#007700">, </font><font color="#0000BB">$_POST</font><font color="#007700">, </font><font color="#0000BB">$_GET</font><font color="#007700">);<br /> if (isset(</font><font color="#0000BB">$_SESSION</font><font color="#007700">)) {<br /> </font><font color="#0000BB">array_unshift</font><font color="#007700">(</font><font color="#0000BB">$superglobals</font><font color="#007700">, </font><font color="#0000BB">$_SESSION</font><font color="#007700">);<br /> }<br /> foreach (</font><font color="#0000BB">$superglobals </font><font color="#007700">as </font><font color="#0000BB">$superglobal</font><font color="#007700">) {<br /> </font><font color="#0000BB">extract</font><font color="#007700">(</font><font color="#0000BB">$superglobal</font><font color="#007700">, </font><font color="#0000BB">EXTR_SKIP</font><font color="#007700">);<br /> }<br />}<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ><P > Isto irá emular register_globals Off. Tenha em mente que este código deve ser chamado bem no início do seu script, ou após <A HREF="function.session-start.html" ><B CLASS="function" >session_start()</B ></A > se você o usa para iniciar a sua sessão. </P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br /></font><font color="#FF8000">// Emula register_globals off<br /></font><font color="#007700">function </font><font color="#0000BB">unregister_GLOBALS</font><font color="#007700">()<br />{<br /> if (!</font><font color="#0000BB">ini_get</font><font color="#007700">(</font><font color="#DD0000">'register_globals'</font><font color="#007700">)) {<br /> return;<br /> }<br /><br /> </font><font color="#FF8000">// Might want to change this perhaps to a nicer error<br /> </font><font color="#007700">if (isset(</font><font color="#0000BB">$_REQUEST</font><font color="#007700">[</font><font color="#DD0000">'GLOBALS'</font><font color="#007700">]) || isset(</font><font color="#0000BB">$_FILES</font><font color="#007700">[</font><font color="#DD0000">'GLOBALS'</font><font color="#007700">])) {<br /> die(</font><font color="#DD0000">'GLOBALS overwrite attempt detected'</font><font color="#007700">);<br /> }<br /><br /> </font><font color="#FF8000">// Variables that shouldn't be unset<br /> </font><font color="#0000BB">$noUnset </font><font color="#007700">= array(</font><font color="#DD0000">'GLOBALS'</font><font color="#007700">, </font><font color="#DD0000">'_GET'</font><font color="#007700">,<br /> </font><font color="#DD0000">'_POST'</font><font color="#007700">, </font><font color="#DD0000">'_COOKIE'</font><font color="#007700">,<br /> </font><font color="#DD0000">'_REQUEST'</font><font color="#007700">, </font><font color="#DD0000">'_SERVER'</font><font color="#007700">,<br /> </font><font color="#DD0000">'_ENV'</font><font color="#007700">, </font><font color="#DD0000">'_FILES'</font><font color="#007700">);<br /><br /> </font><font color="#0000BB">$input </font><font color="#007700">= </font><font color="#0000BB">array_merge</font><font color="#007700">(</font><font color="#0000BB">$_GET</font><font color="#007700">, </font><font color="#0000BB">$_POST</font><font color="#007700">,<br /> </font><font color="#0000BB">$_COOKIE</font><font color="#007700">, </font><font color="#0000BB">$_SERVER</font><font color="#007700">,<br /> </font><font color="#0000BB">$_ENV</font><font color="#007700">, </font><font color="#0000BB">$_FILES</font><font color="#007700">,<br /> isset(</font><font color="#0000BB">$_SESSION</font><font color="#007700">) && </font><font color="#0000BB">is_array</font><font color="#007700">(</font><font color="#0000BB">$_SESSION</font><font color="#007700">) ? </font><font color="#0000BB">$_SESSION </font><font color="#007700">: array());<br /><br /> foreach (</font><font color="#0000BB">$input </font><font color="#007700">as </font><font color="#0000BB">$k </font><font color="#007700">=> </font><font color="#0000BB">$v</font><font color="#007700">) {<br /> if (!</font><font color="#0000BB">in_array</font><font color="#007700">(</font><font color="#0000BB">$k</font><font color="#007700">, </font><font color="#0000BB">$noUnset</font><font color="#007700">) && isset(</font><font color="#0000BB">$GLOBALS</font><font color="#007700">[</font><font color="#0000BB">$k</font><font color="#007700">])) {<br /> unset(</font><font color="#0000BB">$GLOBALS</font><font color="#007700">[</font><font color="#0000BB">$k</font><font color="#007700">]);<br /> }<br /> }<br />}<br /><br /></font><font color="#0000BB">unregister_GLOBALS</font><font color="#007700">();<br /><br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE > </P ></DIV ></DIV ></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="faq.migration5.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="appendices.html" ACCESSKEY="N" >Próxima</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Migrando do PHP 4 para o PHP 5</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="faq.html" ACCESSKEY="U" >Acima</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Apêndices</TD ></TR ></TABLE ></DIV ></BODY ></HTML >