Button » Schliessen » Content-Type: image/jpeg

DaveThuet

Erfahrenes Mitglied
Guten Morgen,

ist es irgendwie realisierbar einen Schliessen-Button in eine Image-Seite einzufügen?
HTML:
<input type=button name="close" value="Close" onclick="javascript:self.close()" />
Die Seite wird komplett per PHP gesteuert/kreiert mit einem Bild, dass seitens Users in ein bestimmtes Format aufgerufen wird. Nun würde ich gerne unterhalb des generierten Bildes ein Button einfügen, um das neue geöffnete Fenster wieder zu schliessen. Hier noch den Header der PHP-Datei:
PHP:
//Header ausgeben
    header('cache-control: private');
    header("Pragma: private");
    header("Content-Disposition: inline; filename={$fileName}");
    header('Content-Type: image/jpeg');
    imagejpeg($copyParams['dstIm'],"",100);
Ich danke Euch vielmals für jegliche Vorschläge oder Lösungsideen...
 
Zuletzt bearbeitet:
ist es irgendwie realisierbar einen Schliessen-Button in eine Image-Seite einzufügen?
Nein, sofern du mit Image-Seite ein per PHP generiertes Bild meinst (wie in deinem zweiten Quelltext zu sehen).

Dazu müsstest du wiederum eine HTML-Datei erstellen und einfach die PHP-Datei als Quelle angeben:
HTML:
<img src="my-php-img-generator.php" alt="An image" />

Es gibt allerdings noch einen Weg, wobei ältere Browser diesen nicht unterstützen:
Einbettung des Bildes via Base64-Kodierung.

PHP:
// Hier Ausgabe des HTML-Grundgerüsts
// Kein header() verwenden!

// Ausgabe von imagejpeg abfangen
ob_start();
imagejpeg($copyParams['dstIm'], '', 100);
$imgData = ob_get_contents();
ob_end_clean();

echo '<img src="data:image/jpeg;base64,' . base64_encode($imgData) . '" />';
 
Hallo ComFreek,

erstmals danke ich dir für deine Antwort.
Wie geht denn das wenn zum Beispiel auf einer Seite das Download-Format aufgerufen wird und per PHP übergeben wird?
Also heute läuft es so, der Besucher klickt auf ein Link wie 1280x800, der Link sieh so aus:
«http://www.hd-wallpaper-area.com/download.php?b=1280&h=800&id=49162&bild=Christmas+091.jpg»
Dieser öffnet dann eben die "download.php" mit gewählten Bild und gewähltem Format, hier 1280x800px mit Bild-Infos.
Wie binde ich dies gemäss deinem Post in eine HTML-Datei ein?
Ich habe nun zu Testzwecken eine reine HTML-Datei gemacht «download1.html» darin dann die img-tag zur download.php.
Es wird aber kein Bild generiert...
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Download preview</title>
</head>
<body>
Das gewählte Wallpaper im gewünschten Format:
<img src="./download.php" alt="Ein Bild" /><br />
Dies ist ein Test zur Verandschaulichung.<br />
<input type=button name="close" value="Close" onclick="javascript:self.close()" />
</body>
</html>
Ich habe es dann auch mit php-includen versucht, indem ich die HTML-Datei in eine PHP gespeichert habe jedoch auch Erfolglos. Da kommt eine riesen Menge an unsinnigen Zeichen... Mit PHP-readfile sieht es nicht schlecht aus, jedoch wird kein Bild generiert?
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Download-Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
Das gew&auml;hlte Wallpaper im gew&uuml;nschten Format:<br /><br />
<?php readfile("./download.php"); ?><br /><br />
Dies ist ein Test zur Veranschaulichung.<br /><br />
<input type=button name="close" value="Close" onclick="javascript:self.close()" />
</body>
</html>
Irgendwie will das nicht Klappen...
 
Zuletzt bearbeitet:
Erzeugt denn die download.php überhaupt ein Bild, wenn keine Parameter angegeben sind?
Diese ergibt nämlich zwei Fehler (gerade live ausprobiert). Das solltest du unbedingt beheben.


