php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 15-07-2002, 18:08
Highexplosive
 Newbie
Links : Onlinestatus : Highexplosive ist offline
Registriert seit: Jul 2002
Beiträge: 27
Highexplosive ist zur Zeit noch ein unbeschriebenes Blatt
Unhappy Hilfe, Hilfäää! PHP-generierten Code als HTML-Datei speichern.

Hallo Leute!
Ich bin halb verzweifelt! Vor ein paar Wochen habe ich hier im Forum wegen einem bestimmten Problem gefragt und viele gute Hinweise bekommen. Ich habe jetzt alles in Sack und Tüten (nochmal ein förmliches Danke an alle Hilfsbereiten!) aber an einer Sache beiße ich mir seit Tagen die Zähne aus:

Ich habe ein Formular gebastelt (siehe "Quelle.htm"), das ausgefüllt wird und als Action eine PHP-Seite aufruft ("Ziel.php"), in der das ausgefüllte Formular noch einmal angezeigt wird. Gleichzeitig will ich den von der "Ziel.php" generierten HTML-Code als HTML-Datei speichern, damit ich das ausgefüllte Formular als HTML-File per Mail versenden kann. Der Sinn ist, dass es beim Empfänger optisch 1:1 ankommt. (Und nicht als ASCII-Stapel.)

Ich bin folgendermaßen vorgegangen:
Mit fread() lese ich die "Ziel.php" aus und mit fputs() schreibe ich den Inhalt in eine "Test.htm". So weit funzt auch alles, die "Ziel.php" erscheint als ausgefülltes Formular, die "Test.htm" wird auf HD erstellt und das Formular wird darin abgebildet. Aber: Ohne Variablenwerte! Wenn ich jedoch die "Ziel.php" im Browser mit "Speichern unter" als .htm safe, ist der Inhalt in der HTML-Datei drin. Aber wenn ich die "Ziel.php" mit fputs() in ein HTML-File schreibe, fehlen die Werte! Das gibts doch nicht! Was mach ich denn da falsch?? Es muss doch möglich sein, den vom php-Skript generierten HTML-Code in eine HTML-Datei zu schreiben!?? So, als würde man die generierte Seite mit "Datei / Speichern unter" abspeichern...

Bitte helft mir, ich dreh bald durch!

Zum Verständnis habe ich die "Quelle.htm" und die "Ziel.php" (mit einem ganz rudimentären Formular) auf den Server geschmissen. Da könnt ihr gucken, wie ich das meine. Ihr findet es hier:

http://www.highexplosive.de/quelle.htm

Also das, was nach Klick auf den Abschicken-Button angezeigt wird, soll so 1:1 in eine HTML-Datei geschrieben werden.
Dazu habe ich folgendes Skript zusammengefummelt (ist jetzt aber nicht mehr drin):

*************
<?php

# Zwei Dateizeiger werden eingerichtet. Einer zum lesen der "ziel.php",
# einer zum schreiben der "test.htm".
$zeigerr=fopen("ziel.php","r");
$zeigerw=fopen("test.htm","w+");

# Die Größe der "ziel.php" wird ermittelt, weil fread() eine Größenangabe
# als Parameter erwartet. Anschließend wird der "Read-Zeiger" ausgelesen.
$size=filesize("ziel.php");
$ausgelesen=fread($zeigerr, $size);

# Die ausgelesenen Werte werden in den Write-Zeiger gestopft.
fputs($zeigerw,$ausgelesen);

# Beider Zeiger schließen.
fclose($zeigerr);
fclose($zeigerw);

?>
*******************

Hier stimmt doch alles, oder? Das Skript läuft und erstellt auch ordnungsgemäß die Datei "test.htm", aber die Werte werden nicht reingeschrieben. Wat mach ichn falsch??

Vielen Dank schon mal!
HE



Hier noch der Quellcode der beiden Online-Files:

quelle.htm
++++++++++
<html>
<head>
<title>
Umzugsgutliste - UTM
</title>
</head>
<body bgcolor="#C2C2D6">
<div align="right"></div>
<div align="center">
<form name="form1" method="post" action="ziel.php">
<div align="center">
<table width="322" border="0" cellspacing="2" cellpadding="2">
<tr>
<td height="16" width="83"><font size="2" face="Arial, Helvetica, sans-serif">Auftraggeber</font><font face="Arial, Helvetica, sans-serif">:</font></td>
<td height="16" width="346"> <font face="Arial, Helvetica, sans-serif">
<input type="text" name="auftraggeber" size="40" maxlength="40">
</font></td>
</tr>
</table>
<p>
<input type="submit" name="abschicken" value="Formular abschicken">
</p>
</div>
</form>
</div>
</body>
</html>
++++++++

