Autor Beitrag
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Do 02.09.10 20:54 
hi, hast Du das nicht schon so stehen? der link zeigt zu den original Grössen und das Bild selbst für die Vorschau kommt aus den anderen Ordner?
Ansonsten als Beispiel.
Vorrausgesetzt beide haben den gleichen Namen.
ausblenden Quelltext
1:
echo '<a href="Anzeige.php?original='.$file.'"><img src="kleinbild/'.$file.' "/></a><br					

Wechseln in einen anderen Ordner brauchst du da nicht. Für die Übergabe machst Du dir ne "Anzeige.php und startest ne neue Seite. Hat den Vorteil, Deine Seite bleibt im Hintergrund offen. Auf der Extra, kann man sich nun entscheiden das Bild zu Saugen oder das Fenster zu schliessen.
So auf die Schnelle.

Gruss Alf
Leider schon eeewig nix mehr mit PHP gemacht

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Dude566 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Fr 03.09.10 18:00 
So ich habe jetzt mal etwas anders Probiert und die Bilder direkt mit imagecopyresampled als Thumbnail erzeugen wollen.
Die Anleitung dazu habe ich hier her:
forum.de.selfhtml.or...5/4/t104845/#m646950

Leider funktioniert es nicht und es werden wie wild komische Zeichen auf die ganze Seite geschrieben. :lol:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
<?php
      $handle = opendir($ordner);
      
      while($file = readdir($handle))
      {
        $full_path = $ordner.'/'.$file;
        @$sourcefile = imagecreatefromjpeg($full_path);
        $height = imagesy($sourcefile); 
        $width = imagesx($sourcefile);
        $destinationfile = imagecreatetruecolor(250, 250);
        imagecopyresized($destinationfile, $sourcefile, 0, 0, 0, 0, $width, $height, 250, 250);
        imagejpeg($destinationfile, "", 70);
        echo '<div class="eintrag">';
        echo '<h2>'.$file.'</h2>';
        echo '<a href="'.$full_path.'"><img src="index.php" alt="kleine Vorschau"/></a>';
        @$datentyp = getimagesize($full_path);
        if (!$datentyp)
        {
          echo '<a href="index.php?ordner='.$full_path.' ">In Ordner wechseln</a>';
        }
        else
        {
          echo '<a href="'.$full_path.'">Zur Einzelansicht</a>';
        }
        echo '</div>';
      }
      
      closedir($handle);
    ?>


Natürlich fehlt hier die Berechnung der passenden Größe für das Vorschaubild, deshalb der Wert 250 für Width und Height zum testen.

Hoffe ihr könnt mir sagen was ich korrigieren muss, dass es funktioniert.

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Fr 03.09.10 18:14 
Was soll den das mit der index.php
ausblenden Quelltext
1:
"><img src="index.php"					

Du musst dafür ne ander Scriptdatei nehmen, wo Du den code für das Umwandeln machst und diese dann zur Anzeige bringen!

Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Dude566 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Fr 03.09.10 18:16 
Ja aber ich will ja nicht für jedes Bild eine neuen Tab aufmachen, es soll ja eine Bilderübersicht werden, außerdem wurde im Thread geschrieben ich soll doch den Namen der php Datei als Source angeben.

Könnte es vielleicht auch mit utf8 zu tun haben, das habe ich hier gelesen de.php.net/manual/de...nction.imagejpeg.php ?

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Fr 03.09.10 18:31 
user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
außerdem wurde im Thread geschrieben ich soll doch den Namen der php Datei als Source angeben.

aber doch nicht die Index.php. die hat doch nix mit dem Code (umwandeln) zu tun. Dafür sollts Du auch ne andere php nehmen und die dann zur Anzeige bringen. Dabei bleibt es immer die gleiche php, nur der Inhalt(das bild) wird geändert.
Wobei ich es wahrscheinlich nicht sehr effektiv sehe, die Bilder so Umzuwandeln um sie als Vorschaubilder zu machen. Kommt aber wahrscheinlich darauf an wieviele es werden?
Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Dude566 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Fr 03.09.10 19:03 
Naja pro Übersicht gehe ich mal von höchstens 100 Bildern aus, in der Regel wohl eher weniger.

