Bilder verkleinern
Thomas
- php
0 Tom0 Vinzenz Mai0 dedlfix
0 Vinzenz Mai0 Tom
Hallo zusammen,
DAs folgende Script sollte die Bilder im angegebenen Ordner auslesen und automatisch verkleinern, doch es geschieht nichts wenn ich das script ausführe. Weiss jemand an was es liegen könnte...?
Vielen Dank
<?php
if(isset($_POST["submit"]))
{
$ordner = "$_POST[ordnerin]";
$handle = opendir($ordner);
while ($file = readdir ($handle)) {
if($file != "." && $file != "..") {
$compl = $ordner."/".$file;
$bild="/$_POST[ordnerin]/".$file;
$size=getimagesize($bild);
$breite=$size[0];
$hoehe=$size[1];
$neueHoehe=500;
$neueBreite=intval($breite*($neueHoehe/$hoehe));
$altesBild=ImageCreateFromJPEG($bild);
$neuesBild=imagecreatetruecolor($neueBreite,$neueHoehe);
imagecopyresampled($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
mkdir("$_POST[ordnerout]", 0777);
ImageJPEG($neuesBild,"$_POST[ordnerout]/".$file);
}
}
}
?>
Hello,
Hallo zusammen,
DAs folgende Script sollte die Bilder im angegebenen Ordner auslesen und automatisch verkleinern, doch es geschieht nichts wenn ich das script ausführe. Weiss jemand an was es liegen könnte...?Vielen Dank
<?php
if(isset($_POST["submit"]))
{
$ordner = "$_POST[ordnerin]";
$handle = opendir($ordner);
while ($false !== ($file = readdir ($handle)))
{
if($file != "." && $file != "..")
{
$compl = $ordner."/".$file;
$bild="/$_POST[ordnerin]/".$file; ## gefährliche Sache...
$size=getimagesize($bild);
$breite=$size[0];
$hoehe=$size[1];
$neueHoehe=500;
$neueBreite=intval($breite*($neueHoehe/$hoehe));
$altesBild=ImageCreateFromJPEG($bild);
$neuesBild=imagecreatetruecolor($neueBreite,$neueHoehe);
imagecopyresampled($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
mkdir("$_POST[ordnerout]", 0777);
ImageJPEG($neuesBild,$_POST[ordnerout]."/.$file);
### ---------------------------
}
}
}
?>
$\_POST['irgendwas'] in die Pfade aufzunehmen, ist eine gefährliche Sache!
Harzliche Grüße vom Berg
<http://bergpost.annerschbarrich.de>
Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

Hallo Thomas,
[code lang=php]
if(isset($_POST["submit"]))
$ordner = "$_POST[ordnerin]";
Gibt es eine Konstante
ordnerin
Wenn ja, was steht drin?
Warum überprüfst Du nicht, ob diese Variable gesetzt ist?
Warum kopierst Du diese Variable um? Siehe https://forum.selfhtml.org/?t=163289&m=1063287.
ungeprüft und ungefiltert wird ein Verzeichnis geöffnet, es könnte überall
auf dem Server sein. Nett.
$handle = opendir($ordner);
Und ohne zu testen, ob opendir() erfolgreich war, versuchst Du zu lesen.
while ($file = readdir ($handle)) {
if($file != "." && $file != "..") {
$compl = $ordner."/".$file;
Wiederum hast Du Deine gefährliche, ungefilterte und ungeprüfte Variable, die
Du wegen zwei Slashes in eine Zeichenkette packst. Du solltest gegen eine
Liste erlaubter Verzeichnisse prüfen.
$bild="/$_POST[ordnerin]/".$file;
Gleiches Spiel mit der Konstanten ordnerout ...
mkdir("$_POST[ordnerout]", 0777);
dazu der Erfolg nicht überprüft ...
Es gibt viele Fehlermöglichkeiten und viel zu tun.
Freundliche Grüße
Vinzenz
echo $begrüßung;
$ordner = "$_POST[ordnerin]";
Gibt es eine Konstante
ordnerin
Wenn ja, was steht drin?
In diesem Fall sucht PHP nicht zunächst nach einer Konstanten namens ordnerin. Hier wird gleich ordnerin als String angesehen. Anders verhält es sich, bei
$ordner = $_POST[ordnerin];
wenn also $_POST[ordnerin] nicht in einem ""-String steht. Ein auf E_ALL stehendes error_reporting "beschwert" sich nur bei der Nicht-""-Variante.
http://de2.php.net/manual/en/language.types.array.php#language.types.array.donts beschreibt das in aller Ausführlichkeit, besonders die "Note" kurz vor dem Abschnitt "Converting to array" geht auf diese Ausnahme ein.
Wenn es eine Notwendigkeit gäbe, den Wert umzukopieren, wäre
$ordner = $_POST['ordnerin'];
die zu bevorzugende Schreibweise.
echo "$verabschiedung $name";
Hallo dedlfix,
$ordner = "$_POST[ordnerin]";
In diesem Fall sucht PHP nicht zunächst nach einer Konstanten namens ordnerin. Hier wird gleich ordnerin als String angesehen. Anders verhält es sich, bei$ordner = $_POST[ordnerin];
argh ja! Ich habe an dieser Stelle die Anführungszeichen außen völlig übersehen.
Danke für die korrigierenden Hinweise.
Freundliche Grüße
Vinzenz
Hello,
$ordner = "$_POST[ordnerin]";
argh ja! Ich habe an dieser Stelle die Anführungszeichen außen völlig übersehen.
Danke für die korrigierenden Hinweise.
Darüber hatten wir neulich erst diskuterit und wie unsinnig diese arg(h) *g* verwirrende unterschiedliche Behandlung seitens PHP ist. Mag sein, dass das ein nettes Spielchen der PHP-ler ist, aber für die Erstellung sicherer Programme ist es nicht hilfreich, wie Du eben selber (unfreiwillig, möchte ich annehmen) bewiesen hast.
Eine einheitliche "sichtbare" Schreibweise, die den gewünschten Zweck genau deutlich macht, kann ich daher nur empfehlen. Vielleicht finden wir den Thread dazu noch wieder. Ich weiß leider nicht mehr, unter welchem Stichwort der lief.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom