SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 07.11.2004, 06:37:31
rsont rsont ist offline
Anfänger
 
Registriert seit: Jun 2003
Ort: Deutschland
Beiträge: 11
Formulardaten an Bildscript senden

Hallo,

ich möchte mit einem PHP-Script ein Bild erzeugen
aus Formular-Daten.

Die Sache funktioniert im Prinzip auch schon,
nur habe ich jetzt folgendes Problem:

Das PHP-Script gibt direkt die Bild-Daten aus.
Das heißt, das Bild wird so angezeigt, wie wenn
man direkt eine Bild-Adresse im Browser eingibt.

Nun soll unter dem Bild aber auch noch ein
Texthinweis und ein Link angezeigt werden.

Somit müsste ich also das PHP-Scrip in eine
HTML-Datei einbauen:

<img src="bild.php">

Das geht aber nicht, weil das Formular dann
ja die HTML-Seite aufruft und die Daten an
die HTML-Seite statt an das PHP-Script
übergeben möchte.

(Fehlermeldung: Method not allowed)

Die einzige Lösung, die mir einfällt, wäre nun
das Script so zu ändern, so dass die Bilddatei
nicht an den Browser geschickt wird, sondern
gespeichert wird, und anschließend vom einem
HTML-Teil im PHP-Script ganz normal als jpg-
Bild geladen und angezeigt wird.

Nur das wäre sehr umständlich, weil die Datei
danach ja nicht mehr benötigt wird. Das
Abspeichern wäre also überflüssig. Außerdem
müsste ich jedes mal einen anderen Namen für
die jpg-Datei vergeben, weil sonst ja der eine
User möglicherweise das Bild eines andern Users
laden würde.

Wer weiß eine bessere Lösung.

Für Eure Hilfe im Voraus besten Dank.
Mit Zitat antworten
  #2  
Alt 07.11.2004, 11:16:16
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
formular.php:
Code:
<form method="POST" action="seite2.php">
<!-- Hier die Eingabefelder -->
</form>
seite2.php:
PHP-Code:
<img src="bild.php?foo=<?php echo $_POST['foo']; ?>">
<a href="link.php">Linktext</a>
bild.php:
Das Bild erzeugen und an den Browser senden.
Mit Zitat antworten
  #3  
Alt 07.11.2004, 16:50:38
rsont rsont ist offline
Anfänger
 
Registriert seit: Jun 2003
Ort: Deutschland
Beiträge: 11
Wenn ich das richtig verstanden habe, soll die erste
PHP-Seite die Daten an die Bild-PHP-Seite weiterleiten.

Ich hab das jetzt mal so versucht, aber es
funktioniert leider immer noch nicht.

Der Quelltext der PHP-Seite sieht dann so aus:

<img src="bild.php?foo=">

Aber das Bild wird nicht angezeigt.

Was mir auch noch nicht klar ist:
Wofür steht das "foo", und muß ich da was ändern?

Und was ich vielleicht auch noch erwähnen sollte:
Die Formulardaten sind relativ umfangreich und
können auch einen Bild-Upload enthalten. Aber
auch wenn kein Upload enthalten ist, funktioniert
es nicht.

Das Form-Tag der Formularseite sieht so aus:

<form enctype="multipart/form-data" method="post" action="seite2.php" target="Fenstername">

(Ich vermute, dass die Formulardaten immer noch
nicht ankommen. Die Datei bild.php gibt in dem
Fall statt dem Bild eine Fehlermeldung aus, die
dann nicht als Bild angezeigt werden kann.)

Wenn ich vom Formular aus direkt die Datei bild.php
aufrufe, funktioniert's - wie gesagt - problemlos,
(sowohl mit, als auch ohne Upload).
Mit Zitat antworten
  #4  
Alt 07.11.2004, 16:58:18
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Zitat:
Original geschrieben von rsont
Was mir auch noch nicht klar ist:
Wofür steht das "foo", und muß ich da was ändern?
Foobar - Wikipedia

An Stelle von foo übergibst du also alle Daten, die aus dem Formular kommen und in bild.php benötigt werden.
Mit Zitat antworten
  #5  
Alt 07.11.2004, 17:59:55
rsont rsont ist offline
Anfänger
 
Registriert seit: Jun 2003
Ort: Deutschland
Beiträge: 11
Zitat:
Original geschrieben von xabbuh
Foobar - Wikipedia

