mirror of
https://github.com/php/doc-es.git
synced 2026-03-24 07:22:16 +01:00
466 lines
17 KiB
XML
466 lines
17 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- EN-Revision: 876557ae38f6ca5035618f7cea48ca627118b437 Maintainer: PhilDaiguille Status: ready -->
|
|
<!-- Reviewed: no Maintainer: Marqitos -->
|
|
<chapter xml:id="tutorial" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<title>Una introducción a PHP</title>
|
|
|
|
<para>
|
|
En esta sección, se pretende ilustrar los principios básicos
|
|
de PHP en una breve introducción. Este capítulo trata únicamente
|
|
de la creación de páginas web dinámicas con PHP, dejando de lado
|
|
temporalmente las otras posibilidades de PHP. Consulte la sección
|
|
<link linkend="intro-whatcando">¿Qué puede hacer PHP?</link> para
|
|
más información.
|
|
</para>
|
|
<para>
|
|
Las páginas web que utilizan PHP se tratan como páginas HTML clásicas,
|
|
y se pueden crear, editar y borrar de la misma manera que normalmente se crean
|
|
las páginas HTML clásicas.
|
|
</para>
|
|
|
|
<section xml:id="tutorial.firstpage">
|
|
<title>Su primera página PHP</title>
|
|
<simpara>
|
|
Este tutorial presupone que PHP ya está instalado.
|
|
Las instrucciones de instalación se pueden encontrar en la
|
|
<link xlink:href="&url.php.downloads;">página de descargas</link>.
|
|
</simpara>
|
|
<para>
|
|
Cree un fichero llamado <filename>hola.php</filename>
|
|
con el siguiente contenido :
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Nuestro primer script PHP : <filename>hola.php</filename></title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
echo "¡Hola Mundo!";
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<simpara>
|
|
Usando su terminal, navegue hasta el directorio que contiene este fichero y
|
|
inicie un servidor de desarrollo con el siguiente comando:
|
|
</simpara>
|
|
<programlisting role="shell">
|
|
<![CDATA[
|
|
php -S localhost:8000
|
|
]]>
|
|
</programlisting>
|
|
<simpara>
|
|
Utilice su navegador para acceder al fichero utilizando la URL de su servidor web, terminando
|
|
por la referencia al fichero <literal>/hola.php</literal>.
|
|
De acuerdo con el comando ejecutado anteriormente, la URL será
|
|
<literal>http://localhost:8000/hello.php</literal>.
|
|
Si todo está correctamente configurado, este fichero será analizado por PHP
|
|
y se verá el mensaje "¡Hola Mundo!" en su navegador.
|
|
</simpara>
|
|
<simpara>
|
|
PHP puede ser integrado en una página web HTML normal. Esto significa que, en su documento HTML,
|
|
se pueden escribir instrucciones PHP, como se demuestra en el siguiente ejemplo:
|
|
</simpara>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Prueba PHP</title>
|
|
</head>
|
|
<body>
|
|
<?php echo '<p>Hola mundo</p>'; ?>
|
|
</body>
|
|
</html>
|
|
]]>
|
|
</programlisting>
|
|
<simpara>
|
|
Esto producirá el siguiente resultado :
|
|
</simpara>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Prueba PHP</title>
|
|
</head>
|
|
<body>
|
|
<p>Hola mundo</p>
|
|
</body>
|
|
</html>
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Este programa es extremadamente simple y no se necesita PHP
|
|
para crear una página web como esta. Solo muestra
|
|
<literal>Hola mundo</literal>, gracias a la función
|
|
<function>echo</function>
|
|
de PHP. Note que este fichero <emphasis>no necesita ser ejecutable</emphasis>
|
|
ni nada más, en ningún caso. El servidor sabe que este fichero necesita ser interpretado
|
|
por PHP, porque se utiliza la extensión ".php", y el servidor está configurado para
|
|
pasarlos a PHP. Considere esto como una página HTML normal que contiene una serie
|
|
de etiquetas especiales que le permitirán realizar muchas cosas interesantes.
|
|
</para>
|
|
|
|
<para>
|
|
El punto importante de este ejemplo era mostrar el formato de las
|
|
etiquetas especiales PHP. Hemos utilizado aquí
|
|
<literal><?php</literal> para indicar el inicio de la etiqueta PHP.
|
|
Luego, introdujimos los comandos PHP y cerramos las etiquetas
|
|
PHP con <literal>?></literal>. Se puede pasar del modo PHP
|
|
al modo HTML y viceversa, de esta manera, y a su gusto. Para más
|
|
información, lea la sección del manual sobre la
|
|
<link linkend="language.basic-syntax">sintaxis básica de PHP</link>.
|
|
</para>
|
|
|
|
<note>
|
|
<title>Una nota sobre los retornos de línea</title>
|
|
<para>
|
|
Los retornos de línea tienen un significado mínimo en HTML, sin embargo,
|
|
siempre es una buena idea hacer que su HTML sea lo más bonito y cercano
|
|
posible añadiendo retornos de línea. Un retorno de línea que sigue inmediatamente a una etiqueta de cierre PHP (<literal>?></literal>)
|
|
será eliminado por PHP. Esto puede ser realmente muy útil cuando se insertan varios bloques PHP o ficheros incluidos que contienen PHP que
|
|
no está destinado a mostrar nada. Al mismo tiempo, puede ser confuso. Se puede añadir un espacio después de la etiqueta de cierre
|
|
PHP (<literal>?></literal>) para forzar el espacio y un retorno de línea a mostrarse, o se puede añadir explícitamente un retorno de línea
|
|
en el último echo/print de su bloque PHP.
|
|
</para>
|
|
</note>
|
|
|
|
<note>
|
|
<title>Una nota sobre los editores de texto</title>
|
|
<para>
|
|
Existen muchos editores de texto y entornos de
|
|
desarrollo (IDE) que se pueden utilizar para crear, editar
|
|
y gestionar sus aplicaciones PHP. Una lista parcial de estas herramientas
|
|
se mantiene en la dirección
|
|
<link xlink:href="&url.phpeditorlist;">PHP Editor's List</link>.
|
|
Si desea recomendar un editor en particular, visite
|
|
esta página y pida al webmaster que añada su editor. Tener al menos
|
|
un editor de texto con coloración de sintaxis es altamente recomendado.
|
|
</para>
|
|
</note>
|
|
|
|
<note>
|
|
<title>Una nota sobre los procesadores de texto</title>
|
|
<para>
|
|
Los procesadores de texto como StarOffice Writer, Microsoft Word y
|
|
Abiword son muy malas opciones para editar scripts PHP.
|
|
Si desea utilizar uno de ellos, a pesar de todo, para probar sus
|
|
scripts, debe asegurarse de que guarda los ficheros en formato
|
|
de texto solo (<emphasis>plain text</emphasis>) : de lo contrario, PHP no será capaz de leer
|
|
y ejecutar estos scripts.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
Ahora que ha creado un script PHP que funciona, es el momento
|
|
de crear el mejor script PHP ! Haga una llamada a la función
|
|
<function>phpinfo</function> y verá mucha información
|
|
interesante sobre su sistema y su configuración como las
|
|
<link
|
|
linkend="language.variables.predefined">variables predefinidas disponibles</link>,
|
|
los módulos PHP cargados así como la <link linkend="configuration">configuración</link>.
|
|
Tómese el tiempo para revisar esta información importante.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Recuperación de la información del sistema desde PHP</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
phpinfo();
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
</section>
|
|
|
|
<section xml:id="tutorial.useful">
|
|
<title>Trucos prácticos</title>
|
|
<para>
|
|
Realicemos ahora algo más potente. Vamos
|
|
a verificar el tipo de navegador que el visitante de nuestro sitio utiliza.
|
|
Para ello, accederemos a la información que el navegador
|
|
del visitante nos envía, durante su petición HTTP. Esta información
|
|
se almacena en una <link linkend="language.variables">variable</link>.
|
|
Las variables son fáciles de identificar, ya que todas comienzan
|
|
con un signo dólar. La variable que nos interesa aquí es
|
|
<varname>$_SERVER['HTTP_USER_AGENT']</varname>.
|
|
</para>
|
|
<note>
|
|
<para>
|
|
<varname>$_SERVER</varname> es una
|
|
variable especial de PHP, que contiene toda la información
|
|
relativa al servidor web. Es una variable reservada de PHP,
|
|
y una superglobal. Consulte las páginas del manual que tratan de las
|
|
<link linkend="language.variables.superglobals">Auto-globales</link>
|
|
(también conocidas como super-globales).
|
|
</para>
|
|
</note>
|
|
<para>
|
|
Para mostrar esta variable, simplemente se puede hacer :
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Mostrar el contenido de una variable (elemento de array)</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
echo $_SERVER['HTTP_USER_AGENT'];
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Un resultado posible del script podría ser :
|
|
</para>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
Mozilla/5.0 (Linux) Firefox/112.0
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Hay muchos <link linkend="language.types">tipos</link> de
|
|
variables disponibles en PHP. En el ejemplo anterior, hemos mostrado
|
|
un elemento de una variable <link linkend="language.types.array">Array</link>.
|
|
Los arrays pueden ser muy útiles.
|
|
</para>
|
|
<para>
|
|
<varname>$_SERVER</varname> es simplemente una variable que está automáticamente
|
|
disponible en su script. Una lista de todas las variables que están
|
|
disponibles se proporciona en la sección
|
|
<link linkend="reserved.variables">Variables reservadas</link> o también se puede obtener una lista completa leyendo la salida de la función
|
|
<function>phpinfo</function> utilizada en el ejemplo de la sección anterior.
|
|
</para>
|
|
<para>
|
|
Se pueden añadir varios comandos PHP en una etiqueta PHP, y crear
|
|
pequeños bloques de código que realizan operaciones más complejas
|
|
que un simple mostrado. Por ejemplo, si queremos verificar que el
|
|
navegador es de la familia Firefox, se puede
|
|
hacer esto :
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Ejemplo utilizando las
|
|
<link linkend="language.control-structures">estructuras de control</link> y
|
|
las <link linkend="language.functions">funciones</link></title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) {
|
|
echo 'Está utilizando Firefox.';
|
|
}
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
El resultado de este script, si está utilizando Firefox, será :
|
|
</para>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
Está utilizando Firefox.
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Aquí, introducimos varios nuevos conceptos. Tenemos una
|
|
estructura <link linkend="control-structures.if">if</link>.
|
|
Si está familiarizado con las sintaxis básicas del lenguaje C, esto
|
|
no le sorprenderá. Si no conoce lo suficiente el lenguaje C o
|
|
otro lenguaje cuya sintaxis sea similar a la anterior, sería mejor
|
|
que leyera una introducción a PHP, y asimilara
|
|
los primeros capítulos, o bien lea el capítulo dedicado a
|
|
<link linkend="langref">la referencia del lenguaje</link>.
|
|
</para>
|
|
<para>
|
|
El segundo concepto que hemos introducido es la función <function>str_contains</function>.
|
|
<function>str_contains</function> es una función interna de PHP, que determina
|
|
la presencia de una cadena dada en otra. En nuestro caso, hemos buscado la cadena <literal>"Firefox"</literal> en la cadena
|
|
<varname>$_SERVER['HTTP_USER_AGENT']</varname>.
|
|
De lo contrario, devuelve &false;.
|
|
Si devuelve &true; la estructura <link linkend="control-structures.if">if</link>
|
|
recibe &true; y el código entre llaves {} se ejecuta. De lo contrario, el código no se
|
|
ejecuta. No dude en
|
|
experimentar con otros ejemplos, utilizando
|
|
<link linkend="control-structures.if">if</link>,
|
|
<link linkend="control-structures.else">else</link>, y otras
|
|
funciones como <function>strtoupper</function> y
|
|
<function>strlen</function>. Cada página de la documentación también contiene ejemplos. Si no está seguro del uso de estas funciones, debe leer
|
|
la página del manual
|
|
"<link linkend="about.prototypes">cómo leer una definición de función</link>"
|
|
así como la <link linkend="language.functions">sección sobre las funciones PHP</link>.
|
|
</para>
|
|
<para>
|
|
Ahora podemos avanzar y mostrarle cómo utilizar el modo PHP,
|
|
en medio del código HTML :
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Pasar del modo PHP al modo HTML y viceversa</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) {
|
|
?>
|
|
<h3>str_contains() ha devuelto true</h3>
|
|
<p>Está utilizando Firefox</p>
|
|
<?php
|
|
} else {
|
|
?>
|
|
<h3>str_contains() ha devuelto false</h3>
|
|
<p>No está utilizando Firefox</p>
|
|
<?php
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Un ejemplo de resultado obtenido en este script es :
|
|
</para>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
<h3>str_contains() ha devuelto true</h3>
|
|
<p>Está utilizando Firefox</p>
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
En lugar de utilizar un comando <function>echo</function>, para mostrar
|
|
texto, se puede utilizar código HTML puro. El punto importante a tener en cuenta
|
|
aquí es que la lógica de programación se conserva. Solo uno de los dos
|
|
bloques HTML se mostrará, según el resultado de la función <function>str_contains</function>.
|
|
En otras palabras, depende de si la cadena <literal>Firefox</literal>
|
|
ha sido encontrada o no.
|
|
</para>
|
|
</section>
|
|
|
|
<section xml:id="tutorial.forms">
|
|
<title>Utilizar un formulario</title>
|
|
<para>
|
|
Uno de los puntos fuertes de PHP es su capacidad para manejar formularios.
|
|
El concepto básico que es importante entender es que todos los
|
|
campos de un formulario estarán automáticamente disponibles en el
|
|
script PHP de acción. Lea el capítulo del manual relativo a las
|
|
<link linkend="language.variables.external">variables desde fuentes externas a PHP</link>
|
|
para más información y ejemplos sobre cómo utilizar los
|
|
formularios. Aquí hay un ejemplo de formulario HTML :
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Un formulario HTML simple</title>
|
|
<programlisting role="html">
|
|
<![CDATA[
|
|
<form action="action.php" method="post">
|
|
<label>Su nombre :</label>
|
|
<input name="nombre" id="nombre" type="text" />
|
|
|
|
<label>Su edad :</label>
|
|
<input name="edad" id="edad" type="number" /></p>
|
|
|
|
<button type="submit">Validar</button>
|
|
</form>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
No hay nada especial en este formulario. Está en HTML
|
|
puro, sin ninguna configuración especial. Cuando el visitante
|
|
rellena el formulario, y hace clic en el botón OK, se llama al fichero <filename>action.php</filename>. En este
|
|
fichero, se puede escribir el siguiente script :
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Mostrar datos de un formulario</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
Hola, <?php echo htmlspecialchars($_POST['nombre']); ?>.
|
|
Tienes <?php echo (int) $_POST['edad']; ?> años.
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Aquí está el resultado que podría obtener, según
|
|
los valores que haya introducido :
|
|
</para>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
Hola Juan.
|
|
Tienes 29 años.
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Aparte de las partes <function>htmlspecialchars</function> y
|
|
<literal>(int)</literal>, este script solo hace cosas evidentes.
|
|
<function>htmlspecialchars</function> se asegura de que todos los caracteres
|
|
especiales HTML se codifiquen correctamente para evitar inyecciones
|
|
de etiquetas HTML y de Javascript en sus páginas. Para la edad, dado que
|
|
sabemos que es un entero, se puede
|
|
<link linkend="language.types.typecasting">convertir</link> en un
|
|
&integer;. También se puede pedir a PHP que lo haga
|
|
automáticamente por usted utilizando la extensión
|
|
<link linkend="ref.filter">filter</link>.
|
|
Las variables <varname>$_POST['nombre']</varname> y
|
|
<varname>$_POST['edad']</varname> son creadas automáticamente por PHP.
|
|
Un poco antes en este tutorial, hemos utilizado la variable
|
|
<varname>$_SERVER</varname>, una superglobal. Ahora, hemos introducido otra superglobal <varname>$_POST</varname>
|
|
que contiene todos los datos enviados por el método POST. Tenga en cuenta que
|
|
en nuestro formulario, hemos elegido el <emphasis>método</emphasis> POST.
|
|
Si hubiéramos utilizado el <emphasis>método</emphasis> GET entonces nuestro formulario
|
|
habría colocado esta información en la variable <varname>$_GET</varname>,
|
|
otra superglobal. También se puede utilizar la variable
|
|
<varname>$_REQUEST</varname>, si no desea preocuparse por el método utilizado. Contiene
|
|
una mezcla de los datos de GET, POST, COOKIE y FILE.
|
|
</para>
|
|
</section>
|
|
|
|
<section xml:id="tutorial.whatsnext">
|
|
<title>¿Y después?</title>
|
|
<para>
|
|
Con lo que sabe, ahora es capaz de comprender
|
|
lo esencial de la documentación PHP, y los diferentes scripts de ejemplo
|
|
disponibles en los archivos.
|
|
</para>
|
|
<para>
|
|
Diferentes presentaciones de las capacidades de PHP están disponibles en el
|
|
sitio de las conferencias PHP :
|
|
<link xlink:href="&url.php.talks;">&url.php.talks;</link>.
|
|
</para>
|
|
</section>
|
|
</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
|
|
-->
|