if anweisung
Helmut
- perl
0 Struppi0 Norbert Kölln0 Promicha
Hallo,
Kann mir jemand helfen? Wo liegt mein Fehler?
$ende = "jpg";
$end = substr($dateiname, -3, 3);
if($end eq $ende) {
print "Achtung Dateiendung = $end . Dies ist keine Bilddatei.";
exit;
}
Grüße, Helmut
Hallo,
Kann mir jemand helfen? Wo liegt mein Fehler?
$ende = "jpg";
$end = substr($dateiname, -3, 3);
if($end eq $ende) {
print "Achtung Dateiendung = $end . Dies ist keine Bilddatei.";
exit;
}
Ich vermute du benutzt kein use strict und keine Warnungen. du kennst use CGI::Carp 'fatalsToBrowser' nicht usw.
Lies mal http://www.worldmusic.de/perl/dclpc-faq.txt
Struppi.
Moin, moin!
Du vergleichst die letzten 3 Zeichen des Dateinamens (nach dem Punkt kann eine andere Zahl von Zeichen auftreten, es könnten auch Großbushstaben vorkommen!), bei "c:/test/test.jpg" also "jpg" mit dem Inhalt der Variable $ende, also mit "jpg". Wenn diese Strings GLEICH sind, also eine Grafikdatei vorliegt, läßt Du aber die Behauptung ausgeben, es läge KEINE Grafikdatei vor! Ersetze eq durch ne, und es tut, was Du willst.
Alles klar?
Norbert
Moin, moin!
Du vergleichst die letzten 3 Zeichen des Dateinamens (nach dem Punkt kann eine andere Zahl von Zeichen auftreten, es könnten auch Großbushstaben vorkommen!), bei "c:/test/test.jpg" also "jpg" mit dem Inhalt der Variable $ende, also mit "jpg". Wenn diese Strings GLEICH sind, also eine Grafikdatei vorliegt, läßt Du aber die Behauptung ausgeben, es läge KEINE Grafikdatei vor! Ersetze eq durch ne, und es tut, was Du willst.
Alles klar?
Norbert
Ich habs jetzt so umgebaut.
$datende = 'jpg';
$endung = substr($dateiname, -3, 3);
if ($datende ne $endung) {
print "Achtung Dateiendung = $datende . Dies ist keine Bilddatei.";
exit;
}
Die Fehlermeldung lautet:
error 500: Interner Serverfehler
Das angegebene Skript konnte nicht fehlerfrei ausgeführt werden!
Grüße, Peter
Nochmal Hallo,
Ich habs jetzt so umgebaut.
$datende = 'jpg';
$endung = substr($dateiname, -3, 3);
if ($datende ne $endung) {
print "Achtung Dateiendung = $datende . Dies ist keine Bilddatei.";
exit;
}
Guck malbei meinen oberen Posting die Variante ist sicherer!
Die Fehlermeldung lautet:
error 500: Interner Serverfehler
du mußt vor jeder Ausgabe zum Browser folgendes setzten befor du
was anderes (wie die fehlermeldung ausgiebst) printes:
print "Content-type: text/html\n\n";
auch da siehe mein oberes Posting!
gruß micha
Danke Micha,
läuft. Manchmal sieht man vor lauter Bäumen einfach den Wald nicht mehr-))
Grüße, Helmut
Moin, moin!
Du vergleichst die letzten 3 Zeichen des Dateinamens (nach dem Punkt kann eine andere Zahl von Zeichen auftreten, es könnten auch Großbushstaben vorkommen!), bei "c:/test/test.jpg" also "jpg" mit dem Inhalt der Variable $ende, also mit "jpg". Wenn diese Strings GLEICH sind, also eine Grafikdatei vorliegt, läßt Du aber die Behauptung ausgeben, es läge KEINE Grafikdatei vor! Ersetze eq durch ne, und es tut, was Du willst.
Alles klar?
Norbert
Ich habs jetzt so umgebaut.
$datende = 'jpg';
$endung = substr($dateiname, -3, 3);
if ($datende ne $endung) {
print "Achtung Dateiendung = $datende . Dies ist keine Bilddatei.";
exit;
}Die Fehlermeldung lautet:
error 500: Interner Serverfehler
Ich hab dir ja bereist einen nützlichen Link gegeben um Fehler zu finden.
In deinem Falle solltest du das Skript mal auf der Konsole testen.
Struppi.
Hallo,
$ende = "jpg";
$end = substr($dateiname, -3, 3);
if($end eq $ende) {
print "Achtung Dateiendung = $end . Dies ist keine Bilddatei.";
exit;
}
benutze folgendes:
print "Content-Type: text/html\n\n";
if ($dateiname !~ m/.jpg/i || $dateiname !~ m/.gif/i)
{
($egal,$endung) = split(/./,$dateiname);
print "Achtung Dateiendung = .$endung. Dies ist keine Bilddatei.";
exit;
}
Vorteil: Diese Anweisung überprüft ob jpg oder gif in jeder Schreibweise (Jpg,JPG..) also egal ob klein oder Groß.
Wenn nicht jpg oder gif giebt er die endung aus auch wenn es 4 Buchgstaben sind (z.B. .html)
Deins ginge ansich auch wenn Du statt eq (gleich) ne (ungleich) in der IF-Anweisung stehen hättest.
grüße Micha
Hallo,
[..]
if ($dateiname !~ m/.jpg/i || $dateiname !~ m/.gif/i)
[..]
Besser ist
if ($dateiname !~ m/.jpg$/i || $dateiname !~ m/.gif$/i),
weil so überprüft wird, ob der Dateiname auf .jpg oder .gif _endet_; sonst geht z.B. auch blablubb.jpg.exe durch.
Gruß Markus
Hallo,
[..]
if ($dateiname !~ m/.jpg/i || $dateiname !~ m/.gif/i)
[..]Besser ist
if ($dateiname !~ m/.jpg$/i || $dateiname !~ m/.gif$/i),
weil so überprüft wird, ob der Dateiname auf .jpg oder .gif _endet_; sonst geht z.B. auch blablubb.jpg.exe durch.Gruß Markus
»»
:-)
genau,
aber wenn man auf der schnelle antwortet, vergiesst man
schon mal wichtige details...
Und da sich viele nicht mir Regulären Ausdrücken Auskennen, hier ne kleine Erklärung:
zueinem steht ein \ vor dem Punkt,der Punktist ein Sonderzeichen bei Reg.Ausdrücken und ist so ne art joker, also für jedes Zeichen gültig (ausser Zeilenumbruch "\n", giebnt aber auch dafür ne Ausnahmeregel)...
Das $ Zeichen welches der Markus zugefügt hat, ist das sonderzeichen für string/Zeilen Ende also xxxxx.jpgENDE, das Bedeutet das nur .jpg amEnde stehen darf und nicht mittendrinn, das Gegenstück ist ^, z.B. ^bild findet: bilder.., bildgalery.. aber nicht meinbild.jpg
Das mal so kurz erklärt, als Perl progger sollte man sich die regulären Ausdrücke mal richtig zur Brust nehmen, denn das ist
der Zauberstab bei der Perlprogrammierung
so long, Micha