Habe es jetzt so gemacht:
index.php
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
<?php
      $handle = opendir($ordner);
      
      while($file = readdir($handle))
      {
        $full_path = $ordner.'/'.$file;
        echo '<div class="eintrag">';
        echo '<h2>'.$file.'</h2>';
        echo '<a href="'.$full_path.'"><img src="show.php?path='.$full_path.'" alt="kleine Vorschau"/></a>';
        @$datentyp = getimagesize($full_path);
        if (!$datentyp)
        {
          echo '<a href="index.php?ordner='.$full_path.' ">In Ordner wechseln</a>';
        }
        else
        {
          echo '<a href="'.$full_path.'">Zur Einzelansicht</a>';
        }
        echo '</div>';
      }
      
      closedir($handle);
    ?>


show.php
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
<?php
  $path = $_Get['path'];
  @$sourcefile = imagecreatefromjpeg($path);
  $height = imagesy($sourcefile); 
  $width = imagesx($sourcefile);
  $destinationfile = imagecreatetruecolor(250, 250);
  imagecopyresized($destinationfile, $sourcefile, 0, 0, 0, 0, $width, $height, 250, 250);
  imagejpeg($destinationfile, "", 70);
?>


Leider wird nur der Alternativtext der Bilder ausgegeben, deutet doch daraufhin das beim Laden des Bildes etwas fehlschlägt oder?

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Fr 03.09.10 22:15 
Lass Dir doch mal echos ausgeben, ob die Variablen den richtigen Inhalt haben!
Oder was sagt die Log?

Noch nen kleinen Tip für was eine Index.php da ist! Sollte standart mässig in jedem Ordner drin sein und diesen Inhalt haben!(mit wenigen Ausnahmen)
index.php
ausblenden Quelltext
1:
<?php header ("location: ../index.php"); exit(); ?>					

mehr sollte da nicht drin stehen! Damit wirst Du zurückgeschickt zur startseite, falls jemand versucht
"http://www.Meineseite.de/photos/" aufzurufen z.B.
und im Stammordner steht das in der index drin
ausblenden Quelltext
1:
2:
3:
<?php
require_once('include.php');
?>
mit der include.php werden dann alle Initialisierungen deiner Seite Vorgenommen
Und um sicher zu gehen kann man diese Standartbezeichnungen include.php, admin.php usw. für sich auch anders benennen. Weil, Hackangriffe zielen meistens auf diese Standartnamen zurück!
Du solltest also Deine phps nicht als index.php deklarieren.

Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!

Für diesen Beitrag haben gedankt: Dude566
Dude566 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Fr 03.09.10 23:55 
Ja aber dann sind ja theoretisch die anderen Index.php für Hackerangriffe anfällig oder?

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Dude566 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Sa 04.09.10 11:50 
Also in den Logs des Apache von XAMPP kann ich keinen Fehler finden, weis aber auch nicht genau wonach ich suchen sollte.
Der Pfad in $full_path scheint auch richtig übergeben zu werden, z.B. images/test.jpg.
Trotzdem wird leider nur der Alternativtext angezeigt.

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Sa 04.09.10 12:36 
Hast du mal php.net versucht?
www.php.net/manual/d...nction.imagejpeg.php

du musst in der show.php
a) den header setzen (sonst weiß der browser ja nicht, dass es bild ist)
b) die funktion richtig verwenden. ""<>NULL

Für diesen Beitrag haben gedankt: Dude566
Dude566 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Sa 04.09.10 12:54 
Ich habe es jetzt so gemacht:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
<?php
  $path = $_Get['path'];
  @$sourcefile = imagecreatefromjpeg($path);
  $height = imagesy($sourcefile); 
  $width = imagesx($sourcefile);
  $destinationfile = imagecreatetruecolor(250, 250);
  imagecopyresized($destinationfile, $sourcefile, 0, 0, 0, 0, $width, $height, 250, 250);
  header('Content-type: image/jpeg');
  imagejpeg($destinationfile);
  imagedestroy($im);
