Användning av fjärrfiler

Från Wiki.linux.se
Version från den 3 september 2024 kl. 14.11 av Admin (diskussion | bidrag)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

Användning av fjärrfiler

Så länge allow_url_fopen är aktiverat i php.ini, kan du använda HTTP- och FTP-URL:er med de flesta funktioner som tar en filnamnparameter. Dessutom kan URL:er användas med include, include_once, require och require_once-satsningar (allow_url_include måste vara aktiverat för dessa). Se Stödda protokoll och wrappers för mer information om de protokoll som stöds av PHP.

Till exempel kan du använda detta för att öppna en fil på en fjärrwebbserver, tolka utdata för de data du vill ha och sedan använda dessa data i en databasfråga, eller helt enkelt för att visa dem i en stil som matchar resten av din webbplats.

Exempel #1 Att få titeln på en fjärrsida

<?php
$file = fopen("http://www.example.com/", "r");
if (!$file) {
    echo "<p>Kan inte öppna fjärrfilen.\n";
    exit;
}
while (!feof($file)) {
    $line = fgets($file, 1024);
    /* Detta fungerar bara om titeln och dess taggar är på en rad */
    if (preg_match("@\<title\>(.*)\</title\>@i", $line, $out)) {
        $title = $out[1];
        break;
    }
}
fclose($file);
?>

Du kan också skriva till filer på en FTP-server (förutsatt att du har anslutit som en användare med rätt åtkomsträttigheter). Du kan bara skapa nya filer med denna metod; om du försöker skriva över en fil som redan finns kommer fopen()-anropet att misslyckas.

För att ansluta som en annan användare än "anonym" måste du ange användarnamnet (och eventuellt lösenordet) inom URL:en, som 'ftp://user:password@ftp.example.com/path/to/file'. (Du kan använda samma typ av syntax för att komma åt filer via HTTP när de kräver Basic-autentisering.)

Exempel #2 Spara data på en fjärrserver

<?php
$file = fopen("ftp://ftp.example.com/incoming/outputfile", "w");
if (!$file) {
    echo "<p>Kan inte öppna fjärrfilen för skrivning.\n";
    exit;
}
/* Skriv datan här. */
fwrite($file, $_SERVER['HTTP_USER_AGENT'] . "\n");
fclose($file);
?>

Notera:

Du kanske får idén från exemplet ovan att du kan använda denna teknik för att skriva till en fjärrloggfil. Tyvärr skulle det inte fungera eftersom fopen()-anropet kommer att misslyckas om den fjärrfilen redan finns. För att göra distribuerad loggning som detta bör du titta på syslog().

Sidslut

Orginalhemsidan på Engelska :https://www.php.net/manual/en/security.cgi-bin.default.php

PHP Funktioner


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp.se som har sponsrat Linux.se med webserver.