Siempre que allow_url_fopen esté
habilitado en php_ini, se pueden usar URLs HTTP y FTP con la
mayoría de las funciones que toman un archivo como
parámetro_ Además URLs pueden ser usadas con
include(), include_once(),
require() y
require_once()_ Consultar Apéndice I para más información sobre los
protocolos soportados por PHP_
Nota:
En PHP 4_0_3 y versiones anteriores, para usar envolturas URL,
habia que configurar PHP usando la opción de
configuración __enable_url_fopen_wrapper_
Por ejemplo, se puede usar este para abrir un archivo en un servidor
web remoto, analizar en la salida la información que se quiera,
y entonces, usar la información en una consulta a base de
datos, o simplemente para sacarlas en un estilo que coincida con el
resto de su sitio web_
Ejemplo 19_1_ Obtener el título de una página remota <?php
$file = fopen ("http://www_example_com/", "r");
if (!$file) {
echo "<p>Unable to open remote file_\n";
exit;
}
while (!feof ($file)) {
$line = fgets ($file, 1024);
/* This only works if the title and its tags are on one line */
if (eregi ("<title>(_*)</title>", $line, $out)) {
$title = $out[1];
break;
}
}
fclose($file);
?> |
|
También se puede escribir a archivos en un servidor FTP
(siempre que se conecte como un usuario con los correctos derechos
de acceso)_ Solamente se pueden crear nuevos ficheros usando este
método; si se intenta sobreescribir un fichero ya existente,
la función fopen() fallará
Para conectar como un usuario distinto de 'anonymous', se necesita
especificar el nombre de usuario (y posiblemente contraseña)
dentro de la URL, tales como
'ftp://usuario:clave@ftp_ejemplo_com/camino/a/archivo'_ (Se puede
usar la misma clase de sintaxis para acceder a archivos via HTTP
cuando se requería una autenticació de same sort of
syntax to access files via HTTP when they require Basic
authentication_)
Ejemplo 19_2_ Almacenando datos en un servidor remoto <?php
$file = fopen ("ftp://ftp_example_com/incoming/outputfile", "w");
if (!$file) {
echo "<p>Unable to open remote file for writing_\n";
exit;
}
/* Write the data here_ */
fputs ($file, $_SERVER['HTTP_USER_AGENT'] _ "\n");
fclose ($file);
?> |
|
Nota:
Podeis creer por el ejemplo anterior, que podeis usar esta tecnica
para escribir en un fichero de registro remoto_ Desgraciadamente
no funcionaria porque la llamada fopen()
fallaria si el fichero remoto existe_ Para usar registros
distribuidos de esa manera podeis consultar la funcion
syslog()_