Include von fremden Server
Kerstel
- php
Hi,
ich möchte ein PHP-Script von einem fremden Server einbinden. In der Art:
include('http://www.abc.de/script.php');
Dies funktioniert aber leider nicht. Gibt es dafür eine möglichkeit?
Sinn ist folgender, ich habe eine PHP-Klasse geschrieben, mit der man dynamisch PDF's aus PHP erstellen kann. Wenn ich diese nun jemanden zur Verfügung stelle, soll dieser nicht den Quellcode sehen. Er soll dann einfach die Datei in sein Script einbinden.
Danke und Gruß
Ralf Kronen
Hallo Ralf,
include('http://www.abc.de/script.php');
Dies funktioniert aber leider nicht. Gibt es dafür eine möglichkeit?
Doch, das funktioniert, wenn Du fopen_wrappers aktiviert hast. (php.ini)
Sinn ist folgender, ich habe eine PHP-Klasse geschrieben, mit der man dynamisch PDF's aus PHP erstellen kann. Wenn ich diese nun jemanden zur Verfügung stelle, soll dieser nicht den Quellcode sehen. Er soll dann einfach die Datei in sein Script einbinden.
Das geht nicht. Denn der Benutzer weiß immer genauso viel, wie PHP weiß. Und PHP muss den Sourcecode kennen, um mit der Klasse etwas Anfangen zu können. Wenn Du über http das Script aufrufst, dann musst Du Dir sicher sein, dass der Quelltext mitüberliefert wird. Sonst liefert er nämlich die Ausgabe des Scripts zurück - was bei einer Klasse einfach gar nichts ist.
Grüße,
Christian
http://aktuell.de.selfhtml.org/artikel/gedanken/freeware/
Hi,
include('http://www.abc.de/script.php');
Dies funktioniert aber leider nicht. Gibt es dafür eine möglichkeit?
Doch, das funktioniert, wenn Du fopen_wrappers aktiviert hast. (php.ini)
Sinn ist folgender, ich habe eine PHP-Klasse geschrieben, mit der man dynamisch PDF's aus PHP erstellen kann. Wenn ich diese nun jemanden zur Verfügung stelle, soll dieser nicht den Quellcode sehen. Er soll dann einfach die Datei in sein Script einbinden.
Das geht nicht. Denn der Benutzer weiß immer genauso viel, wie PHP weiß. Und PHP muss den Sourcecode kennen, um mit der Klasse etwas Anfangen zu können. Wenn Du über http das Script aufrufst, dann musst Du Dir sicher sein, dass der Quelltext mitüberliefert wird. Sonst liefert er nämlich die Ausgabe des Scripts zurück - was bei einer Klasse einfach gar nichts ist.
Ok, wenn es eh keinen Sinn macht lass ich das. Gibt es ne andere Möglichkeit? Weil wenn ich in mein Script ne Klasse einbaue, und deren Funktionen dann nutze sehe ich ja nicht den Code der Klasse.
Oder seh ich das falsch?
Gruß
Ralf
Hallo Ralf,
Ok, wenn es eh keinen Sinn macht lass ich das. Gibt es ne andere Möglichkeit? Weil wenn ich in mein Script ne Klasse einbaue, und deren Funktionen dann nutze sehe ich ja nicht den Code der Klasse.
Oder seh ich das falsch?
Doch. Anstelle von include() könntest Du ja auch readfile() [1] benutzen. Denn alles, was include() "sieht", kann auch das Script sehen.
Es gibt bei PHP nur eine wirklich funktionierende Möglichkeit: Du schreibst eine Erweiterung in C. Diese wird kompiliert. (und man kommt daher an den Sourcecode nicht ran) Das Problem dabei ist, dass die Leute, die das einsetzen wollen, diese Erweiterung laden können müssen. (was für ein Deutsch ;)) Normalerweise ist dl() freigeschaltet, d.h. das wäre nicht das Problem, aber Du musst die Erweiterung in einer Form anbieten, damit sie der Server der entsprechenden Person versteht, daher müsstest Du auf x verschiedenen UNIX-Derivaten für x verschiedene Prozessorarchitekturen das Modul für x verschiedene PHP-Versionen kompilieren - vergiss' es.
Das Problem bei Scriptsprachen ist, dass man bei weiterverwertbaren Modulen immer den Sourcecode mitliefern muss.
Vielleicht eine etwas andere "Alternative": Ich habe bei der ersten Antwort schon unter meinen Namen einen Link gesetzt, jetzt setze ich ihn noch mal: http://aktuell.de.selfhtml.org/artikel/gedanken/freeware/
Grüße,
Christian
[1] http://www.php3.de/manual/de/function.readfile.php
Hallo,
es gibt noch eine andere Möglichkeit:
lass Die den File posten, aus dem ein pdf gemacht werden soll und liefer das Ergebnis zurück. Dann erfolgt sie Umwandlung auf Deinem Server und Du musst nichts preis geben von deinen Geheimnissen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Moin!
Hi,
ich möchte ein PHP-Script von einem fremden Server einbinden. In der Art:
include('http://www.abc.de/script.php');
Dies funktioniert aber leider nicht. Gibt es dafür eine möglichkeit?
Es funktioniert deshalb nicht, weil der Quelltext übertragen werden muß, der Server bei der Endung .php aber im allgemeinen den Quelltext schon selbst ausführt.
Und wenn er das nicht tut (dein Quelltext kann ja z.B. auch "script.txt" heißen), dann kann man ihn sich auch runterladen.
Sinn ist folgender, ich habe eine PHP-Klasse geschrieben, mit der man dynamisch PDF's aus PHP erstellen kann. Wenn ich diese nun jemanden zur Verfügung stelle, soll dieser nicht den Quellcode sehen. Er soll dann einfach die Datei in sein Script einbinden.
Deine Idee ist sehr sehr schlecht! Sie erzeugt massivste Sicherheitslöcher. Denn wenn man PHP-Quellcode von einem fremden Server einbindet, dann muß man als Programmierer absolut sicher sein können, dass dieser Quellcode wirklich das macht, was er angeblich tut - und dazu muß man den Quelltext kennen.
Du könntest ja nur behaupten, ein PDF zu erstellen - in Wirklichkeit löschst du den kompletten Webspace. Oder du erstellst tatsächlich ein PDF, aber mailst dir noch nebenbei irgendwelche gespeicherten Passworte etc. Bedenke: Es ist _dein_ Quelltext, der in fremden Sites ausgeführt wird - niemand von Verstand wird dich in seinem Webspace irgendwas tun lassen, was er nicht 101% genau kontrolliert hat. Umgekehrt: Würdest du von irgendwoher PHP-Code einbinden, über dessen Inhalt du dir nicht genauestens im Klaren bist? Der Code kann genau das machen, was du auch machen kannst - nur weißt du es nicht.
Besonders gefährlich: Der Anbieter des einzubindenden Codes kann sich ja anfangs wirklich dsfür entschieden haben, PDFs zu erstellen. Und wenn er irgendwann meint, dass er auch anders Geld verdienen will, könnte er beispielsweise eine Spam-Routine einbinden. Oder eben unbemerkt irgendwelche Software auf den fremden Servern installieren (zumindest mal PHP-Dateien, von denen dann niemand mehr weiß, wie sie dahingekommen sind, und die dann für weiteren Mißbrauch benutzt werden könnten).
Insofern ist deine Idee einfach nur Müll. Wenn du etwas sinnvolles für PHP anbieten willst, dann verkaufe es entweder für eine gewisse Summe als Lizenz - dann mußt du den Quelltext hergeben und dich darum sorgen, dass er nicht unberechtigt weitergegeben wird. Oder du stellst deinen Code unter GNU General Public License (GPL oder LGPL) - dann tust du der programmierenden Welt einen Gefallen, kriegst zwar nicht zwingend Geld (garantiert nicht direkt, höchstens indirekt), hast aber auch keine Sorgen, dass jemand deinen Code klaut.
- Sven Rautenberg