<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/features.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'features.remote-files.php',
    1 => 'Uso de ficheros a distancia',
    2 => 'Uso de ficheros a distancia',
  ),
  'up' => 
  array (
    0 => 'features.php',
    1 => 'Caracter&iacute;sticas',
  ),
  'prev' => 
  array (
    0 => 'features.file-upload.errors.seealso.php',
    1 => 'Ver tambi&eacute;n',
  ),
  'next' => 
  array (
    0 => 'features.connection-handling.php',
    1 => 'Gesti&oacute;n de las conexiones',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'features/remote-files.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="features.remote-files" class="chapter">
 <h1 class="title">Uso de ficheros a distancia</h1>

 <p class="para">
  Mientras el soporte de los gestores de URL (&quot;URL fopen wrapper&quot;)
  esté activado en el <var class="filename">php.ini</var>, con la opción <strong class="option unknown">allow_url_fopen</strong>,
  se puede utilizar URL (<abbr title="Hypertext Transfer Protocol">HTTP</abbr> y <abbr title="File Transfer Protocol">FTP</abbr>)
  con la mayoría de las funciones que utilizan un
  nombre de fichero como argumento. Esto incluye especialmente
  <span class="function"><a href="function.include.php" class="function">include</a></span>,
  <span class="function"><a href="function.include-once.php" class="function">include_once</a></span>,
  <span class="function"><a href="function.require.php" class="function">require</a></span> y
  <span class="function"><a href="function.require-once.php" class="function">require_once</a></span>
  (<strong class="option unknown">allow_url_include</strong> debe estar activo para utilizarlos).
  Consulte <a href="wrappers.php" class="xref">Protocolos y Envolturas soportados</a> para más información
  sobre los protocolos soportados por PHP.
 </p>
 <p class="para">
  Por ejemplo, se puede seguir el siguiente ejemplo para abrir un
  fichero en un servidor web distante, analizar los resultados
  para extraer la información que se necesita, y luego
  utilizarla en una consulta de base de datos, o
  simplemente editar la información en el estilo del sitio.
 </p>
 <p class="para">
  <div class="example" id="example-1">
   <p><strong>Ejemplo #1 Conocer el título de una página distante</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$file </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen </span><span style="color: #007700">(</span><span style="color: #DD0000">"http://www.example.com/"</span><span style="color: #007700">, </span><span style="color: #DD0000">"r"</span><span style="color: #007700">);<br />if (!</span><span style="color: #0000BB">$file</span><span style="color: #007700">) {<br />  echo </span><span style="color: #DD0000">"&lt;p&gt;Imposible leer la página.\n"</span><span style="color: #007700">;<br />  exit;<br />}<br />while (!</span><span style="color: #0000BB">feof </span><span style="color: #007700">(</span><span style="color: #0000BB">$file</span><span style="color: #007700">)) {<br />    </span><span style="color: #0000BB">$line </span><span style="color: #007700">= </span><span style="color: #0000BB">fgets </span><span style="color: #007700">(</span><span style="color: #0000BB">$file</span><span style="color: #007700">, </span><span style="color: #0000BB">1024</span><span style="color: #007700">);<br />    </span><span style="color: #FF8000">/* Esto solo funciona si las etiquetas Title están correctamente utilizadas */<br />    </span><span style="color: #007700">if (</span><span style="color: #0000BB">preg_match </span><span style="color: #007700">(</span><span style="color: #DD0000">"@\&lt;title\&gt;(.*)\&lt;/title\&gt;@i"</span><span style="color: #007700">, </span><span style="color: #0000BB">$line</span><span style="color: #007700">, </span><span style="color: #0000BB">$out</span><span style="color: #007700">)) {<br />        </span><span style="color: #0000BB">$title </span><span style="color: #007700">= </span><span style="color: #0000BB">$out</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">];<br />        break;<br />    }<br />}<br /></span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$file</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="para">
  También se puede escribir ficheros en un servidor FTP
  siempre que se esté conectado con un
  usuario con los derechos de acceso adecuados, aunque el
  fichero no existiera aún.
 </p>
 <p class="para">
  Para conectarse con un usuario distinto de anónimo, se debe
  especificar un nombre de usuario (y probablemente la contraseña) en
  la URL, como <code class="literal">ftp://user:password@ftp.example.com/path/to/file</code>.
  (Se puede utilizar el mismo tipo de sintaxis para acceder
  a los ficheros vía <abbr title="Hypertext Transfer Protocol">HTTP</abbr> cuando requieren una
  identificación simple).
 </p>
 <p class="para">
  <div class="example" id="example-2">
   <p><strong>Ejemplo #2 Almacenar datos en un servidor distante</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$file </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen </span><span style="color: #007700">(</span><span style="color: #DD0000">"ftp://ftp.example.com/incoming/outputfile"</span><span style="color: #007700">, </span><span style="color: #DD0000">"w"</span><span style="color: #007700">);<br />if (!</span><span style="color: #0000BB">$file</span><span style="color: #007700">) {<br />  echo </span><span style="color: #DD0000">"&lt;p&gt;Imposible abrir el fichero distante para escritura.\n"</span><span style="color: #007700">;<br />  exit;<br />}<br /></span><span style="color: #FF8000">/* Escritura de los datos. */<br /></span><span style="color: #0000BB">fputs </span><span style="color: #007700">(</span><span style="color: #0000BB">$file</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">"\n"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">fclose </span><span style="color: #007700">(</span><span style="color: #0000BB">$file</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="para">
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <p class="para">
    Nota: se puede tener la idea, a partir del
    ejemplo anterior, de utilizar la misma técnica para
    escribir en un log distante, pero como se mencionó anteriormente
    solo se puede escribir en un nuevo fichero utilizando
    las funciones <span class="function"><a href="function.fopen.php" class="function">fopen()</a></span> con una URL. Para hacer logs
    distribuidos, se recomienda consultar la parte
    <span class="function"><a href="function.syslog.php" class="function">syslog()</a></span>.
   </p>
  </p></blockquote>
 </p>
</div>
<?php manual_footer($setup); ?>