?>


Trotzdem wird immer nur der Alternativtext ausgegeben.

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 918
Erhaltene Danke: 158

Win 10
VS 2013, VS2015
BeitragVerfasst: Sa 04.09.10 13:10 
user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe es jetzt so gemacht:
Trotzdem wird immer nur der Alternativtext ausgegeben.

Dann ruf die Seite die das Bild ausgibt mal direkt mit dem Browser auf!

das Bild ist schon ein jpeg, oder?

Ich tippe mal, dass "imagedestroy($im);" einen Fehler wirft.
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Sa 04.09.10 14:07 
und nimm mal das @ vor "$sourcefile" weg
das hat da nix zu suchen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 04.09.10 15:20 
user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:
und nimm mal das @ vor "$sourcefile" weg
das hat da nix zu suchen.
Im fertigen Skript dann schon. Denn da sollte man ggf. interne Pfade usw. nicht durch Fehlermeldungen öffentlich machen. Deshalb ist es da schon besser die Fehlermeldungen zu unterdrücken.

Für die Fehlersuche ist es aber keine so gute Idee, da man die Fehler so eben nicht angezeigt bekommt.

Und wo wir schon bei Sicherheit sind:
Per Get Variablen einfach so zu akzeptieren ohne diese zu escapen usw., ist für einen öffentlichen Server eine äußerst schlechte Idee.

Was das Problem angelangt:
Sind denn die umgewandelten Dateien dann vorhanden? Hast du einmal versucht diese manuell im Browser anzusprechen?
Und sagen dir vielleicht ein Plugin wie HttpFox oder die integrierten Tools deines Browsers mehr?

Für diesen Beitrag haben gedankt: Dude566
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Sa 04.09.10 15:41 
müsste das @ dann nicht vor den funktionsnamen?

nja auf jeden Fall erst mal die Seite im Browser öffnen...
irgendwie kommt von dir immer nur "geht nicht", "zeigt nix an"
aber mal selber sowas gucken, fehlermeldungen ausgeben lassen, variablendumps und was man halt so alles machen kann....nix
Dude566 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Sa 04.09.10 16:13 
user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:

aber mal selber sowas gucken, fehlermeldungen ausgeben lassen, variablendumps und was man halt so alles machen kann....nix


Wenn man nicht weis wie geht das ja auch so gut, und im Browser werden keine Fehlermeldungen angezeigt. :roll:

So jetzt zum Problem:
Wenn ich die show.php mit einem GET Parameter aufrufe kommt eine Seite mit Fehleausgaben:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
http://localhost/galeriev3/show.php?path=images/bild01.jpg

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: Filename cannot be empty in C:\Dokumente und Einstellungen\Julian\Eigene Dateien\XAMPP\xampp\htdocs\galeriev3\show.php on line 3

Warning: imagesy() expects parameter 1 to be resource, boolean given in C:\Dokumente und Einstellungen\Julian\Eigene Dateien\XAMPP\xampp\htdocs\galeriev3\show.php on line 4

Warning: imagesx() expects parameter 1 to be resource, boolean given in C:\Dokumente und Einstellungen\Julian\Eigene Dateien\XAMPP\xampp\htdocs\galeriev3\show.php on line 5

Warning: imagecopyresized() expects parameter 2 to be resource, boolean given in C:\Dokumente und Einstellungen\Julian\Eigene Dateien\XAMPP\xampp\htdocs\galeriev3\show.php on line 7


Also die erste Meldung sagt ja wohl aus das überhaupt keine Filename übergeben wird, kann ja aber eigentlich nicht sein denn ich habe ja einen per Get geliefert.

Edit: Also ich habe der Variable $path einfach mal etwas fest zugewiesen, jetzt gibt er das Bild aus.
ausblenden Quelltext
1:
$path = 'images/bild01.jpg';					