Das Problem an [phpf]readfile[/phpf] ist, dass es lediglich die Datei selbst (den Code) liest!
Du könntest ein [phpf]include[/phpf] einbauen, allerdings ist dein Code so strukturiert, dass du GET-Parameter vorausseetzt, welche du damit nicht übergeben kannst.
Besser wäre ein OOP-Stil.

Ich würde die download.php erstmal zu getimage.php umbenennen und Code so belassen.
Nun erstellst du eine download.php und schreibst folgendes rein:
PHP:
<!-- Dein HTML (Doctype, head, body) -->

<?php

$downloadURI = './getimage.php?' . $_SERVER['QUERY_STRING'];
$downloadURI = htmlentities($downloadURI, ENT_COMPAT | ENT_HTML401 | ENT_QUOTES);

?>
<img src="<?php echo $downloadURI; ?>" alt="Wallpaper" />
<!-- Schließen-Button -->
 
Sorry, kleiner Nachtrag...

Wenn nun ein nicht eingeloggter Besucher ein Format wählt das eigentlich ein Login verlangt, wird die Seite nicht auf die Meldungsseite (page=fail) umgeleitet. Es passiert dann einfach nichts, natürlich auch kein Bild ersichtlich was ja richtig ist als solches. Hättest du eine Idee wie man dies auch noch korrigieren kann. Die Kontrolle passiert in der donwload.php:
PHP:
<?php
/**
 * Definitions
 */
define('C_MAX_FREE_SIZE_B', 1441);
define('C_MAX_FREE_SIZE_H', 961);

//Die GET-Parameters klar definieren siehe: filter_input_array()
$args = array(
        'id'    => FILTER_VALIDATE_INT,
        'b'     => FILTER_VALIDATE_INT,
        'h'     => FILTER_VALIDATE_INT,
        'bild'  => array(   'filter'    => FILTER_SANITIZE_STRING,
                            'flags'     => FILTER_FLAG_STRIP_HIGH+FILTER_FLAG_EMPTY_STRING_NULL)
    );
//Connection statement
require_once('xyz/xyz.php');
//Aditional Functions
require_once('xyz/xyz.php');
session_start();
//$_GET parsen und die gültigen EIngaben in $myInput übertragen 
$myInputs = filter_input_array(INPUT_GET, $args);
//var_dump($myInputs);
 
//if(!$myInputs['b'] || !$myInputs['b'] || !isset($_SESSION['kt_login_id'])) {
if(($myInputs['b'] >= C_MAX_FREE_SIZE_B || $myInputs['h'] >= C_MAX_FREE_SIZE_H) && !isset($_SESSION['kt_login_id'])) {
    header("Location:http://www.hd-wallpaper-area.com/index.php?page=fail");
    exit;
} 
/* Das ist nicht der gesamte Code der download.php */
Ich danke dir nochmals für deine Hilfe, wäre Genial wenn wir das zum Laufen bringen würden.
 
Einfach den Teil, der den Login checkt, rüberkopieren:
PHP:
<?php
// Bevor irgendwas ausgegeben wird:
if (!isset($_SESSION['kt_login_id'])) {
  header('Location: http://www.hd-wallpaper-area.com/index.php?page=fail');
  exit; // niemals vergessen!
}

<!-- Dein HTML (Doctype, head, body) -->

<?php

$downloadURI = './getimage.php?' . $_SERVER['QUERY_STRING'];
$downloadURI = htmlentities($downloadURI, ENT_COMPAT | ENT_HTML401 | ENT_QUOTES);

?>
<img src="<?php echo $downloadURI; ?>" alt="Wallpaper" />
<!-- Schließen-Button -->
Allerdings würde ich dir empfehlen, solche Funktionen und auch die Fehler-URL in eine andere Datei auszulagern. Diese könntest du dann immer per [phpf]include[/phpf] einbinden.
Somit müsstest du nur eine Datei ändern, wenn sich was ander URL tut.

Wünsche dir bereits ganz frohe Festtage.
Dir auch & viel Spaß mit deiner Website ;)
 
Zurück