An Stelle von foo übergibst du also alle Daten, die aus dem Formular kommen und in bild.php benötigt werden.
OK, soweit ist mir das jetzt klar. Textvariablen kann ich so
übertragen, aber mit dem Upload funktioniert das nicht.

Die post-Daten werden so ja mit der Methode get weitergeschickt.
Kann es sein, dass Datei-Uploads nur mit der Methode post
funktionieren?

Und kann man die Daten auch mit der Methode post weiterleiten?
Mit Zitat antworten
  #6  
Alt 07.11.2004, 18:47:04
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Zitat:
Original geschrieben von rsont
OK, soweit ist mir das jetzt klar. Textvariablen kann ich so
übertragen, aber mit dem Upload funktioniert das nicht.
Du könntest $_FILES['foo']['tmp_name'] bzw. jeden anderen benötigten Schlüssel per GET an die bild.php übergeben.
Möglich wäre auch folgendes:
PHP-Code:
<?php
    $str 
rawurlencode(serialize($_FILES['foo']));
?>
<img src="bild.php?foo=<?php print $str?>">
Zitat:
Die post-Daten werden so ja mit der Methode get weitergeschickt.
Kann es sein, dass Datei-Uploads nur mit der Methode post
funktionieren?
Zitat:
Da Dateien in einem Upload prinzipiell beliebig groß werden können, muss die Übermittlung des Formulares mit der Methode POST erfolgen.
Quelle: Wie funktioniert ein Dateiupload über HTML-Formulare?

Zitat:
Und kann man die Daten auch mit der Methode post weiterleiten?
Nein, aber du kannst die Daten ja als GET-Parameter weitergeben:
PHP-Code:
<img src="bild.php?post=<?php echo rawurlencode(serialize($_POST)); ?>">
In bild.php machst du dann folgendes:
PHP-Code:
<?php
    $post 
unserialize(rawurldecode($_GET['post']));
?>
$post ist dann ein Array, das praktisch die Werte enthält, die $_POST vorher enthalten hat.
Mit Zitat antworten
  #7  
Alt 07.11.2004, 20:19:44
rsont rsont ist offline
Anfänger
 
Registriert seit: Jun 2003
Ort: Deutschland
Beiträge: 11
Hallo xabbuh, erst mal Dake für Deine bisherigen Antworten.

Ich überlege gerade, ob es eine andere Lösung für mein Problem gibt,
ohne dass ich Unmengen von get-Daten übertragen muss. (Wobei mir
jetzt auch immer noch nicht ganz klar ist, wie das mit der get-
Methode funktionieren soll. Wenn ich z.B. die Variablen $_FILES
und/oder $_POST an das zweite Script übergebe, dann habe ich dort
zwar alle Angaben über das Upload-Bild (z.B. die Dateigröße) aber
nicht das Bild selbst.)

Daher jetzt meine neue Überlegung:

Wenn ich das Bild gleich mit dem ersten PHP-Script erzeuge, gibt es
dann eine Möglichkeit, das Bild, das ich dort mit imagecreate erzeugt
habe für das zweite Script bild.php zugänglich zu machen, ohne es
als Bilddatei abzuspeichern?

Oder wenn ich es mit dem ersten Script doch abspeichere, dann könnte
ich auf das zweite Script verzichten, und direkt im img-Tag den Datei-
Namen angeben, nur das möchte ich aus mehreren Gründen nicht. (Die
Bilder würden dann gespeichert bleiben, und jeder könnte die Bilder
aus den Daten der anderen User abrufen, wenn er den Dateinamen kennt.)

Aber gibt es z.B. eine Möglichkeit, dass das zweite php-Script
die zuvor gespeicherte Datei "bildname.jpg" abruft (so wäre der
Dateinamen für Niemand ersichtlich) und das Bild ausgibt,
so wie mit

imagejpeg($bildname,"",qualität)

nur mit dem Unterschied, dass kein jpg-Bild das mit imagecreate
erzeugt wurde ausgegeben wird, sondern direkt die zuvor gespeicherte
Datei "bildname.jpg" (also ohne imagecreatefromjpg und erneutes
jpg-komprimieren, sondern dass direkt eine bestehende jpg-Datei an
den Browser geschickt wird)?
Mit Zitat antworten
  #8  
Alt 07.11.2004, 20:29:41
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Zitat:
Original geschrieben von rsont
Ich überlege gerade, ob es eine andere Lösung für mein Problem gibt,
ohne dass ich Unmengen von get-Daten übertragen muss.
Erkläre doch mal ein wenig genauer, was du überhaupt machen willst. Vielleicht fällt mir dann ja eine effektivere Lösung ein.

