<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/tutorial.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'tutorial.useful.php',
    1 => 'Algo &uacute;til',
    2 => 'Algo &uacute;til',
  ),
  'up' => 
  array (
    0 => 'tutorial.php',
    1 => 'Un tutorial sencillo',
  ),
  'prev' => 
  array (
    0 => 'tutorial.firstpage.php',
    1 => 'Su primera p&aacute;gina habilitada para PHP',
  ),
  'next' => 
  array (
    0 => 'tutorial.forms.php',
    1 => 'Tratar con formularios',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'chapters/tutorial.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="tutorial.useful" class="section">
   <div class="info"><h1 class="title">Algo útil</h1></div>
   <p class="para">
    Ahora hagamos algo más útil. Vamos a comprobar qué tipo de navegador
    está usando el visitante. Para ello, comprobamos la cadena del agente de
    usuario que el navegador envía como parte de la petición HTTP. Esta
    información se almacena en una <a href="language.variables.php" class="link">variable</a>.
    Las variables siempre comienzan con un signo de dólar en PHP. La variable que
    nos interesa ahora es <var class="varname"><a href="reserved.variables.server.php" class="classname">$_SERVER['HTTP_USER_AGENT']</a></var>.
   </p>
   <blockquote class="note"><p><strong class="note">Nota</strong>: 
    <p class="para">
     <var class="varname"><a href="reserved.variables.server.php" class="classname">$_SERVER</a></var> es una variable especial reservada de PHP que
     contiene toda la información del servidor web. Se la conoce como superglobal.
     Consulte la página relacionada del manual sobre
     <a href="language.variables.superglobals.php" class="link">superglobals</a> para
     obtener más información.
    </p>
   </p></blockquote>
   <p class="para">
    Para mostrar esta variable, puede hacer simplemente:
   </p>
   <p class="para">
    <div class="example" id="example-1">
     <div class="info"><p><strong>Ejemplo #1 Mostrar una variable (elemento de array)</strong></p></div>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'HTTP_USER_AGENT'</span><span style="color: #007700">];<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>
     Una salida de ejemplo de este script podría ser:
    </p></div>
    <div class="example-contents screen">
<div class="cdata"><pre>
Mozilla/5.0 (Linux) Firefox/112.0
</pre></div>
    </div>
   </div>
   </p>
   <p class="para">
    Hay muchos <a href="language.types.php" class="link">tipos</a> de variables
    disponibles en PHP. En el ejemplo anterior imprimimos un elemento de un
    <a href="language.types.array.php" class="link">array</a> variable. Los arrays pueden
    ser muy útiles.
   </p>
   <p class="para">
    <var class="varname"><a href="reserved.variables.server.php" class="classname">$_SERVER</a></var> es solo una variable que PHP hace
    automáticamente disponible. Puede ver una lista en la sección
    <a href="reserved.variables.php" class="link">Variables Reservadas</a> del manual
    o puede obtener una lista completa de ellas mirando la salida de la
    función <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span> usada en el ejemplo de la sección
    anterior.
   </p>
   <p class="para">
    Puede poner múltiples sentencias PHP dentro de una etiqueta PHP y crear
    pequeños bloques de código que hacen más que un simple echo. Por ejemplo,
    si quiere comprobar si se está usando Firefox puede hacer esto:
   </p>
   <p class="para">
    <div class="example" id="example-2">
     <div class="info"><p><strong>Ejemplo #2 Ejemplo usando <a href="language.control-structures.php" class="link">estructuras
     de control</a> y <a href="language.functions.php" class="link">funciones</a></strong></p></div>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">if (</span><span style="color: #0000BB">str_contains</span><span style="color: #007700">(</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'HTTP_USER_AGENT'</span><span style="color: #007700">], </span><span style="color: #DD0000">'Firefox'</span><span style="color: #007700">)) {<br />    echo </span><span style="color: #DD0000">'Está usando Firefox.'</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <div class="example-contents"><p>
      Una salida de ejemplo de este script podría ser:
     </p></div>
     <div class="example-contents screen">
<div class="cdata"><pre>
Está usando Firefox.
</pre></div>
     </div>
    </div>
   </p>
   <p class="para">
    Aquí introducimos un par de conceptos nuevos. Tenemos una
    sentencia <a href="control-structures.if.php" class="link">if</a>.
    Si está familiarizado con la sintaxis básica usada por el lenguaje C,
    esto debería parecerle lógico. De lo contrario, debería leer un libro
    introductorio de PHP o los primeros capítulos, o leer la parte de
    <a href="langref.php" class="link">Referencia del Lenguaje</a> del manual.
   </p>
   <p class="para">
    El segundo concepto que introdujimos fue la llamada a la función
    <span class="function"><a href="function.str-contains.php" class="function">str_contains()</a></span>. <span class="function"><a href="function.str-contains.php" class="function">str_contains()</a></span> es una
    función integrada en PHP que determina si una cadena dada contiene otra
    cadena. En este caso estamos buscando <code class="literal">&#039;Firefox&#039;</code> (la
    llamada aguja) dentro de <var class="varname"><a href="reserved.variables.server.php" class="classname">$_SERVER['HTTP_USER_AGENT']</a></var>
    (la llamada pajar). Si la aguja se encuentra dentro del pajar, la función
    devuelve true. De lo contrario, devuelve <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>. Si devuelve <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, la
    expresión <a href="control-structures.if.php" class="link">if</a> se evalúa como
    <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> y se ejecuta el código dentro de sus {llaves}. De lo contrario, el
    código no se ejecuta. Siéntase libre de crear ejemplos similares, con
    <a href="control-structures.if.php" class="link">if</a>,
    <a href="control-structures.else.php" class="link">else</a>, y otras funciones
    como <span class="function"><a href="function.strtoupper.php" class="function">strtoupper()</a></span> y <span class="function"><a href="function.strlen.php" class="function">strlen()</a></span>.
    Cada página relacionada del manual contiene ejemplos también. Si no está
    seguro de cómo usar funciones, querrá leer tanto la página del manual sobre
    <a href="about.prototypes.php" class="link">cómo leer una definición de función</a> como
    la sección sobre <a href="language.functions.php" class="link">funciones de PHP</a>.
   </p>
   <p class="para">
    Podemos llevar esto un paso más allá y mostrar cómo puede entrar y salir
    del modo PHP incluso en medio de un bloque PHP:
   </p>
   <p class="para">
    <div class="example" id="example-3">
     <div class="info"><p><strong>Ejemplo #3 Mezclar ambos modos HTML y PHP</strong></p></div>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">if (</span><span style="color: #0000BB">str_contains</span><span style="color: #007700">(</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'HTTP_USER_AGENT'</span><span style="color: #007700">], </span><span style="color: #DD0000">'Firefox'</span><span style="color: #007700">)) {<br />    </span><span style="color: #0000BB">?&gt;<br /></span>    &lt;h3&gt;str_contains() devolvió true&lt;/h3&gt;<br />    &lt;p&gt;Está usando Firefox&lt;/p&gt;<br />    <span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">} else {<br />    </span><span style="color: #0000BB">?&gt;<br /></span>    &lt;h3&gt;str_contains() devolvió false&lt;/h3&gt;<br />    &lt;p&gt;No está usando Firefox&lt;/p&gt;<br />    <span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <div class="example-contents"><p>
      Una salida de ejemplo de este script podría ser:
     </p></div>
     <div class="example-contents screen">
<div class="cdata"><pre>
&lt;h3&gt;str_contains() devolvió true&lt;/h3&gt;
&lt;p&gt;Está usando Firefox&lt;/p&gt;
</pre></div>
     </div>
    </div>
   </p>
   <p class="para">
    En lugar de usar una sentencia echo de PHP para mostrar algo, salimos
    del modo PHP y enviamos directamente HTML. El punto importante y potente
    a notar aquí es que el flujo lógico del script permanece intacto. Solo
    uno de los bloques HTML terminará siendo enviado al espectador dependiendo
    del resultado de <span class="function"><a href="function.str-contains.php" class="function">str_contains()</a></span>. En otras palabras,
    depende de si la cadena <code class="literal">Firefox</code> fue encontrada o no.
   </p>
  </div><?php manual_footer($setup); ?>