ziel.php
++++++++
<html>
<head>
<title>
Umzugsgutliste - UTM
</title>
</head>
<body bgcolor="#C2C2D6">
<div align="center">
<p><font face="Arial, Helvetica, sans-serif">Das Formular wurde mit folgenden
Angaben verschickt:</font></p>
</div>
<div align="center">
<form name="form2" method="post" action="">
<table width="356" border="0" cellspacing="2" cellpadding="2">
<tr>
<td height="16" width="91"><font size="2" face="Arial, Helvetica, sans-serif">Auftraggeber</font><font face="Arial, Helvetica, sans-serif">:</font></td>
<td height="16" width="251"> <font face="Arial, Helvetica, sans-serif">
<?PHP echo "<b>". $auftraggeber."</b>" ;?>
&nbsp; </font></td>
</tr>
</table>
</form>
<p>&nbsp;</p>
</div>
</body>
</html>
+++++++++
Mit Zitat antworten
  #2 (permalink)  
Alt 15-07-2002, 23:02
Titus
 PHP Master
Links : Onlinestatus : Titus ist offline
Registriert seit: Jan 2001
Ort: im Rodgau
Beiträge: 4.292
Titus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

http://www.php-resource.de/manual.php?p=ref.outcontrol
PHP-Code:
ob_start();
include (
'zuspeichern.php');
if (
$f fopen('gespeichert.html''w'))
{
  
fputs($fob_get_contents());
  
fclose($f);
  echo 
'gespeichert.';
}
else
  echo 
'fopen fehlgeschlagen';
ob_end_clean(); 
__________________
mein Sport: mein Frühstück: meine Arbeit:

Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.
Mit Zitat antworten
  #3 (permalink)  
Alt 18-07-2002, 20:52
Highexplosive
 Newbie
Links : Onlinestatus : Highexplosive ist offline
Registriert seit: Jul 2002
Beiträge: 27
Highexplosive ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo Titus!

Danke für deine Antwort aber das funktioniert bei mir leider nicht. Ich hab den Codeschnipsel angepasst, aber wenn ich ihn in ein Form mit Selbstaufruf packe (vor "if ($submit){..." - wenn das Formular also mit Werten gefüllt ist und abgeschickt wurde) lädt die Seite ewig, der Server verabschiedet sich mit "Not allowed" und das HTML-file wird nicht erstellt.

Wenn ich deinen Codeblock in eine zweite, über "submit" aufgerufene PHP-Seite stecke, wird das ausgefüllte Form zwar angezeigt und die HTML-Seite erstellt, aber die HTML-Seite ist leer.

Hast du noch ne andere Idee? Ich habe heute schon in einem fetten Kompendium geguckt, habe nichts gefunden, dein Link auf das Online-Handbuch hat mir auch nicht groß geholfen. Ist das Problem so schwierig?? Mit PHP kann man doch ganz andere Sachen regeln!? Ich bin drauf und dran, das Formular mit Acrobat zu basteln.

Würde mich freuen, wenn du dich noch mal meldest. Jeder andere mit ner Idee ist mir auch willkommen.

Thanx, HE.
Mit Zitat antworten
  #4 (permalink)  
Alt 18-07-2002, 21:11
Titus
 PHP Master
Links : Onlinestatus : Titus ist offline
Registriert seit: Jan 2001
Ort: im Rodgau
Beiträge: 4.292
Titus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Versuchen wir es mal so:
2.
neue Ziel.php:

ob_start();
bisheriger Text der Ziel.php
ob_end_flush();
mail verschicken