Zitat:
Wenn ich z.B. die Variablen $_FILES
und/oder $_POST an das zweite Script übergebe, dann habe ich dort
zwar alle Angaben über das Upload-Bild (z.B. die Dateigröße) aber
nicht das Bild selbst.)
Der temporäre Dateiname der Datei auf dem Server ist doch in $_FILES['foo']['tmp_name'] gespeichert.

Daher jetzt meine neue Überlegung:

Zitat:
Wenn ich das Bild gleich mit dem ersten PHP-Script erzeuge, gibt es
dann eine Möglichkeit, das Bild, das ich dort mit imagecreate erzeugt
habe für das zweite Script bild.php zugänglich zu machen, ohne es
als Bilddatei abzuspeichern?
Ich bin mir nicht sicher, ob es funktioniert, aber probiere doch einfach mal eine Variante aus, die ungefährt so aussieht:
PHP-Code:
<?php
    $img 
imagecreate($width$height);
    
//  jetzt alle möglichen Operationen auf das Bild anwenden
    
print '<img src="bild.php?img=' $img '">';
?>
bild.php
PHP-Code:
<?php
    imagejpeg
($_GET['img']);
?>
Zitat:
Aber gibt es z.B. eine Möglichkeit, dass das zweite php-Script
die zuvor gespeicherte Datei "bildname.jpg" abruft (so wäre der
Dateinamen für Niemand ersichtlich) und das Bild ausgibt,
so wie mit

imagejpeg($bildname,"",qualität)

nur mit dem Unterschied, dass kein jpg-Bild das mit imagecreate
erzeugt wurde ausgegeben wird, sondern direkt die zuvor gespeicherte
Datei "bildname.jpg" (also ohne imagecreatefromjpg und erneutes
jpg-komprimieren, sondern dass direkt eine bestehende jpg-Datei an
den Browser geschickt wird)?
Wenn der Dateiname bekannt ist, unter dem das Bild abgespeichert wurde, kannst du es folgendermaßen mit der Datei bild.php an den Browser senden:
PHP-Code:
<?php
    $filename 
'foo.jpg';
    
$img imagecreatefromjpeg($filename);
    
imagejpeg($img);
?>
Hoffe, das hilft dir in irgendeiner Form weiter.
Mit Zitat antworten
  #9  
Alt 07.11.2004, 21:18:48
rsont rsont ist offline
Anfänger
 
Registriert seit: Jun 2003
Ort: Deutschland
Beiträge: 11
Zitat:
Original geschrieben von xabbuh
Erkläre doch mal ein wenig genauer, was du überhaupt machen willst. Vielleicht fällt mir dann ja eine effektivere Lösung ein.
So wie ich's im ersten Posting erklärt habe: Ich möchte ein Bild
ausgeben, das ein PHP-Script aus Formular-Daten erzeut, wobei
das PHP-Scrip aber nicht direkt nur das Bild ausgeben darf,
weil da auch noch Text und ein Link dazu soll.

Aber ich glaub' ich hab' jetzt eine Lösung gefunden!

Ich werd's so machen, dass das PHP-Script das Bild als jpg
abspeichert, und das zweite Script (im img-Tag des ersten
Scripts) das gespeicherte Bild ausgibt

Zitat:
Original geschrieben von xabbuh
Wenn der Dateiname bekannt ist, unter dem das Bild abgespeichert wurde, kannst du es folgendermaßen mit der Datei bild.php an den Browser senden:
PHP-Code:
<?php
    $filename 
'foo.jpg';
    
$img imagecreatefromjpeg($filename);
    
imagejpeg($img);
?>
Ja, nur so würde das Bild ja nochmal neu komprimiert werden,
und das wäre überflüssig und schlecht für die Bildqualität.

Aber ich hab' jetzt mal rumprobiert, und so funktionierts:

<?php
header("Content-type: image/jpeg");
readfile("name.jpg");
?>

So gibt das zweite PHP-Script das Bild aus, wenn dieses vom
ersten Script zuvor gespeichert wurde, ohne erneute Komprimierung,
und ohne dass der Dateiname des Bildes für den User ersichtlich ist.

Ich denke, das ist die beste Lösung.

Trotzdem danke für Deine Hilfe.
Mit Zitat antworten
Antwort


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

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


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


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt