2 Stimmen

Serverseite einbeziehen

Ist es möglich, ein serverseitiges Include zu verwenden, um auf Dateien zuzugreifen, die sich außerhalb des Servers befinden?

Wenn nicht, welche anderen Möglichkeiten gibt es dafür?

3voto

Tyler Carter Punkte 58971

Verwenden Sie cURL um Daten außerhalb der Domäne zu erhalten. Wenn Sie die erhaltenen Daten anschließend ausführen möchten, können Sie eval() es. Aber seien Sie gewarnt, dass Sie damit die "Ausgabe" der Seite erhalten. Das heißt, wenn es sich um eine ausgeführte Seite wie eine ".php"-Seite handelt, erhalten Sie die Daten, die als Ergebnis der Verarbeitung herauskommen.

<?php
// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab URL and pass it to the browser
curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);
?>

Das Gleiche gilt für file_get_contents() であり、また fopen()

Wenn Sie den "tatsächlichen" Inhalt der Datei abrufen wollten, müssten Sie auf dem anderen Server eine Art Proxy einrichten. (Sie können dies nicht auf Ihrem Server tun, da dies eine Sicherheitslücke in der Funktionsweise der serverseitigen Skripterstellung darstellen würde).

<?php

// Read the requested file out
readfile($_GET['file']);

So erhalten Sie den Inhalt jeder Datei, die Sie anfordern:

http://test.com/handler.php?file=handler.php

Aber wenn jemand anderes es findet, könnte es gefährlich werden.

3voto

Álvaro González Punkte 134708

Sie erwähnen die Serversoftware nicht, aber ich nehme an, dass Apache, wo SSI von der mod_include Modul. Die Website einschließen. Element lässt keine entfernten Dateien zu. Sie haben jedoch Ausführung die es ermöglicht, ein beliebiges externes Tool auszuführen; Sie können damit die wget oder einen anderen Befehl Ihrer Wahl.

Vielleicht ist es aber auch gar nicht so kompliziert. Wenn Sie das entfernte Verzeichnis im lokalen System mounten können, können Sie einen einfachen Symlink erstellen und ein reguläres einschließen. .

Oder, wie bereits angedeutet, PHP ist wirklich einfach zu bedienen.

1voto

Meep3D Punkte 3764

Sie können etwas wie file_get_contents() oder fopen() verwenden, um dies in php zu tun, z.B.

<?php
    echo file_get_contents('http://www.example.com/include');
?>

0voto

zepolen Punkte 56

Ja, die serverseitigen Includes von nginx können jede vollständige URL verwenden, z. B:

<!--# include virtual="http://www.stackoverflow.com/" -->

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X