3.
Wenn das nicht tut, müssen wir eben zu anderen Mitteln greifen.
Die Methode funktioniert allerdings nur mit url_fopen=On (php.ini)
Ziel.php umbenennen in parseZiel, die neue Ziel.php sieht so aus:
PHP-Code:
$par = array();
foreach(
$_POST as $k=>$v)
{
  if (
is_array($v))
    foreach(
$v as $kk=>$vv)
      
$par[] = $k.'['.$kk.'] = 'urlencode($vv);
  else
    
$par[] = "$k="urlencode($v);
}
$f file('http://www.deinedomain.de/pfad/neuZiel.php?parsed=1&'
  
implode('&'$par));
$text implode(''$f);
mail ($empfaenger'Formular'$text,
  
"From: [email]ich@meinedomain.de[/email]\nDocument-Type: text/html");
echo 
$text
Ganz wichtig bei der Methode: Du musst $_GET statt $_POST bzw. $HTTP_POST_VARS benutzen (oder auf register_globals=On vertrauen).
__________________
mein Sport: mein Frühstück: meine Arbeit:

Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.
Mit Zitat antworten
  #5 (permalink)  
Alt 27-07-2002, 21:00
Highexplosive
 Newbie
Links : Onlinestatus : Highexplosive ist offline
Registriert seit: Jul 2002
Beiträge: 27
Highexplosive ist zur Zeit noch ein unbeschriebenes Blatt
Standard Danke!

Hallo Titus!
Hab mir deinen Codeschnipsel zu Gemüte geführt und da gings bei mir "kling".
Klar, man muss den Outputbuffer vor dem Formular aufmachen. So wird das Form
inkl. Inhalt gepuffert. Dann nur noch in die Zieldatei stopfen und fertig.

Unten steht, wie ich es nun geregelt habe. Die "Vermailungsfunktion" kann man gleich
noch drankleben, aber hier nur die reine Speichern-Routine. So funktioniert das.

Also hab vielen Dank für deine Hinweise! Ich habe 4 Wochen lang immer wieder überlegt,
ohne funktionierendes Ergebnis. Es klingt vielleicht schwülstig, aber Leute wie du
sind ein Segen fürs Web! Also Danke! Jetzt kann ich die Site endlich fertigstellen
und ausliefern.

-------------------------------------------

<?php
# Dieses Skript speichert den Inhalt eines Formulars
# als statische HTMl-Seite. Das Formular wird quasi
# abfotografiert.

# Output-Buffer starten
ob_start();

# Ab übernächster Zeile das Formular einfügen +++++++++++++++++
?>



<?php
# Dateizeiger im Schreibmodus öffnen, Zieldatei erstellen
$f = fopen('Formular.htm', 'w');

# Output-Buffer in Dateizeiger schreiben
fputs($f, ob_get_contents());

# Dateizeiger schließen
fclose($f);

# Output-Buffer leeren und schließen
ob_end_flush();
?>
Mit Zitat antworten
  #6 (permalink)  
Alt 27-07-2002, 21:04
Benutzerbild von Berni Berni
  OWNER
Links : Onlinestatus : Berni ist offline
Registriert seit: Jan 2001
Ort: Frankfurt / Egelsbach
Beiträge: 6.313
Blog-Einträge: 6
Berni befindet sich auf einem aufstrebenden Ast
Standard

auch eine gute Lösung PHP Source Code Utility
__________________

php-Entwicklung | ebiz-consult.de
PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
die PHP Marktplatz-Software | ebiz-trader.de
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Projektmanagement Damals und Heute
Projektmanagement Damals und HeuteWerfen Sie einen Blick auf das, was sich verändert hat, und entdecken Sie, wo die Zukunft dieses Gebietes hinsteuert.

18.01.2021 | Berni

Arbeitsmanagement-Tools
Arbeitsmanagement-ToolsWarum jedes Team Arbeitsmanagement-Tools benötigt. Man schätzt, dass 25% eines durchschnittlichen Mitarbeiter-Tages durch ineffiziente Arbeit vergeudet werden.

11.12.2020 | Berni


 

Aktuelle PHP Scripte

Formmailer Bootstrap 4

Mit dem Formmailer kann man sich eMails über seine Seite zukommen lassen.

08.07.2021 arne-home | Kategorie: PHP/ Formular
Fehlerseite Bootstrap 4

Bei Aufruf einer nicht existierenden Seite, teilen Sie Besuchern mit einer eigenen Fehlerseite mit, dass die gewünschte Seite nicht gefunden wurde. Die eigene Fehlerseite sollte dasselbe Design wie die Website haben. Zudem sollte ein Link zur Startseite a

04.07.2021 arne-home | Kategorie: PHP/ Counter
Upload Bootstrap 4

Mit dem PHP - Uploadscript kann man schnell und einfach Bilder und Dateien auf den Webserver hochladen.

04.07.2021 arne-home | Kategorie: PHP/ File
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:51 Uhr.