Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 43 additions & 43 deletions features/commandline.xml

Large diffs are not rendered by default.

18 changes: 9 additions & 9 deletions features/connection-handling.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: dc0f955be2a10b707ae06f7da69f52fab24df3d1 Maintainer: PhilDaiguille Status: ready -->
<!-- EN-Revision: 5e6ca803fc284739a7b1e7fba58b6b8466d5006f Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->

<chapter xml:id="features.connection-handling" xmlns="http://docbook.org/ns/docbook">
Expand All @@ -26,7 +25,7 @@
desconexión de un cliente provoque la interrupción del
script. A veces es práctico que los scripts continúen
ejecutándose hasta el final, incluso si el cliente ya no está
presente para recibir la información. Sin embargo, por omisión, el script
presente para recibir la información. Sin embargo, por defecto, el script
se detendrá tan pronto como el cliente se desconecte.
Este comportamiento puede ser modificado con la directiva
<option>ignore_user_abort</option> en el fichero &php.ini; o
Expand All @@ -35,10 +34,10 @@
<function>ignore_user_abort</function>. Si no se solicita a PHP que ignore la desconexión, y el
usuario se desconecta, el script será terminado. La
única excepción es si se ha registrado una función de cierre, con <function>register_shutdown_function</function>.
Con tal función, cuando el usuario interrumpe su
solicitud, en la próxima ejecución del script,
PHP se dará cuenta de que el último script no ha sido
terminado, y desencadenará la función de cierre.
Con tal función, cuando el usuario remoto pulsa su botón STOP,
la próxima vez que el script intente enviar algo a la salida,
PHP detectará que la conexión ha sido interrumpida
y se llamará a la función de cierre.
Esta función también será llamada al final del script,
si este termina normalmente. Para poder tener un comportamiento
diferente según el estado del script al finalizar,
Expand All @@ -50,7 +49,7 @@
<simpara>
El script también puede ser interrumpido automáticamente
después de un cierto tiempo.
Por omisión, el tiempo límite es de 30 segundos. Este valor
Por defecto, el tiempo límite es de 30 segundos. Este valor
puede ser cambiado utilizando la directiva PHP
<option>max_execution_time</option> en el fichero
&php.ini; o con la directiva
Expand All @@ -71,7 +70,8 @@
posible si se solicita a PHP que ignore las
desconexiones de los usuarios. PHP aún así notará el hecho de que el usuario se ha desconectado,
pero el script continuará. Luego, cuando alcance el límite de
tiempo, el script caducará. En ese momento, la
tiempo, el script será interrumpido y se llamará a su función de cierre,
si existe. En ese momento, la
función <function>connection_status</function>
devolverá <literal>3</literal>.
</simpara>
Expand Down
11 changes: 5 additions & 6 deletions features/cookies.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 3e08a8aae657492bdcdc7c550099ddf072042fa9 Maintainer: PhilDaiguille Status: ready -->
<!-- EN-Revision: 5e6ca803fc284739a7b1e7fba58b6b8466d5006f Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes -->

<chapter xml:id="features.cookies" xmlns="http://docbook.org/ns/docbook">
Expand All @@ -18,20 +17,20 @@
la visualización de su script hasta que se haya decidido enviar una cookie o encabezados.
</para>

<para>
<simpara>
Todas las cookies enviadas al servidor por el cliente serán automáticamente
incluidas en un array superglobal
<varname>$_COOKIE</varname> si <link
linkend="ini.variables-order">variables_order</link> contiene "C".
Si se desea asignar múltiples valores a una sola cookie, se debe añadir
<literal>[]</literal> al nombre de la cookie.
</para>
</simpara>

<para>
<simpara>
Para más detalles, incluyendo notas sobre errores de los navegadores,
ver las funciones <function>setcookie</function> y
<function>setrawcookie</function>.
</para>
</simpara>

</chapter>
<!-- Keep this comment at the end of the file
Expand Down
14 changes: 7 additions & 7 deletions features/dtrace.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 7c966c94fde8a9bb4e52975b559dc0bb0cb2ef72 Maintainer: PhilDaiguille Status: ready -->
<!-- EN-Revision: 5e6ca803fc284739a7b1e7fba58b6b8466d5006f Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes Maintainer: Marqitos -->
<chapter xml:id="features.dtrace" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Rastreo dinámico de DTrace</title>
Expand Down Expand Up @@ -96,16 +96,16 @@
que proporcionen sus propias sondas deben ser construidas por separado como extensiones
compartidas.
</para>
<para>
Para habilitar las sondas, definir la variable de entorno <option>USE_ZEND_DTRACE=1</option> a los procesos PHP objetivo.
</para>
<simpara>
Para habilitar las sondas, definir la variable de entorno <option>USE_ZEND_DTRACE=1</option> para los procesos PHP objetivo.
</simpara>
</sect2>

