WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   dynamisch erstellte PHP Seite als html file speichern? (http://www.wcm.at/forum/showthread.php?t=23831)

MZ 19.06.2001 13:06

dynamisch erstellte PHP Seite als html file speichern?
 
Hi!

Ich bin gerade mitten in der PHP-Experimentierphase.

Jetzt habe ich entdeckt, daß ich files per ftp auf einen anderen Server schicken kann. Fein - zuvor möchte ich aber eine php erzeugte Seite als html abspeichern (und diese dann wegschicken).

Vorschläge? Anhaltspunkte?

renew 19.06.2001 14:19

Wenn du die von einem php-scruipt erzeugte Seite im Internetexplorer siehst, geh einfach auf Datei - speicher unter, und schon speichert er die html Seite. Dann kannst die gespeicherte auf an anderen Server laden.

Ich hoff ich hab dich richtig verstanden, mit dem was du meinst.

MZ 19.06.2001 14:23

;) nein ich meinte - per php !

Ich will die Datei mit PHP erzeugen, als html speichern und per ftp auf einen anderen server stellen.

Sloter 19.06.2001 15:03

Hm, jede Seite wird ja aufs neue vom Server geparst.

Wenn der andere Account auch PHP kann, würde ich dort eine PHP-Seite reinlegen, die auf die Datenbank vom ersten Server zugreift.

Das Ergebniss der ersten Seite als Textfileabspeichern/übertragen auf den 2/ include Textdatei

Vorhandene Seite mit fopen() öffnen und reinschreiben, danach kopieren auf den 2 Server (Muß aber die .html schon vorhanden sein.)

Sloter

MZ 19.06.2001 15:09

der 2. Server kann kein php deshalb der Umweg über den anderen.

renew 19.06.2001 16:21

Zitat:

Original geschrieben von MZ
;) nein ich meinte - per php !

Ich will die Datei mit PHP erzeugen, als html speichern und per ftp auf einen anderen server stellen.

So meinte ich das eh. Du lädst die php Seite auf den Server, der php kann. Dann schaust dir die Seite mitn IExplorer oder Netscape, oder was auch immer ;), an. Die Seite die du siehst ist ja keine php Seite sondern eine generierte html Seite. Dein Browser kann ja nur html intepretieren.... :)

Also gehst dann einfach auf Datei speichern unter und speicherst die Seite die du gerade im Browser siehst. Andere möglichkeit wäre, rechte Maustaste und dann Quelltext anzeigen(IExplore, kann sowas der Netscape auch ?? ;)). Dann siehst den Quelltext im Notepad, und kannst das ganze auch speichern.

MZ 19.06.2001 16:51

ich versuchs nochmal - ich drücke mich wohl falsch aus.

Das GENERIEREN & SPEICHERN IN HTML & FTP AUF ANDEREN SERVER soll von PHP gemacht werden.

OHNE MEINE WEITERE INTERAKTION !!!

also automatisch.

renew 19.06.2001 17:28

jetzt versteh ich was du meinst.

Glaub aber, dass das nicht möglich ist. Zumindest kenn ich keine Schnittstelle von php zu ftp....

Aber ich bin auch erst in der "herumspielphase" so wie du. Wirklich viel Ahnung davon hab ich auch noch nicht wirklich.

MZ 19.06.2001 17:45

doch ftp geht.

Doch der Teil mit als html sichern ist mir noch nicht klar...

renew 19.06.2001 17:58

Zitat:

Original geschrieben von MZ
doch ftp geht.

Doch der Teil mit als html sichern ist mir noch nicht klar...

Ich bin auch ein Sepp...

Treib mich dauernd auf der Seite herum, und schau ncith einmal, dass es wirklich was für ftp gibt.

Naja, werd mir das mal durchschauen, vielleicht fällt mir ja auch was ein, wie man das machen könnte....

RaistlinMajere 19.06.2001 20:11

ich glaube zwar, dich verstanden zu haben
 
jedoch bezweifle ich, daß das geht, denn um das zu tun, müßtest du die generierte html-datei auf der lokalen platte abspeichern und dann per php und dessen ftp-funktionen an einen andern server schicken.

