1
0
mirror of https://github.com/php/doc-es.git synced 2026-03-24 07:22:16 +01:00
Files
archived-doc-es/chapters/tutorial.xml
Carlos Carrasco Varas a75836f28e A question mark is added. (#314)
A question mark is added in line 12
2025-11-14 08:47:15 +01:00

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>&lt;?php</literal> para indicar el inicio de la etiqueta PHP.
Luego, introdujimos los comandos PHP y cerramos las etiquetas
PHP con <literal>?&gt;</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>?&gt;</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>?&gt;</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
-->