[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Abfrage der größe in Aktionen - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
is-werbung
Beiträge: 14
Registriert: 9. Sep 2009, 08:58

Abfrage der größe in Aktionen

24. Nov 2010, 12:57

Hey leute,

hab soeben ein Modul programmiert indem man via Redaxo-Modul Bilder aus einen Slider ändern kann (Slider hat eine größe von 1024x300 Pixel)

Soweit läuft alles bestens,

jedoch will ich jetzt mit einer Aktion für dieses Modul noch das Absenden verhindern sollte das Bild kleiner sein als 1024x300.

Erst dachte ich kein problem - aber irgndwie meldet er überhaupt nichts - wisst ihr vielleicht was mein fehler ist?

Aktion:

Code: Alles auswählen

<?php
$img = $REX[HTDOCS_PATH].'files/'.$REX_ACTION['MEDIA']['1'].'';
$size = getimagesize($img);
$w = $size[0];
$h = $size[1];
if($w < '1024' OR $h < '300')
{
$REX_ACTION['SAVE'] = false;
$REX_ACTION['MSG'] = 'Bitte wählen Sie ein Bild mit min. einer Breite von 1024 und einer Höhe von 300!';
}
?>
Wenn ich den Code vom Modul noch Online stellen soll einfach posten.


Danke :)

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

24. Nov 2010, 21:01

Hast du mal die Inhalte der Variablen ausgeben lassen?
Also z.B: var_dump($img);
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

Benutzeravatar
is-werbung
Beiträge: 14
Registriert: 9. Sep 2009, 08:58

25. Nov 2010, 11:07

Ja, habs jetzt mal gemacht, der code oben ist so gesehen schon sauber, nur sollte ich beim nächsten mal den richtigen pfad zum bild angeben ;)

trotzdem danke. :)

hier nochmal der überarbeitete code:

Code: Alles auswählen

<?php
$img = $REX[HTDOCS_PATH].'files/'.$REX_ACTION['MEDIA']['1'].'';
$size = @getimagesize($REX[HTDOCS_PATH].'files/'.$img);
$w = $size[0];
$h = $size[1];
if($w < '1024' OR $h < '300')
{
$REX_ACTION['SAVE'] = false;
$REX_ACTION['MSG'] = 'Bitte wählen Sie ein Bild mit min. einer Breite von 1024 und einer Höhe von 300!';
}
?>
Dies ist der Teil der vorhin falsch war:

Code: Alles auswählen

$size = @getimagesize($REX[HTDOCS_PATH].'files/'.$img);
wie man sieht hab ich nun davor mit einer Redaxo-Variable den richtigen Pfad angegeben.

ganz wichtig noch, das "@" symbol bei getimagesize sollte man keinesfalls auf "öffntlichen" seiten benutzen, es unterdrückt die fehlermeldung seitens php.

in meinen fall ist das vertretbar da es ja im backend des cms'es stattfindet und somit keine potentielle sicherheitslücke ist.

(ohne @-symbol gibt es eine php-fehlermeldung sollte generell kein bild gewählt sein, die redaxo-fehlermeldung kommt jedoch auch mit @-symbol)

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

25. Nov 2010, 19:32

is-werbung hat geschrieben: hier nochmal der überarbeitete code:

Code: Alles auswählen

<?php
$img = $REX[HTDOCS_PATH].'files/'.$REX_ACTION['MEDIA']['1'].'';
$size = @getimagesize($REX[HTDOCS_PATH].'files/'.$img);
...
Die Pfadangabe HTDOCS_PATH doppelt drin zu haben, macht aber nicht wirklich sinn. Was steht denn da, wenn du nach der ersten Zeile ein var_dump($img); reinsetzt?
Da sollte dann schon der richtige Pfad im $img erscheinen.
BTW: Setze mal die Hochkommas in $REX: $REX['HTDOCS_PATH']
is-werbung hat geschrieben: ganz wichtig noch, das "@" symbol bei getimagesize sollte man keinesfalls auf "öffntlichen" seiten benutzen, es unterdrückt die fehlermeldung seitens php.
Was du damit abfangen möchtest, kannst du auch für den Benutzer etwas informativer gestallten (ungetestet!):

Code: Alles auswählen

<?php
if (isset ($REX_ACTION['MEDIA']['1']) and $REX_ACTION['MEDIA']['1'] != '') {
  $img = $REX['HTDOCS_PATH'].'files/'.$REX_ACTION['MEDIA']['1'].'';
  $size = @getimagesize($REX['HTDOCS_PATH'].'files/'.$img);
  if ($size !== FALSE) {
    $w = $size[0];
    $h = $size[1];
    if ($w < '1024' OR $h < '300')
    {
      $REX_ACTION['SAVE'] = false;
      $REX_ACTION['MSG'] = 'Bitte wählen Sie ein Bild mit min. einer Breite von 1024 und einer Höhe von 300!';
    }
  } else {
    $REX_ACTION['SAVE'] = false;
    $REX_ACTION['MSG'] = '"'.$REX_ACTION['MEDIA']['1'].'" ist kein Bild.';
  }
} else {
  $REX_ACTION['SAVE'] = false;
  $REX_ACTION['MSG'] = 'Kein Bild gefunden.';
}?>
Geht aber bestimmt noch eleganter :)
Eine umfangreichere Funktion zu dem Thema findet sich auf php.net
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

Benutzeravatar
is-werbung
Beiträge: 14
Registriert: 9. Sep 2009, 08:58

26. Nov 2010, 10:28

stimmt danke, hab das mit den hochkommas und dem doppelten Pfad noch ausgebessert.

Ja, benutzerfreundlich oder nicht ist ja in dem sinne eher weniger intressant, ist ja schließlich nur 1x Person die an der seite arbeitet.

und zeit ist geld :)

danke trotzdem, echt toller support hier ;) könnte sich manch ein anderes cms ne scheibe abschneiden :D

Zurück zu „Allgemeines [R4]“