<sect2 xml:id="features.dtrace.static-probes">
<title>Sondas estáticas DTrace en el núcleo de PHP</title>
<table>
<title>Las siguientes sondas estáticas están disponibles en PHP</title>
<tgroup cols="2">
<tgroup cols="3">
<thead>
<row>
<entry>Nombre de la sonda</entry>
Expand Down Expand Up @@ -365,14 +365,14 @@ php*:::request-startup

<para>
Cuando el monitoreo haya terminado, el script D puede ser interrumpido con un
<keycombo action='simul'><keycap>CTRL</keycap><keycap>C</keycap></keycombo>
<keycombo action='simul'><keycap>CTRL</keycap><keycap>C</keycap></keycombo>.
</para>

<para>
En máquinas multi-CPU, el orden de las sondas puede no ser secuencial.
Esto depende del CPU que ha procesado las sondas,
y de cómo los hilos migran de un CPU a otro. La visualización de los timestamps de las sondas
permite reducir la confusión, por ejemplo :
permite reducir la confusión, por ejemplo:
<informalexample>
<programlisting>
<![CDATA[
Expand Down
36 changes: 18 additions & 18 deletions features/file-upload.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 3944dc63330edde959cfd3e7d113c999cbec10ff Maintainer: PhilDaiguille Status: ready -->
<!-- EN-Revision: 5e6ca803fc284739a7b1e7fba58b6b8466d5006f Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->

<chapter xml:id="features.file-upload" xmlns="http://docbook.org/ns/docbook">
Expand Down Expand Up @@ -41,7 +41,7 @@
<programlisting role="html">
<![CDATA[
<!-- El tipo de codificación de datos, enctype, DEBE ser especificado como se indica a continuación -->
<form enctype="multipart/form-data" action="_URL_" method="post">
<form enctype="multipart/form-data" action="__URL__" method="post">
<!-- MAX_FILE_SIZE debe preceder al campo input de tipo file -->
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<!-- El nombre del elemento input determina el nombre en el array $_FILES -->
Expand All @@ -51,7 +51,7 @@
]]>
</programlisting>
<para>
<literal>_URL_</literal> en el ejemplo anterior debe ser reemplazado y apuntar a un fichero PHP.
<literal>__URL__</literal> en el ejemplo anterior debe ser reemplazado y apuntar a un fichero PHP.
</para>
<para>
El campo oculto <literal>MAX_FILE_SIZE</literal> (medido en bytes) debe preceder al campo input de tipo file y su valor representa el tamaño máximo aceptado del fichero por PHP. Este elemento de formulario debe ser siempre utilizado, ya que permite informar al usuario que la transferencia deseada es demasiado grande antes de llegar al final de la carga. Tenga en cuenta que este parámetro puede ser "engañado" fácilmente desde el lado del navegador, por lo que no se debe confiar en él, tratándose finalmente de una funcionalidad de conveniencia del lado del cliente. El parámetro PHP (del lado del servidor) sobre el tamaño máximo de un fichero cargado, no puede ser engañado.
Expand Down Expand Up @@ -79,9 +79,9 @@
<varlistentry>
<term><varname>$_FILES['userfile']['type']</varname></term>
<listitem>
<para>
El tipo MIME del fichero, si el navegador ha proporcionado esta información. Por ejemplo, esto podría ser <literal>"image/gif"</literal>. Este tipo mime no es verificado por PHP y, por lo tanto, no se debe tomar su valor para sincronizarse.
</para>
<simpara>
El tipo MIME del fichero, si el navegador ha proporcionado esta información. Por ejemplo, esto podría ser <literal>"image/gif"</literal>. Este tipo MIME no es verificado por PHP y, por lo tanto, no se debe dar por sentado su valor.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
Expand Down Expand Up @@ -119,7 +119,7 @@
</variablelist>
</para>
<para>
El fichero cargado será almacenado temporalmente en el directorio temporal del sistema, a menos que se proporcione otro directorio con la directiva <link linkend="ini.upload-tmp-dir">upload_tmp_dir</link> del &php.ini;. El directorio por defecto del servidor puede ser cambiado en el entorno a través de la variable <envar>TMPDIR</envar>. Modificar el valor de esta variable con la función <function>putenv</function> en un script PHP será sin efecto. Esta variable de entorno también puede ser utilizada para asegurarse de que otras operaciones funcionen también en los ficheros cargados.
El fichero cargado será almacenado temporalmente en el directorio temporal del sistema, a menos que se proporcione otro directorio con la directiva <link linkend="ini.upload-tmp-dir">upload_tmp_dir</link> del &php.ini;. El directorio por defecto del servidor puede ser cambiado en el entorno a través de la variable <envar>TMPDIR</envar>. Modificar el valor de esta variable con la función <function>putenv</function> en un script PHP no tendrá efecto. Esta variable de entorno también puede ser utilizada para asegurarse de que otras operaciones funcionen también en los ficheros cargados.
<example>
<title>Validación de carga de ficheros</title>
<para>
Expand All @@ -133,12 +133,12 @@ $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "El fichero es válido, y ha sido cargado con éxito. Aquí hay más información :\n";
echo "El fichero es válido, y ha sido cargado con éxito.\n";
} else {
echo "Ataque potencial por carga de ficheros. Aquí hay más información :\n";
echo "¡Posible ataque por carga de ficheros!\n";
}

echo 'Aquí hay algunas informaciones de depuración :';
echo 'Aquí hay más información de depuración:';
print_r($_FILES);

echo '</pre>';
Expand All @@ -149,7 +149,7 @@ echo '</pre>';
</example>
</para>
<simpara>
El script PHP que recibe el fichero cargado debe poder gestionar el fichero de manera apropiada. Se puede utilizar la variable <varname>$_FILES['userfile']['size']</varname> para recalar todos los ficheros que son demasiado grandes o demasiado pequeños. Se puede utilizar la variable <varname>$_FILES['userfile']['type']</varname> para descartar los ficheros que no tienen el tipo correcto, pero utilizarla únicamente para una serie de verificaciones, ya que este valor está completamente bajo el control del cliente y no es verificado por PHP. Se puede utilizar la información en <varname>$_FILES['userfile']['error']</varname> y adaptar su política en función de los <link linkend="features.file-upload.errors">códigos de error</link>. Sea cual sea su política, se debe borrar el fichero del directorio temporal o moverlo.
El script PHP que recibe el fichero cargado debe poder gestionar el fichero de manera apropiada. Se puede utilizar la variable <varname>$_FILES['userfile']['size']</varname> para descartar todos los ficheros que son demasiado grandes o demasiado pequeños. Se puede utilizar la variable <varname>$_FILES['userfile']['type']</varname> para descartar los ficheros que no tienen el tipo correcto, pero utilizarla únicamente para una serie de verificaciones, ya que este valor está completamente bajo el control del cliente y no es verificado por PHP. Se puede utilizar la información en <varname>$_FILES['userfile']['error']</varname> y adaptar su política en función de los <link linkend="features.file-upload.errors">códigos de error</link>. Sea cual sea su política, se debe borrar el fichero del directorio temporal o moverlo.
</simpara>
<simpara>
Si no se selecciona ningún fichero en el formulario, PHP devolverá <literal>0</literal> en <varname>$_FILES['userfile']['size']</varname> y nada en <varname>$_FILES['userfile']['tmp_name']</varname>.
Expand All @@ -160,7 +160,7 @@ echo '</pre>';
<example>
<title>Envío de un array de ficheros</title>
<para>
PHP soporta los <link linkend="faq.html.arrays">arrays en HTML</link> así como con los ficheros.
PHP soporta los <link linkend="faq.html.arrays">arrays en HTML</link> incluso con los ficheros.
</para>
<programlisting role="html">
<![CDATA[
Expand Down Expand Up @@ -208,7 +208,7 @@ foreach ($_FILES["pictures"]["error"] as $key => $error) {
<sect1 xml:id="features.file-upload.common-pitfalls">
<title>Errores clásicos</title>
<simpara>
La variable <literal>MAX_FILE_SIZE</literal> no puede especificar un tamaño de fichero mayor que el tamaño que ha sido fijado por <link linkend="ini.upload-max-filesize">upload_max_filesize</link>, en el &php.ini;. El valor por defecto es 2 megaoctetos.
La variable <literal>MAX_FILE_SIZE</literal> no puede especificar un tamaño de fichero mayor que el tamaño que ha sido fijado por <link linkend="ini.upload-max-filesize">upload_max_filesize</link>, en el &php.ini;. El valor por defecto es 2 megabytes.
</simpara>
<simpara>
Si se activa un límite de memoria, puede ser necesario un valor mayor de <link linkend="ini.memory-limit">memory_limit</link>. Asegúrese de haber definido un valor para <link linkend="ini.memory-limit">memory_limit</link> lo suficientemente grande.
Expand All @@ -230,7 +230,7 @@ foreach ($_FILES["pictures"]["error"] as $key => $error) {
Si <link linkend="ini.post-max-size">post_max_size</link> está definido de manera demasiado baja, los ficheros grandes no podrán ser cargados. Asegúrese de definir <literal>post_max_size</literal> con un tamaño suficiente.
</simpara>
<simpara>
La configuración de <link linkend="ini.max-file-uploads">max_file_uploads</link> controla el número máximo de ficheros que pueden ser enviados en una solicitud. Si el número de ficheros enviados supera este límite, entonces <varname>$_FILES</varname> dejará de recibir. Por ejemplo, si <link linkend="ini.max-file-uploads">max_file_uploads</link> vale <literal>10</literal>, entonces <varname>$_FILES</varname> nunca contendrá más de 10 entidades.
La configuración de <link linkend="ini.max-file-uploads">max_file_uploads</link> controla el número máximo de ficheros que pueden ser enviados en una solicitud. Si el número de ficheros enviados supera este límite, entonces <varname>$_FILES</varname> dejará de procesar ficheros una vez alcanzado el límite. Por ejemplo, si <link linkend="ini.max-file-uploads">max_file_uploads</link> vale <literal>10</literal>, entonces <varname>$_FILES</varname> nunca contendrá más de 10 elementos.
</simpara>
<simpara>
No validar los ficheros que se manipulan puede dar acceso a los usuarios a ficheros sensibles en otras carpetas.
Expand Down Expand Up @@ -287,7 +287,7 @@ foreach ($_FILES["pictures"]["error"] as $key => $error) {
En los campos de carga de fichero HTML, es posible cargar un directorio entero con el atributo <literal>webkitdirectory</literal>. Esta funcionalidad es soportada en la mayoría de los navegadores modernos.
</simpara>
<simpara>
Con la información <literal>full_path</literal>, es posible almacenar las rutas relativas o reconstruir la misma jerarquía de directorios en el directorio.
Con la información <literal>full_path</literal>, es posible almacenar las rutas relativas o reconstruir la misma jerarquía de directorios en el servidor.
</simpara>
<programlisting role="html">
<![CDATA[
Expand All @@ -313,7 +313,7 @@ foreach ($_FILES["pictures"]["error"] as $key => $error) {
<sect1 xml:id="features.file-upload.put-method">
<title>Carga por método PUT</title>
<para>
PHP soporta el método HTTP PUT utilizado por los navegadores para almacenar ficheros en un servidor. Las solicitudes de tipo PUT son mucho más simples que las cargas de ficheros utilizando el tipo POST, y se parecen a:
PHP soporta el método HTTP PUT utilizado por algunos clientes para almacenar ficheros en un servidor. Las solicitudes de tipo PUT son mucho más simples que las cargas de ficheros utilizando el tipo POST, y se parecen a:
<informalexample>
<programlisting role="HTTP">
<![CDATA[
Expand All @@ -323,7 +323,7 @@ PUT /path/filename.html HTTP/1.1
</informalexample>
</para>
<para>
Normalmente, esto significa que el servidor remoto guardará los datos que siguen en el fichero: <filename>/path/filename.html</filename> de su disco. Esto no es, por supuesto, muy seguro permitir que Apache o PHP sobrescriban cualquier fichero de la arborescencia. Para evitar esto, primero se debe indicar al servidor que se desea que un script PHP dado gestione la solicitud. Con Apache, hay una directiva para ello: <emphasis>Script</emphasis>. Puede ser colocada en cualquier lugar del fichero de configuración de Apache. En general, los webmasters la colocan en el bloque <literal>&lt;Directory&gt;</literal>, o tal vez en el bloque <literal>&lt;VirtualHost&gt;</literal>. La siguiente línea hará muy bien el trabajo:
Normalmente, esto significa que el servidor remoto guardará los datos que siguen en el fichero: <filename>/path/filename.html</filename> de su disco. Esto no es, por supuesto, muy seguro permitir que Apache o PHP sobrescriban cualquier fichero de su árbol web. Para evitar esto, primero se debe indicar al servidor que se desea que un script PHP dado gestione la solicitud. Con Apache, hay una directiva para ello: <emphasis>Script</emphasis>. Puede ser colocada en cualquier lugar del fichero de configuración de Apache. En general, los webmasters la colocan en el bloque <literal>&lt;Directory&gt;</literal>, o tal vez en el bloque <literal>&lt;VirtualHost&gt;</literal>. La siguiente línea hará muy bien el trabajo:
<informalexample>
<programlisting>
<![CDATA[
Expand All @@ -350,7 +350,7 @@ $putdata = fopen("php://input", "r");
/* Abre un fichero para escritura */
$fp = fopen("myputfile.ext", "w");

/* Lectura de los datos, 1 Ko a la vez y escritura en el fichero */
/* Lectura de los datos, 1 KB a la vez y escritura en el fichero */
while ($data = fread($putdata, 1024))
fwrite($fp, $data);

Expand Down
Loading
Loading