Pfad wird auch richtig per GET übergeben habe es mir zum Test per echo ausgeben lassen.

Übrig bleibt jetzt noch Zeile 9 in der wohl was falsch sein soll:
ausblenden Quelltext
1:
Warning: Cannot modify header information - headers already sent by (output started at C:\Dokumente und Einstellungen\Julian\Eigene Dateien\XAMPP\xampp\htdocs\galeriev3\show.php:3) in C:\Dokumente und Einstellungen\Julian\Eigene Dateien\XAMPP\xampp\htdocs\galeriev3\show.php on line 9					


Also beim Senden der Headerdaten.

Edit2: Jetzt klappt es, habe das Senden der Headerdaten an den Anfang gesetzt, dachte das wäre unwichtig denn auf www.php.net/manual/d...nction.imagejpeg.php kommt es auch erst später im Verlauf.

Einziges Problem ist jetzt noch das nicht das ganze Bild im Thumbnail erzeugt wird, aber das wird wohl etwas mit den Abmessungen zu tun haben. :lupe:

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Sa 04.09.10 16:35 
Siehst du...also zeigt der Browser doch Fehlermeldungen an... :roll:
Und mal ein echo oder var_dump da einzufügen ist auch nicht schwer...

mit einem echo, hättest du den 1. fehler gefunden. ($_GET nicht $_Get)

der header() aufruf kann später erfolgen. muss nur vor jeder ausgabe stehn. also vor jedem echo oder image-ausgabe
(PS: header('...image') dürfte verhindern, dass du echo ausgaben siehst. also nicht vergessen auszukommentieren, beim testen)

dann zeig mal dein aktuelles script
Dude566 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Sa 04.09.10 16:50 
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
<?php
  header('Content-type: image/jpeg');
  $path = $_GET['path'];
  @$sourcefile = imagecreatefromjpeg($path);
  $height = imagesy($sourcefile); 
  $width = imagesx($sourcefile);
  $destinationfile = imagecreatetruecolor(250, 250);
  imagecopyresized($destinationfile, $sourcefile, 0, 0, 0, 0, $width, $height, 250, 250);
  imagejpeg($destinationfile);
  imagedestroy($destinatonfile);
?>


Muss jetzt noch einen Algorithmus schreiben der die Bilder im richtigen Verhältnis für die Thumbnails verkleinert, denn meine Freunde werden wohl Bilder veschiedenster Auflösungen hochladen und in der Übersicht darf die Breite nicht mehr als 300px betragen

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Sa 04.09.10 21:50 
hi, wenn ich mich recht entsinne hat der Header eigentlich gar nix in php zu suchen. :gruebel:
PHP ist ja eigentlich nicht für irgendwelche Anzeigen zuständig!
Dafür schreibt man sich die html Seite dazu und übergibt ihr die notwendigen Infos, die für die Anzeige zuständig sind!
Aber kann ja sein das sich dies alles in den Jahren geändert hat :nixweiss: 4-5 Jahre her bei mir.

Das mit den echos und log bzw. error_reporting(E_ALL) hatte ich Dir aber schon mal gesagt!

user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
Ja aber dann sind ja theoretisch die anderen Index.php für Hackerangriffe anfällig oder?
Nein!
Ein Browser sucht standartmässig (ohne weitere Angaben) immer eine index(php/html) und zwar in allen Verzeichnissen die ich als Gast bei Dir aufrufen kann. Darum auch der Hinweis für was die index.php sind!
Angreifen kann man nur phps denen man was übergibt. Für das Escapen und überprüfen, das nur das drin ist, was Du erwartest, bist Du selbst zuständig :wink: machst Du es nicht, hast Du irgendwann ein Problem. Hat dir @jaenicke ja auch gesagt.

Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Sa 04.09.10 22:03 
@alf: doch der header muss schon sein. dafür ist dier header() funktion ja da.
da man mit PHP ja auch bilder dynamisch generieren kann (z.b. captchas) muss man ja auch sagen können, dass man hier ein bild hat.
oder auch für cache-control o.ä. ist der header ja auch da.