das problem liegt meiner meinung nach 1. an der automatisierung des abspeicherns der php-generierten html-seite auf der lokalen platte [wie das gehen soll, keine ahnung, kann mir nicht vorstellen, daß da genügend rechte vorhanden sind es sei denn du speicherst das file in den für cookies vorgesehenen ordner, nur WO willst du das in einem script angeben (dergleichen steht normalerweise in den konfigurationsdateien des webservers) angeben, wie gesagt, ich glaube dafür gibts keine möglichkeit] und 2. daran, daß es sich, sobald die seite vom server intepretiert wurde und als html-datei an den client versendet wurde, dabei um ein REINES html-dokument handelt, wo also sollen da die PHP-befehle stehen, die schlußendlich das ganze auf einen anderen server laden? nicht vergessen, PHP ist SERVERseitig, d.h. wird zuerst intepretiert und dann versandt, wenn du allerdings eine möglichkeit fändest, den ftp-versand mit einer clientseitigen sprache zu realisieren (wie DAS wiederum geht, weiß ich jetzt auch nicht, ich weiß nur, wie´s mit php geht), würde die versandfunktion zusammen mit dem html-text vom server an den client versandt und dort ausgeführt werden können. wenn du was rausfindest (ist eine interessante angelegenheit, was du da haben willst ;) ), laß es mich wissen.

renew 19.06.2001 20:20

Hab mal so ein paar PHP Befehle durchstöbert....

Speichern auf der Server Platte sollte kein Problem sein. Das Versenden eines Files vom Server auch nicht. Das einzige was ich nicht weiß, wie man eine gernerierte Seite in ein File am Server speichern kann. Weil wenn er die Seite generiert, schickt er sie ja schon an den Client. Da hast ja dann keine Kontrolle mehr, was damit passiert.

Oder gibts da eine Möglichkeit eine Seite einfach so zu generieren, um sie dann wo abzuspeichern....? :confused:

RaistlinMajere 19.06.2001 20:31

wie du richtig geschrieben hast
 
wird es kaum möglich sein, die intepretierte html-seite auf den server "zwischenzuspeichern" um sie dann zu versenden (was natürlich kein problem ist, wo du ebenfalls richtig liegst), da dieser ja die seite sofort an den client versendet und sich nichts selbst zusendet, d.h. habe ich ja in meinem letzten post vorgeschlagen, statt dessen die intepretierte seite auf den CLIENT als eine art cookie abzuspeichern (halt in dem dafür vorgesehen ordner, dort sind ja die schreibrechte dafür, nur wie wirst du den müll dann wieder los? das ist ne andere frage.).
nachdem du das geschafft hast (dies ist eine rein theoretische überlegung, ich habe keine ahnung, wie das gehen soll, aber vielleicht jemand anderer?), kannst du dann vom client aus ein mit einer clientseitigen scriptsprache geschriebenes script ausführen lassen, welches den ftp-upload der im cookieordner abgespeicherten datei (wie gesagt, als verantwortungsvoller programmierer solltest du keinenfalls darauf vergessen, die gedanken über die entfernung dieses datenmülls machen, nachdem das file versandt worden ist!) auf den anderen server durchführt (dieses script muß deswegen clientseitig sein, damit es vom server bei der intepretation des php-quelltextes ignoriert und einfach an den client gesandt und dort ausgeführt wird, es gibt da glaube ich eine js-möglichkeit, hab irgendwo mal was darüber aufgeschnappt).
so, ich weiß jetzt selbst nicht, ob meine gedanken hier verständlich beschrieben wurden, aber ich hoffe es mal. :D

Sesa_Mina 20.06.2001 01:53

statt echo "";
schreibst:

$out .= "";

und die variable $out kannst dann mittels

$file = fopen ("file","w");
fputs($file,$out);
fclose ($file);

(oder anderer methoden)

in ein file sichern.

das file selbst kannst anschliessend per ftp woanders hin verfrachten.

Hoffe geholfen zu haben :)

Galileo 20.06.2001 08:36

ähm, also irgendwie versteh ich den sinn der sache nicht, bis derjenige der die seite aufruft dann etwas sieht vergeht einiges an zeit....

MZ 20.06.2001 08:39

nein vergeht nicht.

Denn wenn ich auf Server 1 (mit php und sql) die Daten aktualisiert habe spielt ja automatisch ftp die aktualisierte html version auf server 2.

User greifen nur auf Server 2 zu und schauen die fertigen html seiten an.

Sloter 20.06.2001 12:01

Einen habe ich noch :)

Wenn der erste Server immer Online ist, einfach die PHP-Seite mit Url auf der zweiten Page einbinden.

Sloter

MZ 20.06.2001 12:04

jo das ist klar ich will aber nicht auf den Server verweisen

