Hi, Can you please activate this SVN account: hcrow?
I attached the files he translated:languages.xml, using.xml Thanks! Yago ---------- Forwarded message ---------- From: Yago Ferrer <y...@php.net> Date: Tue, Jul 20, 2010 at 3:03 AM Subject: Re: [PHP-DOC] SVN Account Request: hcrow To: Philip Olson <phi...@roshambo.org> Hi Philip can you please activate this account? On Mon, Jul 19, 2010 at 7:20 AM, Yago Ferrer <y...@php.net> wrote: > Hi, > can you please activate the SVN account: hcrow for Harold Standley? > > He translated the file: /es/faq/languages.xml under the account: Anonymous > #198 > I talked with him and he is interested in continuous collaboration into the > Spanish translation project. > > Thanks! > > Yago > > > On Mon, Jul 19, 2010 at 7:11 AM, Harold Stanley Rivas Martinez < > hstan...@salnet.net> wrote: > >> I would like to have an SVN account to help with the Spanish translation >> of the PHP Manual. Yago Ferrer is who refer to me here. >> > > > > -- > Yago Ferrer > -- Yago Ferrer -- Yago Ferrer
<?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 297557 Maintainer: TheCrOw Status: ready$ --> <chapter xml:id="faq.using" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <title>Usando PHP</title> <titleabbrev>Usando PHP</titleabbrev> <para> Esta sección reune varios errores comunes a los que se puede enfrentar mientras se escriben scripts en PHP. </para> <qandaset> <qandaentry xml:id="faq.using.parameterorder"> <question> <para> No puedo recordar el orden de los parámetros de las funciones de PHP, son aleatorias? </para> </question> <answer> <para> PHP es un pegamento que une cientos de librerías externas, y esto a veces lo complica. Por eso, una simple regla de oro es la siguiente: </para> <para> Los parámetros de la <link linkend="book.array">función Array</link> están ordenados como "<emphasis>aguja, pajar</emphasis>" mientras que las <link linkend="book.strings">funciones de Cadena</link> son lo contrario, "<emphasis>pajar, aguja</emphasis>". </para> </answer> </qandaentry> <qandaentry xml:id="faq.using.anyform"> <question> <para> Me gustaría escribir un script genérico en PHP que pueda manejar datos que vengan de cualquier forma. Como puedo saber que variables pasadas por el método POST están disponibles? </para> </question> <answer> <para> PHP ofrece muchas <link linkend="language.variables.predefined"> variables predefinidas</link>, como la variable superglobal <varname> $_POST</varname>. Se puede recorrer la variable $_POST como una matriz ya que es una matriz asociativa de todos los valores POSTeados. Por ejemplo, vamos a recorrer simplemente con &foreach;, revisar los valores <function>vacíos</function>, e imprimirlos todos. <programlisting role="php"> <![CDATA[ <?php $empty = $post = array(); foreach ($_POST as $varname => $varvalue) { if (empty($varvalue)) { $empty[$varname] = $varvalue; } else { $post[$varname] = $varvalue; } } print "<pre>"; if (empty($empty)) { print "Ninguno de los valores POSTeados esta vacío, se envió:\n"; var_dump($post); } else { print "Tenemos " . count($empty) . " valores vacíos\n"; print "posteados:\n"; var_dump($post); print "Vacíos:\n"; var_dump($empty); exit; } ?> ]]> </programlisting> </para> ¬e.superglobals; </answer> </qandaentry> <qandaentry xml:id="faq.using.addslashes"> <question> <para> Necesito convertir todas las comillas simples (') a barras invertidas seguidas de comillas simples (\'). Como puedo hacer esto con expresiones regulares? También me gustaría convertir " a \" y \ a \\. </para> </question> <answer> <para> Asumiendo que esto es para una base de datos, se puede usar el mecanismos que viene con la base de datos. Por ejemplo, usar la función <function>mysql_real_escape_string</function> con MYSQL y <function>pg_escape_string</function> con PostgreSQL. Hay también funciones genéricas como <function>addslashes</function> y <function>stripslashes</function>, que son más comunes en código PHP antiguo. </para> ¬e.magicquotes.gpc; </answer> </qandaentry> <qandaentry xml:id="faq.using.stripslashes"> <question> <para> Todas mis " se convirtieron en \" y mis ' en \', como puedo deshacerme de todas esas barras no deseadas? Cómo y porqué están ahí? </para> </question> <answer> <para> Lo mas probable es que esas barras invertidas existen porque la directiva de PHP <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link> está activada. Esta es una característica antigua de PHP, y debería deshabilitarse y no usarse mas. Pero, la función <function>stripslashes</function> podría usarse para eliminar las barras invertidas de una <type>cadena</type>. </para> ¬e.magicquotes.gpc; </answer> </qandaentry> <qandaentry xml:id="faq.register-globals"> <question> <para> Cómo me afecta la directiva register_globals de PHP? </para> </question> <answer> <para> En primer lugar, una explicación de lo que hace la configuración ini. Digamos que la siguiente URL esta siendo usada: <literal>http://example.com/foo.php?animal=cat</literal> y en el archivo <filename>foo.php</filename> tuviéramos el siguiente código PHP: </para> <para> <programlisting role="php"> <![CDATA[ <?php //Es preferible usar $_GET aqui echo $_GET['animal']; // para que la variable $animal exista, register_globlas debe estar en ON // NO SE DEBE HACER ESTO echo $animal; // Esto aplica a todas las variables, inclusve a las variables $_SERVER echo $_SERVER['PHP_SELF']; // de nuevo, para que $PHP_SELF exista, register_globals debe estar en ON // NO SE DEBE HACER ESTO echo $PHP_SELF; ?> ]]> </programlisting> </para> <!-- FIXME PHP_6 register_globals removal alert --> <para> El código anterior demuestra como register_globals crea varias variables. Por años este tipo de código ha sido mal visto, y por años ha sido deshabilitado por defecto. Hay que tener en cuenta que PHP eventualmente removerá esta característica obsoleta. Así que aunque la mayoría de hospedajes web deshabilitan register_globals, aun hay artículos desactualizados, tutoriales y libros que lo requieren en ON. </para> <para> Ver también los siguientes recursos para información adicional: <simplelist> <member>La directiva <link linkend="ini.register-globals">register_globals</link></member> <member>El <link linkend="security.globals">capítulo de seguridad acerca de register globals</link></member> <member><link linkend="language.variables.external">Manejando variables externas</link></member> <member>Usar <link linkend="language.variables.superglobals">superglobals</link> en su lugar</member> </simplelist> </para> <note> <para> En el ejemplo anterior, usamos una <acronym>URL</acronym> que contiene un QUERY_STRING. El paso de la información se hace a través de una solicitud HTTP GET, y es esta la razón por la que se usa la variables superglobal <varname>$_GET</varname>. </para> </note> </answer> </qandaentry> <qandaentry xml:id="faq.using.wrong-order"> <question> <para> Cuando hago lo siguiente, la salida se imprime en el orden equivocado: <programlisting role="php"> <![CDATA[ <?php function myfunc($argument) { echo $argument + 10; } $variable = 10; echo "myfunc($variable) = " . myfunc($variable); ?> ]]> </programlisting> ¿Que esta pasando? </para> </question> <answer> <para> Para habilitar que las funciones entreguen como resultado expresiones (como concatenarse con otras cadenas como en el ejemplo anterior), se necesita el valor <function>return</function>, no la función <function>echo</function>. </para> </answer> </qandaentry> <qandaentry xml:id="faq.using.newlines"> <question> <para> ¿Hey, que le pasa a mis líneas nuevas? <programlisting role="php"> <![CDATA[ <pre> <?php echo "Esto debería ser la primer línea."; ?> <?php echo "Esto debería mostrarse después de la línea anterior."; ?> </pre> ]]> </programlisting> </para> </question> <answer> <para> "?>\n" (donde \n significa una nueva línea). Entonces, en el En PHP, el fin para un bloque de código es o bien "?>" o ejemplo anterior, las sentencias a las que se les dio el echo estarán en una línea, porque PHP omite las líneas nuevas después del final de un bloque. Esto significa que se necesita agregar una línea extra después de cada bloque de código PHP para lograr que se imprima una nueva línea. </para> <para> ¿Porqué PHP hace esto? por que cuando se formatea HTML normal, esto normalmente hace la vida más fácil por que no se quiere esa nueva línea, pero se tendrían que crear líneas extremadamente largas o en otro caso hacer el código fuente de la pagina ilegible para que tenga efecto. </para> </answer> </qandaentry> <qandaentry xml:id="faq.using.headers-sent"> <question> <para> Recibo el mensaje 'Warning: Cannot send session cookie - headers already sent...' o 'Cannot add header information - headers already sent...'. </para> </question> <answer> <para> Las funciones <function>header</function>, <function>setcookie</function>, y las funciones de <link linkend="ref.session">sesión</link> necesitan agregar encabezados (headers) a la salida pero los encabezados solo pueden enviarse antes que cualquier otro contenido. No deben de haber salidas antes de usar esas funciones, salidas como HTML. La función <function>headers_sent</function> chequeará si tu script ya ha enviado los headers y mirará también las <link linkend="ref.outcontrol">Funciones de control de salidas</link>. </para> </answer> </qandaentry> <qandaentry xml:id="faq.using.header"> <question> <para> Necesito accesar a información en las solicitudes de encabezados directamente. Como puedo hacerlo? </para> </question> <answer> <para> La función <function>getallheaders</function> hará esto si se ésta ejecutando PHP como un módulo de Apache. Entonces, el siguiente código mostrará todas las peticiones a los encabezados: <programlisting role="php"> <![CDATA[ <?php $headers = getallheaders(); foreach ($headers as $name => $content) { echo "headers[$name] = $content<br />\n"; } ?> ]]> </programlisting> </para> <para> Ver también <function>apache_lookup_uri</function>, <function>apache_response_headers</function>, y <function>fsockopen</function> </para> </answer> </qandaentry> <qandaentry xml:id="faq.using.authentication"> <question> <para> Cuando intento usar autenticación con IIS obtengo 'No Input file specified'. (no hay archivo de entrada especificado). </para> </question> <answer> <para> El modelo de seguridad de IIS falla aquí. Este es un problema común de todos los programas CGI que se ejecutan bajo IIS. Una solución es crear un archivo plano HTML (no interpretado por PHP) como la página de entrada en el directorio autenticado. Entonces usa el tag META para direccionar a la página en PHP, o ten un enlace a la página en PHP. Entonces PHP reconocerá la autenticación correctamente. Con el módulo ISAPI, esto no es un problema. Esto no debería tener efecto con otros NT web servers. Para más información, ver: <link xlink:href="&url.iis;">&url.iis;</link> y la sección del manual <link linkend="features.http-auth">Autenticación HTTP</link>. </para> </answer> </qandaentry> <qandaentry xml:id="faq.using.iis.sharing"> <question> <para> Windows: No puedo accesar archivos compartidos en otra computadora usando IIS </para> </question> <answer> <para> Se tiene que cambiar el <literal>Go to Internet Information Services</literal>. Se debe localizar el archivo PHP e ir a sus propiedades. Luego ir al tab <literal>Seguridad de Archivos</literal> y, <literal>Editar -< Acceso anónimo y control de autenticación</literal>. </para> <para> Se puede corregir el problema ya sea deshabilitando <literal>Acceso anónimo</literal> y dejando <literal>Autenticación Integrada de Windows</literal> marcado, o, marcando <literal>Acceso anónimo</literal> y editando al usuario ya que no tendría que tener acceso. </para> </answer> </qandaentry> <qandaentry xml:id="faq.using.mixml"> <question> <para> ¿Como se supone que mezclaría XML y PHP? no le parecen mis tags <?xml! </para> </question> <answer> <para> Con el fin de integrar directamente <?xml en el código PHP, se tiene que deshabilitar los tags cortos en la directiva de PHP <link linkend="ini.short-open-tag">short_open_tags</link> poniéndolo a <literal>0</literal>. No se puede establecer esta directiva con <function>ini_set</function>. Independientemente de que <link linkend="ini.short-open-tag">short_open_tags</link> este On u Off, se puede hacer algo como: <literal><?php echo '<?xml'; ?></literal>. La directiva por defecto es <literal>On</literal>. </para> </answer> </qandaentry> <qandaentry xml:id="faq.using.variables"> <question> <para> Donde puedo encontrar una lista completa de variables disponibles para mi en PHP? </para> </question> <answer> <para> Leer la pagina del manual <link linkend="language.variables.predefined"> variables predefinidas</link> el cual incluye una lista parcial de variables predefinidas disponibles para tu script. Una lista completa de variables disponibles (y mucha mas información) puede ser vista llamando a la función <function>phpinfo</function>. Hay que asegurarse de leer la sección del manual <link linkend="language.variables.external">variables desde fuera de PHP</link> el cuál describe escenarios comunes para variables externas, como por ejemplo desde un formulario HTML, una Cookie, y una URL. </para> ¬e.registerglobals; </answer> </qandaentry> <qandaentry xml:id="faq.using.freepdf"> <question> <para> ¿Como puedo generar archivos PDF sin usar librerías no libres o librerías comerciales como <link linkend="ref.pdf">PDFLib</link>? Me gustaría algo que sea libre y no necesite librerías PDF externas. </para> </question> <answer> <para> Hay algunas alternativas escritas en PHP como <link xlink:href="&url.pdf.fpdf;">FPDF</link> y <link xlink:href="&url.pdf.tcpdf;">TCPDF</link>. </para> <para> También esta la extensión <link linkend="book.haru">Haru</link> que usa la librería externa libHaru. </para> </answer> </qandaentry> <qandaentry xml:id="faq.using.cgi-vars"> <question> <para> Estoy intentando accesar a una de las variables estándar CGI (como <varname>$DOCUMENT_ROOT</varname> o <varname>$HTTP_REFERER</varname>) en una función definida por el usuario, y parece que no puede encontrarla. Que esta mal? </para> </question> <answer> <para> Es importante realizar que la directiva de PHP <link linkend="ini.register-globals">register_globals</link> tenga efectos en el servidor y las variables del entorno. Cuando register_globals = off (el valor por defecto desde PHP 4.2.0), <varname>$DOCUMENT_ROOT</varname> no existe. En su lugar, se debe usar <varname>$_SERVER['DOCUMENT_ROOT']</varname>. Si register_globals = on entonces las variables <varname>$DOCUMENT_ROOT</varname> y <varname>$GLOBALS['DOCUMENT_ROOT']</varname> también existirán. </para> <para> Si se esta seguro de que register_globals = on y se pregunta porque <varname>$DOCUMENT_ROOT</varname> no esta disponible para las funciones, es por que son como las otras variables y requerirán la variable <literal>global $DOCUMENT_ROOT</literal> dentro de la función. Ver también la página del manual en <link linkend="language.variables.scope">ámbito de las variables</link>. Es preferible hacer el código con register_globals = off. </para> ¬e.superglobals; </answer> </qandaentry> <qandaentry xml:id="faq.using.shorthandbytes"> <question> <para> Algunas directivas de PHP podrían recibir valores en bytes, en lugar de solo valores <type>enteros</type>. Cuales son las opciones de bytes disponibles? Y puedo usarlas fuera de &php.ini;? </para> </question> <answer> <para> Las opciones disponibles son K (por Kilobytes), M (por Megabytes) y G (por Gigabytes; disponibles desde PHP 5.1.0), ellos son sensibles a mayúsculas y minúsculas. Cualquier otra cosa, asume bytes. <literal>1M</literal> es igual a un Megabyte o <literal>1048576</literal> bytes. <literal>1K</literal> es igual a un Kilobyte o <literal>1024</literal> bytes. No se debería usar esas abreviaciones fuera de &php.ini;, en su lugar se usa un valor <type>entero</type> de bytes. Ver la documentación de <function>ini_get</function> para ver un ejemplo de como convertir esos valores. </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:"~/.phpdoc/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 -->
<?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 300233 Maintainer: TheCrOw Status: ready$ --> <!-- Reviewed: 02 --> <chapter xml:id="faq.languages" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <title>PHP y otros lenguajes</title> <titleabbrev>PHP y otros lenguajes</titleabbrev> <para> PHP es el mejor lenguaje para programación WEB, pero que pasa con otros lenguajes? </para> <qandaset> <qandaentry xml:id="faq.languages.asp"> <question> <para>PHP vs. ASP?</para> </question> <answer> <para> ASP no es realmente un lenguaje en si, pero es un acrónimo para Active Server Pages; los actuales lenguajes usados para programar ASP incluyen Visual Basic Script, JScript, and C#, entre otros. El mayor inconveniente de ASP es ser un sistema propietario y que es nativo y usado únicamente por Microsoft Internet Information Server (IIS). Esto limita su disponibilidad únicamente a servidores con WIN32. Hay un par de proyectos que permiten a ASP funcionar con otros ambientes y webservers. <link xlink:href="&url.instantasp;">InstantASP</link> de<link xlink:href="&url.halcyon;">Halcyon</link> (Comercial) Chili!Soft ASP de <link xlink:href="&url.chilisoft;">Chili!Soft</link> (Comercial) y <link xlink:href="&url.mono;">Mono</link> (open-source). Se dice que ASP es mas lento y mas incomodo que PHP, con menos estabilidad. Una de las ventajas de ASP es que, al usar VBScript, es relativamente fácil de aprender si se es bueno con Visual Basic. ASP es habilitado por defecto en IIS, haciéndolo fácil de obtener y hacerlo funcionar. Sin embargo, los componentes hechos en ASP son realmente limitados, así que si se necesitan características "avanzadas" (como interactuar) con servidores FTP), se necesitará comprar componentes adicionales. </para> </answer> </qandaentry> <qandaentry xml:id="faq.languages.coldfusion"> <question> <para>PHP vs. ColdFusion?</para> </question> <answer> <para> Se dice comúnmente que PHP es más rápido y más eficiente para tareas de programación complejas, así como para probar nuevas ideas, y es considerado por muchos el más estable y el que usa menos recursos intensivos. Mientras que ColdFusion tuvo en algún momento un buen manejo de los errores, abstracción de bases de datos, y manejo de fechas, la abstracción de bases de datos dejo que desear cuando fue abordado en PHP 4. Una particular cualidad que es listada como una de las fuerzas de ColdFusion es su excelente motor de búsqueda, pero muchos argumentos sólidos sugieren que un motor de búsqueda no es algo que debería ser incluido en un lenguaje de scripts para la WEB. Además, PHP se ejecuta en casi todas las plataformas modernas que existen, mientras que ColdFusion esta disponible únicamente para Windows, Solaris, Linux, MacOS, y AIX. ColdFusion tiene un buen IDE y es generalmente rápido para dar resultados para los nuevos programadores, mientras que PHP requiere de más conocimiento de programación. ColdFusion ha sido diseñado teniendo en mente a los que no son programadores, mientras que PHP esta enfocado en los programadores. </para> </answer> </qandaentry> <qandaentry xml:id="faq.languages.perl"> <question> <para>PHP vs. Perl?</para> </question> <answer> <para> La mayor ventaja de PHP sobre Perl es que PHP fue diseñado para hacer scripts para la web, mientras que Perl fue diseñado para muchas otras cosas. Por esto, Perl puede volverse complicado. La flexibilidad / complejidad de Perl pueden hacerlo de difícil colaboración por parte de desarrolladores de diferentes niveles. PHP es menos confuso y estricto en su formato sin perder la flexibilidad. PHP es también fácil de integrar en un HTML existente que Perl. En gran medida, PHP tiene todas las bondades de Perl - construcciones, sintaxis, etc - sin hacer las cosas complicadas como Perl. Además, el interprete de la linea de comandos de PHP (CLI por sus siglas en ingles) es suficientemente poderoso para realizar tareas de alto nivel en la misma forma en que Perl ha sido tradicionalmente empleado. Perl es uno de los lenguajes mas usados y un verdadero lenguaje, y se ha mantenido firme desde los 80's, pero PHP ha madurado y evolucionado rápido, y continúa haciendo un progreso fantástico. </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:"~/.phpdoc/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 -->