variable für eine ganze html seite
Michael W.
- php
hallo,
kann ich in ein input feld type=hidden als value ein platzhalter angeben um darin eine html seite zu speichern die an den server geschickt wird und als htm abgespeichert wird ?
wobei das speichern nicht das problem ist. mir fehlt die kenntis des gesamten scripts.
das ganze sollte so aussehen
formular.php:
hier ist das formular mit allen möglichen fragen drin
Name
Alter
Bla und Blub
so und beim speichern werden dann diese Daten wieder ausgegeben (auch kein problem). aber so wie man sie jetzt auf dieser seite sieht möchte ich sie jetzt auch speichern (ohne variable), so das die seite fertig geschreiben auf dem server liegt.
zb.:
Formular.php:
Name: Michael
Alter: 16
Bla und blub: bla
--> Speichern
Save.php:
Sind die daten so korekkt ?
Dei Name ist Michael, Du bist 16 und bla und blub.
--> OK --> Speichern auf Server mit diesen Daten unter den namen der Person --> also Michael.htm
zusätzlich sollte auch in eine externe liste hinzugefügt werden, dass michael.htm dazu gekommen ist.
da habe ich mir gedacht das durch diese hidden - felder zu machen.
das eine fügt den link in eine txt datei (die extern ausgegeben wird) hinzu:
liste.txt:
<a href=Tim>Tim</a>
<a href=Sandra>Sandra</a>
und das andere speichert die html seite
nur da man keine html-parts in eine value schreiben kann muss ich dafür einen platzhalter suchen und das kann man mit den variablen von php sehr gut machen.
<input type="hidden" name="<? echo $html; ?>">
beim bestätigen der korekkten daten sollen dann im darauf folgenden script die daten auf dem server gespeichert werden. oder so :| ?
aber ich glaub wenn die variable html durch html erstezt wird geht das doch auch nicht, oder ?
wie mache ich das jetzt ?
Danke
Hallo!
Etwas komplex Deine Frage ;-)
Ich rate Dir mal folgende Funktionen anzugucken: http://www.php.net/manual/de/ref.outcontrol.php, vor allem http://www.php.net/manual/de/function.ob-get-contents.php, damit lädst Du die html-Ausgabe eines Scripts in eine Variable! Das kannst Du dann z.B. mit http://www.php.net/manual/de/function.fwrite.php in eine Datei schreiben und speichern. Also ob ich eine ganze html-Seite in einem Hidden Field speichern würde weiß ich nicht, gibt bestimmt Probleme, auch schon mit der Größe!
Ich würde die Datei einfach direkt speichern und ggfs. wieder löschen bzw. überschreiben oder so!
Aber warum machst Du das so kompliziert und speicherst nicht nur die Daten selbst?
Viele Grüße
Andreas
Ich würde dir hierzu raten:
<textarea style="display: none" name="foo"><?=was-weis-ich-was-da-hin-soll?></textarea>
so hast du nämlich kein problem, falls mal ein " in der seite ist ;-)
Ich würde dir hierzu raten:
<textarea style="display: none" name="foo"><?=was-weis-ich-was-da-hin-soll?></textarea>
so hast du nämlich kein problem, falls mal ein " in der seite ist ;-)
Das war ein guter tipp, doch das problem mit dem " bleibt nach wie vor. er schreibt das dann als /" und nichts mehr geht.
alles hat geklappt nur dadran scheitert das system.
wie mache ich das jetzt anders ?
was will ich denn ? ich will das jeder die möglichkeit hat einen steckbrief (von mir aus auch ohne foto) anzulegen.
ich hab ne idee, sofern es mit php möglich ist eine .htm datei umzubenennen ... geht das ?
Hallo,
Das war ein guter tipp, doch das problem mit dem " bleibt nach wie vor. er schreibt das dann als /" und nichts mehr geht.
alles hat geklappt nur dadran scheitert das system.
Du solltest Dir nochmal meinen Beitrag durchlesen...
Und außerdem glaube ich nicht, dass "er" dir /" hinschreibt, sondern "er" schreibt " hin und das ist was ganz Anderes.
Gruß
Tom
Und außerdem glaube ich nicht, dass "er" dir /" hinschreibt, sondern "er" schreibt " hin und das ist was ganz Anderes.
wie schon erwähnt: <textarea ...><? echo stripslashes($text) ?></textarea>
mit dem umbenennen weis ich net ganz, was du meinst - natürlich kannst du mit php dateien auf m server umbenennen - schau mal in die php-faq
<textarea ...><? echo stripslashes($text) ?></textarea>
und wo kommt da jetzt mein html hin ?
Hallo Michael,
selbstverständlich kannst Du eine ganze HTML-Seite, mit Ausnahme der referenzierten Objekte, wie z.B. Bilder, in einer Variablen speichern. Die geeignetste dafür ist wohl eine Textarea.
Dann kannst Du di anschließend auf den Server hochladen und als File auf die Platte speichern. Anschließend kannst Du sie mit readfile(PfadDerDatei) wieder an den Browser ausgeben.
Wenn Du sie dierekt ausgibst, "entsteht" Deine HTML-Seite und wenn du sie wieder innerhalb der Begrenzungen von <textarea...><? readfile("/home/klaus/public_html/seite1.htm") ?></textarea> ausgibst, kannst Du den HTML-Code am Client bearbeiten.
Vor dem Speichern solltest Du noch die Funktion stripslashes() auf die Variable anwenden. Sonst hast Du nacher immer mehr \\\\"
auf dem Bildschirm.
So Long
Tom
Wenn Du sie dierekt ausgibst, "entsteht" Deine HTML-Seite und wenn du sie wieder innerhalb der Begrenzungen von <textarea...><? readfile("/home/klaus/public_html/seite1.htm") ?></textarea> ausgibst, kannst Du den HTML-Code am Client bearbeiten.
ok das was in der html-seite stehen soll ist nur das layout mit den variablen drin. sendet einer das formular mit seinen "steckbrief-daten" erstz er doch auf der darauf folgenden seite alle $variablen. auch da wo ich die html-seite in einem versteckten textarea habe - versteckt deshalb, weil er nicht seine html codes hinzufügen soll. ich möchte nur das layout abspeichern und dadrin sind auch die steckbrief daten ersetzt worden und wenn dann auch noch mal auf ok geklickt wird wird die variable html an das letzte script geschickt und auf dem server unter $name.$id.".htm" gespeichert.
Vor dem Speichern solltest Du noch die Funktion stripslashes() auf die Variable anwenden. Sonst hast Du nacher immer mehr \\\\"
auf dem Bildschirm.
was ist stripslashes() ? erklär mir das mal bitte genauer.
Danke :)
Hi!
was ist stripslashes() ? erklär mir das mal bitte genauer.
Gib mal "stripslashes" in das Suchformular des PHP-Manuals ein:http://www.php.net/manual/de/
Danke :)
Bitte!
Grüße
Andreas
Hi,
kann ich in ein input feld type=hidden
warum "hidden"?
um darin eine html seite zu speichern die an den server geschickt
wird und als htm abgespeichert wird ?
ja. Aber Du wirst das nicht tun wollen.
Fangen wir damit an:
a) Wie soll die Datei auf dem Server heißen?
b) Was passiert, wenn zwei Benutzer Dein Formular gleichzeitig absenden?
Viele Grüße
<img src="http://www.schroepl.net/projekte/gzip_cnc/gzip_cnc.gif" border=0 alt=""> Michael
ja. Aber Du wirst das nicht tun wollen.
Fangen wir damit an:
a) Wie soll die Datei auf dem Server heißen?
b) Was passiert, wenn zwei Benutzer Dein Formular gleichzeitig absenden?
meinst du dadran hätte ich nicht gedacht *stolz*: der dateiname setzt sich aus dem namen der person und einer id zusammen.
die id ist ein gewöhnlicher counter (versteckt) so könnten ja im prinzip unendlich viele mit dem selben namen das formular ausfüllen. zusätzlich schreibt ein weiteres hidden feld mit der selben zusammensetzung den link in eine link.txt die extern wieder ausgegeben wird.
klappt alles ;)
nur das speichern der htm mit den " funzt einfach net.
wie löse ich das, dass die variablen in vieleicht vorangefertigte rholing.htm gespeichert werden. wie machen das denn die experten von zb.beepworld ??
Danke
Hi,
meinst du dadran hätte ich nicht gedacht *stolz*:
der dateiname setzt sich aus dem namen der person
und einer id zusammen.
die id ist ein gewöhnlicher counter (versteckt) so
könnten ja im prinzip unendlich viele mit dem selben
namen das formular ausfüllen.
aber wofür brauchst Du die Daten überhaupt in Datei-
form auf dem Server, statt sie einfach nur via URL an
weitere Aufrufe durchzureichen?
Viele Grüße
<img src="http://www.schroepl.net/projekte/gzip_cnc/gzip_cnc.gif" border=0 alt=""> Michael
Hallo,
kann ich in ein input feld type=hidden als value ein platzhalter angeben um darin eine html seite zu speichern die an den server geschickt wird und als htm abgespeichert wird ?
möglich ist das schon, wenn der Text innerhalb des value-Attributes mit der PHP-Funktion htmlentities http://www.php.net/manual/de/function.htmlentities.php vorbereitet wird.
Anderen Beiträgen dieses Threads war aber zu entnehmen, dass der Anwender den Inhalt nicht manipulieren können soll. Dies kann jedoch bei hidden-Formularelementen nicht gewährleistet werden, da sie clientseitig manipulierbar sind (mit etwas Know-How). Das gilt ebenso für deine ID. Generell sollte man keine sicherheitstechnisch kritischen Informationen per hidden-Formularfeld weitergeben, denn alles was zum Anwender und wieder zurück übertragen wird ist angreifbar! Statt dessen können die meisten Daten auch noch im letzten Schritt erzeugt bzw. zusammengesetzt werden.
Es reicht doch völlig aus, wenn du die HTML-Seite erst nach dem Abschicken aus den Formulardaten (Name, Alter, usw.) zusammensetzt und auch die ID erst beim Speichern erzeugst.
wobei das speichern nicht das problem ist. mir fehlt die kenntis des gesamten scripts.
Ja, es gibt viel zu lernen, bis man das alles versteht. ;-)
das ganze sollte so aussehen
formular.php:
hier ist das formular mit allen möglichen fragen drin
Name
Alter
Bla und Blub
so und beim speichern werden dann diese Daten wieder ausgegeben (auch kein problem). aber so wie man sie jetzt auf dieser seite sieht möchte ich sie jetzt auch speichern (ohne variable), so das die seite fertig geschreiben auf dem server liegt.
zb.:
Formular.php:
Name: Michael
Alter: 16
Bla und blub: bla
--> Speichern
Save.php:
Sind die daten so korekkt ?
Dei Name ist Michael, Du bist 16 und bla und blub.
--> OK --> Speichern auf Server mit diesen Daten unter den namen der Person --> also Michael.htm
zusätzlich sollte auch in eine externe liste hinzugefügt werden, dass michael.htm dazu gekommen ist.
da habe ich mir gedacht das durch diese hidden - felder zu machen.
das eine fügt den link in eine txt datei (die extern ausgegeben wird) hinzu:
Dafür brauchst du kein hidden-Feld. Das Formularskript, das alle nötigen Schritte durchführt, könnte z.B. folgendermaßen aussehen:
formular.php:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<title>Formular</title>
</head>
<body>
<?php
$bAbgeschickt = ( $HTTP_SERVER_VARS['REQUEST_METHOD'] == 'POST' );
if( $bAbgeschickt ) {
$strName = $HTTP_POST_VARS['Name'];
$iAlter = $HTTP_POST_VARS['Alter'];
$bSpeichern = ( $HTTP_POST_VARS['Aktion'] == 2 );
if( $strName == '' || $iAlter == '' ) {
$strMeldung = "<h2>Bitte alle Felder ausfüllen!</h2>\n";
$bSpeichern = false;
} else {
$strHTML = "Name: $strName<br>\n";
$strHTML .= "Alter: $iAlter<br>\n";
$strHTML .= "usw.<br>\n";
if( $bSpeichern ) {
$strDateiname = 'eintrag-'.md5( uniqid( rand() ) ).'.html';
$fd = fopen( $strDateiname, 'w' );
fwrite( $fd, '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<title>'.$strName.'</title>
</head>
<body>
' );
fwrite( $fd, $strHTML );
fwrite( $fd, "\n</body>\n</html>" );
fclose( $fd );
$fd = fopen('liste.inc.txt', 'a');
fwrite( $fd, '<a href="'.$strDateiname.'">'.$strName."</a><br>\n" );
fclose( $fd );
$strMeldung = '<h2>Der Eintrag wurde gespeichert.</h2><a href="liste.php">Zur Liste.</a>';
} else {
$strMeldung = '<h2>Vorschau:</h2><hr>'.$strHTML.'<hr>';
}
}
} else {
$strName = '';
$iAlter = '';
$bSpeichern = false;
}
echo $strMeldung;
if( !$bSpeichern ) {
?>
<form action="formular.php" method="post">
Name:<br>
<input type="text" name="Name" value="<?php echo $strName; ?>"><br>
Alter:<br>
<input type="text" name="Alter" value="<?php echo $iAlter; ?>"><br>
<input type="radio" name="Aktion" value="1"<?php
if( !$bSpeichern ) echo ' checked'; ?>> Vorschau<br>
<input type="radio" name="Aktion" value="2"<?php
if( $bSpeichern ) echo ' checked'; ?>> Speichern<br>
<input type="submit" value="Abschicken">
</form>
<?php
}
?>
</body>
</html>
liste.txt:
<a href=Tim>Tim</a>
<a href=Sandra>Sandra</a>
- <a href=Michael>Michael</a>
Die Ausgabe dieser Liste könnte z.B. so aussehen (aber das scheint dir ja schon klar zu sein):
liste.php:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<title>Liste</title>
</head>
<body>
<h1>Liste</h1>
<?php require('liste.inc.txt'); ?>
<br>
<a href="formular.php">Neuen Eintrag erstellen.</a>
</body>
</html>
und das andere speichert die html seite
nur da man keine html-parts in eine value schreiben kann muss ich dafür einen platzhalter suchen und das kann man mit den variablen von php sehr gut machen.
<input type="hidden" name="<? echo $html; ?>">
Folgendermaßen sollte das funktionieren:
<input type="hidden" name="Quelltext" value="<?php echo htmlentities($html); ?>">
Aber davon möchte ich ganz stark abraten (siehe oben).
beim bestätigen der korekkten daten sollen dann im darauf folgenden script die daten auf dem server gespeichert werden. oder so :| ?
aber ich glaub wenn die variable html durch html erstezt wird geht das doch auch nicht, oder ?
wie mache ich das jetzt ?
Danke
Weiterhin viel Spaß mit PHP und immer fleißig üben.
Grüße
Stefan