RaistlinMajere 20.06.2001 13:47

@ Sesa_Mina
 
damit wäre zwar das problem gelöst, wie ein file auszulesen und dessen inhalt in ein neues file am server abzuspeichern ist, jedoch trifft das nicht das eigentliche problem, denke ich, denn wie das von einem intepretierten php-file erstellte html-file ohne versand an einen client abgespeichert werden kann, ist damit nicht geklärt.

MZ 20.06.2001 13:58

das file soll ja nicht "ohne Versand an den CLIENT geschickt werden"

CLIENTS haben bei dieser Problemstellung ÜBERHAUPT NICHTS zu tun damit.

ich will das generierte html file auf einen anderern Server (Webspace) uploaden.

RaistlinMajere 20.06.2001 14:34

eben
 
aber das generieren geht eben meines wissens nach nur von server auf client, nicht von server auf sich selbst, um danach auf einen anderen server upzuloaden.

renew 20.06.2001 15:32

Sesa_Mina hat schon recht. So müssts gehen.

Man muss das ganze halt nur doppelt programmieren. Einmal damit er es ins File schreibt, und das andere mal, damit man es auch im Browser sieht.

RaistlinMajere 20.06.2001 17:43

:confused: kannst du das bitte mal genauer erklären?

renew 20.06.2001 17:59

Der Quellcode wird ja trotzdem vom Server geparst, auch wenn das nicht an den Client geschickt wird.

Wenn du zB "hallo Welt" an den Client schicken willst, und auch in eine Datei speichern sollte das doch einfach so funktionieren(habs aber noch nciht ausprobiert):

PHP-Code:

//speichern
$out "hallo Welt";  

$file fopen ("file","w"); 
fputs($file,$out); 
fclose ($file);

//client

echo $out

Und wenn man halt eine html Seite haben will, dann muss man halt nur noch die html tags hinzufügen.....

Is recht viel arbeit, da man eigentlich 2mal programmiert, aber funktionieren sollte es.

RaistlinMajere 20.06.2001 19:40

DAS habe ich schon verstanden
 
nur müßte dann die variable $out also den html-quelltext als string enthalten, dazwischen halt, dort wo die html-seite dynamische anteile enthalten soll ein <?= $irgendwas ?> stehen, habe ich das richtig verstanden?

renew 20.06.2001 19:46

Re: DAS habe ich schon verstanden
 
Zitat:

Original geschrieben von RaistlinMajere
nur müßte dann die variable $out also den html-quelltext als string enthalten, dazwischen halt, dort wo die html-seite dynamische anteile enthalten soll ein <?= $irgendwas ?> stehen, habe ich das richtig verstanden?
ja, genau hätt ich das auch gemeint,... ;) :D

RaistlinMajere 20.06.2001 19:54

got it
 
und wieder was dazugelernt. danke übrigens. :D

Sesa_Mina 20.06.2001 19:56

@RaistlinMajere:

Im Prinzip schreibst den GANZEN html code (inklusive der dynamischen parts) in diese variable rein.

am ende des PHP scripts kannst dann den variableninhalt mit einem einzigen echo aufruf an den aufrufenden client schicken bzw in ein file am server schreiben.

Danach kannst über php eine ftp verbindung auf den zielserver aufbauen und das am server abgelegte file verschicken.


PHP-Code:

$out "<html><head><meta ...></head>\n";
$out .= "<body> inhalt </body>\n";
$out .= "</html>\n";

// file am zielserver ablegen
$file fopen ("file","w"); 
fputs($file,$out); 
fclose ($file);

// daten zum aufrufenden client schicken
echo $out


und hier ein auszug aus dem php manual:
(auch zu finden auf: http://www.php.net/manual/en/function.fopen.php )

fopen
(PHP 3, PHP 4 )

fopen -- Opens file or URL
Description

int fopen (string filename, string mode [, int use_include_path])

...

If filename begins with "ftp://" (not case sensitive), an ftp connection to the specified server is opened and a pointer to the requested file is returned. If the server does not support passive mode ftp, this will fail. You can open files for either reading or writing via ftp (but not both simultaneously).

If filename begins with anything else, the file will be opened from the filesystem, and a file pointer to the file opened is returned.

If the open fails, the function returns false.

...


Hoffe das hilft dir jetzt weiter :)

RaistlinMajere 20.06.2001 19:59

@ Sesa_Mina
 
danke, LLR hats mir schon verständlich nähergebracht. :)


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag