rafael Sat May 25 12:40:16 2002 EDT Added files: /phpdoc-es/reference/session reference.xml Log: Translation updated to PHP 4.x
Index: phpdoc-es/reference/session/reference.xml +++ phpdoc-es/reference/session/reference.xml <?xml version="1.0" encoding="iso-8859-1"?> <reference id="ref.session"> <title>Funciones para el manejo de sesiones</title> <titleabbrev>Sesiones</titleabbrev> <partintro> <para> El apoyo que PHP proporciona para las sesiones consiste en una forma de conservar ciertos datos a lo largo de los subsiguientes accesos, lo cual le permite construir aplicaciones más personalizadas e incrementar el atractivo de su sitio web. </para> <para> Si ya está familiarizado con el tratamiento de sesiones de PHPLIB, notará que algunos conceptos son similares al soporte de las sesiones de PHP. </para> <para> A cada visitante que accede a su web se le asigna un identificador único, llamado "session id" (identificador de sesión). Éste se almacena en una cookie por parte del usuario o se propaga en la URL. </para> <para> El soporte de las sesiones le permite registrar un número arbitrario de variables que se conservarán en las siguientes peticiones. Cuando un visitante acceda a su web, PHP comprobará automáticamente (si session.auto_start está puesto a 1) o cuando usted lo especifique (de forma explícita mendiante <function>session_start</function> o implícita a través de <function>session_register</function>) si se le ha enviado un "session id" específico con su petición, en cuyo caso se recrean las variables que se habían guardado anteriormente. </para> <para> Todas las variables registradas son almacenadas tras finalizar la petición. Las variables que están indefinidas se marcan como no definidas. En los subsiguientes accesos, no estarán definidas por el módulo de sesiones a menos que el usuario las defina más tarde. </para> <para> Las opciones de configuración <link linkend="ini.track-vars"><literal>track_vars</literal></link> y <link linkend="ini.register-globals"><literal>register_globals</literal></link> influyen notablemente en la forma en que las variables de la sesión se almacenan y restauran. </para> <note> <para> A partir de PHP 4.0.3, <link linkend="ini.track-vars"><literal>track_vars</literal></link> siempre está activado. </para> </note> <note> <para> A partir de PHP 4.1.0, <varname>$_SESSION</varname> está disponible como variable global, al igual que <varname>$_POST</varname>, <varname>$_GET</varname>, <varname>$_REQUEST</varname> y demás. Al contrario que <varname>$HTTP_SESSION_VARS</varname>, <varname>$_SESSION</varname> siempre es global. Por tanto, no se debe usar global para <varname>$_SESSION</varname>. </para> </note> <para> Si <link linkend="ini.track-vars"><literal>track_vars</literal></link> está activado y <link linkend="ini.register-globals"><literal>register_globals</literal></link> está desactivado, sólo los miembros del vector asociativo global <varname>$HTTP_SESSION_VARS</varname> pueden ser registrados como variables de la sesión. Las variables restauradas de la sesión sólo estarán disponibles en el vector <varname>$HTTP_SESSION_VARS</varname>. <example> <title> Registrar una variable con <link linkend="ini.track-vars"><literal>track_vars</literal></link> activado </title> <programlisting role="php"> <![CDATA[ <?php session_start(); if (isset($HTTP_SESSION_VARS['count'])) { $HTTP_SESSION_VARS['count']++; } else { $HTTP_SESSION_VARS['count'] = 0; } ?> ]]> </programlisting> </example> </para> <para> Se recomienda usar <varname>$_SESSION</varname> (o <varname>$HTTP_SESSION_VARS</varname> con PHP 4.0.6 o inferior) por seguridad y para hacer el código más legible. Con <varname>$_SESSION</varname> o <varname>$HTTP_SESSION_VARS</varname>, no es necesario usar las funciones session_register() / session_unregister() / session_is_registered(). Los usuarios pueden acceder a una variable de la sesión como si se tratase de una variable normal. <example> <title> Registrar una variable con $_SESSION. </title> <programlisting role="php"> <![CDATA[ <?php session_start(); // Use $HTTP_SESSION_VARS con PHP 4.0.6 o inferior if (!isset($_SESSION['count'])) { $_SESSION['count'] = 0; } else { $_SESSION['count']++; } ?> ]]> </programlisting> </example> <example> <title> Borrar una variable con $_SESSION. </title> <programlisting role="php"> <![CDATA[ <?php session_start(); // Use $HTTP_SESSION_VARS con PHP 4.0.6 o inferior unset($_SESSION['count']); ?> ]]> </programlisting> </example> </para> <para> Si <link linkend="ini.register-globals"><literal>register_globals</literal></link> está activado, todas las variables globales pueden ser registradas como variables de la sesión, y las variables de la sesión serán restauradas a sus correspondientes variables globales. Como PHP debe saber qué variables globles están registradas como variables de la sesión, los usuarios deben registrar las variables con la función session_register(), mientras que con <varname>$HTTP_SESSION_VARS</varname>/<varname>$_SESSION</varname> no es necesario usar session_register(). <caution> <para> Si está usando <varname>$HTTP_SESSION_VARS</varname>/<varname>$_SESSION</varname> y desactiva <link linkend="ini.register-globals"><literal>register_globals</literal></link>, no use <function>session_register</function>, <function>session_is_registered</function> ni <function>session_unregister</function>. </para> <para> Si activa <link linkend="ini.register-globals"><literal>register_globals</literal></link>, <function>session_unregister</function> debería ser usado a partir de que las variables de la sesión sean registradas como variables globales cuando los datos de la sesión se guardan. Se recomienda desactivar <link linkend="ini.register-globals"><literal>register_globals</literal></link> por motivos de seguridad y rendimiendo. </para> </caution> <example> <title> Registrar una variable con <link linkend="ini.register-globals"><literal>register_globals</literal></link> activado </title> <programlisting role="php"> <![CDATA[ <?php if (!session_is_registered('count')) { session_register("count"); $count = 0; } else { $count++; } ?> ]]> </programlisting> </example> </para> <para> Si <link linkend="ini.track-vars"><literal>track_vars</literal></link> y <link linkend="ini.register-globals"><literal>register_globals</literal></link> están activados, las variables globales y las entradas de <varname>$HTTP_SESSION_VARS</varname>/<varname>$_SESSION</varname> harán referencia al mismo valor para variables ya registradas. </para> <para> Si el usuario utiliza session_register() para registrar una variable, el vector <varname>$HTTP_SESSION_VARS</varname>/<varname>$_SESSION</varname> no contendrá esa variable hasta que se cargue de los datos de la sesión. (p.ej. hasta la próxima petición). </para> <para> Hay dos formas de propagar un "session id": <itemizedlist> <listitem> <simpara> Cookies </simpara> </listitem> <listitem> <simpara> Parámetro en la URL </simpara> </listitem> </itemizedlist> </para> <para> El módulo de sesiones admite ambas formas. Las Cookies son la mejor opción, pero como no son fiables (los clientes no están obligados a aceptarlas), no podemos confiar en ellas. El segundo método incrusta el "session id" directamente en las URLs. </para> <para> PHP es capaz de hacerlo de forma transparente al usuario cuando se compila con <link linkend="install.configure.enable-trans-sid"> <literal>--enable-trans-sid</literal></link>. Si activa esta opción, las URIs relativas serán modificadas de forma que contengan el session id automáticamente. Alternativamente, puede usar la constante <literal>SID</literal> que está definida, si el cliente no envía la cookie adecuada. El <literal>SID</literal> puede tener la forma de <literal>nombre_de_sesion=session_id</literal> o ser una cadena vacía. </para> <para> El ejemplo siguiente demuestra cómo registrar una variable, y cómo colocar correctamente un enlace a otra página usando la constante SID. <example> <title>Contar el número de impresiones de un usuario</title> <programlisting role="php"> <![CDATA[ <?php if (!session_is_registered('count')) { session_register('count'); $count = 1; } else { $count++; } ?> Hola, visitante. Has visto esta página <?php echo $count; ?> veces. <?php # el <?php echo SID?> (Se puede usar <?=SID?> si short tag está activado) # es necesario para conservar el session id # en caso de que el usuario haya desactivado las cookies ?> Para continuar, haga click <A HREF="nextpage.php?<?php echo SID?>">aquí</A>. ]]> </programlisting> </example> </para> <para> El <literal><?=SID?></literal> no es necesario si se ha usado <link linkend="install.configure.enable-trans-sid"> <literal>--enable-trans-sid</literal></link> al compilar PHP. </para> <note> <para> Se asume que las URLs no relativas apuntan a sitios web externos, y por tanto no se añade el SID, ya que pasar el SID a un servidor diferente podría ocasionar un agujero de seguridad. </para> </note> <para> Para implementar el almacenamiento en bases de datos o en otro tipo de almacenamiento, necesitará usar <function>session_set_save_handler()</function> para crear una colección de funciones de almacenamiento a nivel de usuario. </para> <para> El sistema de control de sesiones soporta varias opciones de configuración que puede colocar en su archivo &php.ini;. Les daremos un pequeño repaso. <itemizedlist> <listitem> <simpara> <literal>session.save_handler</literal> define el nombre del controlador que se usa para almacenar y recuperar los datos asociados a la sesión. Su valor por defecto es <literal>files</literal>. </simpara> </listitem> <listitem> <simpara> <literal>session.save_path</literal> define el argumento que se pasa al controlador de almacenamiento. Si elige el controlador de archivos por defecto, esta es la ruta donde los archivos se crean. Por defecto es <literal>/tmp</literal>. Si la profundidad de la ruta de <literal>session.save_path</literal> es mayor que 2, no se llevará a cabo la recolección de basura. </simpara> <warning> <para> Si lo deja apuntando a un directorio con permiso de lectura por el resto de usuarios, como <filename>/tmp</filename> (la opción por defecto), los demás usuarios del servidor pueden conseguir robar las sesiones obteniéndolas de la lista de archivos de ese directorio. </para> </warning> </listitem> <listitem> <simpara> <literal>session.name</literal> especifica el nombre de la sesión que se usa como nombre de la cookie. Sólo debería contener caracteres alfanuméricos. Por defecto vale <literal>PHPSESSID</literal>. </simpara> </listitem> <listitem> <simpara> <literal>session.auto_start</literal> especifica si el módulo de las sesión inicia una sesión automáticamente al comenzar la petición. Por defecto está <literal>0</literal> (desactivado). </simpara> </listitem> <listitem> <simpara> <literal>session.cookie_lifetime</literal> especifica la duración de la cookie en segundos que se manda al navegador. El valor <literal>0</literal> significa "hasta que se cierra el navegador", y es el que se encuentra por defecto. </simpara> </listitem> <listitem> <simpara> <literal>session.serialize_handler</literal> define el nombre del controlador que se utiliza para guardar y restaurar los datos. Actualmente se soportan un formato interno de PHP (cuyo nombre es <literal>php</literal>) y WDDX (cuyo nombre es <literal>wddx</literal>). WDDX sólo está disponible si PHP está compilado con <link linkend="ref.wddx">Soporte para WDDX</link>. Por defecto es <literal>php</literal>. </simpara> </listitem> <listitem> <simpara> <literal>session.gc_probability</literal> especifica la probabilidad de que se inicie la rutina gc (garbage collection - recoleción de basura) en cada petición en porcentaje. Por defecto es <literal>1</literal>. </simpara> </listitem> <listitem> <simpara> <literal>session.gc_maxlifetime</literal> especifica el número de segundos tras los cuales los datos se considerarán como 'basura' y serán eliminados. </simpara> </listitem> <listitem> <simpara> <literal>session.referer_check</literal> contiene la subcadena que usted quiera que se compruebe en cada "HTTP Referer" (N.T.: Página desde donde proviene el enlace a la página actual). Si el "Referer" fue enviado por el cliente y la subcadena no se ha encontrado, el session id incrustado será marcado como inválido. Por defecto es una cadena vacía. </simpara> </listitem> <listitem> <simpara> <literal>session.entropy_file</literal> indica la ruta a un recurso externo (un archivo) que se usará como fuente adicional de entropía en el proceso de creación de session id's. Por ejemplo <literal>/dev/random</literal> o <literal>/dev/urandom</literal>, que están disponibles en muchos sistemas Unix. </simpara> </listitem> <listitem> <simpara> <literal>session.entropy_length</literal> especifica el número de bytes que serán leidos del archivo indicado más arriba. Por defecto es <literal>0</literal> (desactivado). </simpara> </listitem> <listitem> <simpara> <literal>session.use_cookies</literal> indica si el módulo puede usar cookies para guardar el session id en el lado del cliente. Por defecto está a <literal>1</literal> (activado). </simpara> </listitem> <listitem> <simpara> <literal>session.cookie_path</literal> especifica la ruta a colocar en session_cookie. Por defecto es <literal>/</literal>. </simpara> </listitem> <listitem> <simpara> <literal>session.cookie_domain</literal> especifica el dominio a establecer en session_cookie. Por defecto no se especifica ninguno en ningún caso. </simpara> </listitem> <listitem> <simpara> <literal>session.cache_limiter</literal> especifica el método de control del caché a usar en las páginas de la sesión (none/nocache/private/private_no_expire/public). Por defecto es <literal>nocache</literal> (no guardar las páginas en el caché). </simpara> </listitem> <listitem> <simpara> <literal>session.cache_expire</literal> especifica el tiempo-de-vida de las páginas de la sesión que se encuentran en el caché en minutos. No tiene efecto para el limitador nocache. Por defecto vale <literal>180</literal>. </simpara> </listitem> <listitem> <simpara> <literal>session.use_trans_sid</literal> indica si la inclusión del sid transparente está activada o no, si fue activada compilando con <link linkend="install.configure.enable-trans-sid"> <literal>--enable-trans-sid</literal></link>. Por defecto está a <literal>1</literal> (activado). </simpara> </listitem> <listitem> <simpara> <literal>url_rewriter.tags</literal> especifica qué etiquetas html serán reescritas para incluir el session id si la inclusión del sid transparente está activada. Las etiquetas por defecto son <literal>a=href,area=href,frame=src,input=src,form=fakeentry</literal> </simpara> </listitem> </itemizedlist> <note> <para> El manejo de sesiones fue añadido en PHP 4.0. </para> </note> </para> </partintro> &reference.session.functions; </reference> <!-- 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 -->