php-doc-en/faq/misc.xml

220 lines
7.3 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.29 $ -->
<chapter xml:id="faq.misc" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Miscellaneous Questions</title>
<titleabbrev>Miscellaneous Questions</titleabbrev>
<para>
There can be some questions we can't put into other
categories. Here you can find them.
</para>
<qandaset>
<qandaentry xml:id="faq.misc.bz2">
<question>
<para>
How can I handle the bz2 compressed manuals on Windows?
</para>
</question>
<answer>
<para>
If you don't have an archiver-tool to handle bz2 files
<link xlink:href="&url.bzip2;">download</link> the command line tool
from Redhat (please find further information below).
</para>
<para>
If you would not like to use a command line tool, you can try free
tools like <link xlink:href="&url.stuffit;">Stuffit Expander</link>,
<link xlink:href="&url.ultimatezip;">UltimateZip</link>,
<link xlink:href="&url.7zip;">7-Zip</link>, or
<link xlink:href="&url.quickzip;">Quick Zip</link>. If you
have tools like <link xlink:href="&url.winrar;">WinRAR</link> or
<link xlink:href="&url.powerarchiver;">Power Archiver</link>, you can
easily decompress the bz2 files with it. If you use Total Commander
(formerly Windows Commander),
a bz2 plugin for that program is available freely from the
<link xlink:href="&url.wincmd;">Total Commander</link> site.
</para>
<para>
The bzip2 command line tool from Redhat:
</para>
<para>
Win2k Sp2 users grab the latest version 1.0.2, all
other Windows user should grab version 1.00. After downloading rename
the executable to bzip2.exe. For convenience put it into a directory in
your path, e.g. C:\Windows where C represents your Windows installation
drive.
</para>
<para>
Note: lang stands for your language and x for the desired format, e.g.: pdf.
To uncompress the php_manual_lang.x.bz2 follow these simple instructions:
<itemizedlist>
<listitem>
<simpara>open a command prompt window</simpara>
</listitem>
<listitem>
<simpara>
cd to the folder where you stored the
downloaded php_manual_lang.x.bz2
</simpara>
</listitem>
<listitem>
<simpara>
invoke bzip2 -d php_manual_lang.x.bz2, extracting
php_manual_lang.x in the same folder
</simpara>
</listitem>
</itemizedlist>
</para>
<para>
In case you downloaded the php_manual_lang.tar.bz2 with many html-files
in it, the procedure is the same. The only difference is that you got a file
php_manual_lang.tar. The tar format is known to be treated with most
common archivers on Windows like e.g.
<link xlink:href="&url.winzip;">WinZip</link>.
</para>
</answer>
</qandaentry>
<qandaentry xml:id="faq.misc.arguments.references">
<question>
<para>
What does &amp; beside argument mean in function declaration of e.g.
<function>asort</function>?
</para>
</question>
<answer>
<para>
It means that the argument is
<link linkend="language.references.pass">passed by reference</link> and
the function will likely modify it corresponding to the documentation. You
can pass only variables this way and you don't need to pass them with
&amp; in function call (it's even
<link linkend="ini.allow-call-time-pass-reference">deprecated</link>).
</para>
</answer>
</qandaentry>
<qandaentry xml:id="faq.misc.registerglobals">
<question>
<para>
How do I deal with <literal>register_globals</literal>?
</para>
</question>
<answer>
<para>
For information about the security implications of
<literal>register_globals</literal>, read the security chapter on
<link linkend="security.globals">Using register_globals</link>.
</para>
<para>
It's preferred to use
<link linkend="language.variables.superglobals">superglobals</link>,
rather than relying upon <literal>register_globals</literal> being on.
</para>
<para>
If you are on a shared host with <literal>register_globals</literal> turned
off and need to use some legacy applications, which require this option
to be turned on, or you are on some hosting server, where this feature
is turned on, but you would like to eliminate security risks, you might
need to emulate the opposite setting with PHP. It is always a good idea to
first ask if it would be possible to change the option somehow in PHP's
configuration, but if it is not possible, then you can use these
compatibility snippets.
</para>
<para>
<example>
<title>Emulating Register Globals</title>
<para>
This will emulate register_globals On. If you altered your
<link linkend="ini.variables-order">variables_order</link> directive,
consider changing the <varname>$superglobals</varname> accordingly.
</para>
<programlisting role="php">
<![CDATA[
<?php
// Emulate register_globals on
if (!ini_get('register_globals')) {
$superglobals = array($_SERVER, $_ENV,
$_FILES, $_COOKIE, $_POST, $_GET);
if (isset($_SESSION)) {
array_unshift($superglobals, $_SESSION);
}
foreach ($superglobals as $superglobal) {
extract($superglobal, EXTR_SKIP);
}
}
?>
]]>
</programlisting>
<para>
This will emulate register_globals Off. Keep in mind, that this code
should be called at the very beginning of your script, or after
<function>session_start</function> if you use it to start your session.
</para>
<programlisting role="php">
<![CDATA[
<?php
// Emulate register_globals off
function unregister_GLOBALS()
{
if (!ini_get('register_globals')) {
return;
}
// Might want to change this perhaps to a nicer error
if (isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS'])) {
die('GLOBALS overwrite attempt detected');
}
// Variables that shouldn't be unset
$noUnset = array('GLOBALS', '_GET',
'_POST', '_COOKIE',
'_REQUEST', '_SERVER',
'_ENV', '_FILES');
$input = array_merge($_GET, $_POST,
$_COOKIE, $_SERVER,
$_ENV, $_FILES,
isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array());
foreach ($input as $k => $v) {
if (!in_array($k, $noUnset) && isset($GLOBALS[$k])) {
unset($GLOBALS[$k]);
}
}
}
unregister_GLOBALS();
?>
]]>
</programlisting>
</example>
</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->