Topics-Bilder mit zu langen Dateinamen (>20)

Begonnen von Fraenzchen, 04 Oktober 2005, 20:17:03

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Fraenzchen

Hi,

ist es normal, dass ab einer bestimmten Dateinamenlänge (>20) die Topics-Bilder nicht mehr angezeigt werden? Ich kann Sie zwar im Topic-Editor auswählen (Select-Box), aber die "zu langen" werden dann nicht angezeigt und die krieg' im Themen editor die Fehlermeldung, dass das Bild nicht zu finden ist, dabei ist der Dateinamen aber abgeschnitten. Verkürze ich den Dateinamen, klappts.
In modules/topics steht zwar 'ne reg expr, aber die begrenzt (warum eigentlich?) die verwendeten Zeichen (und nicht z.B. die Erweiterungen), aber nicht deren Anzahl, sonst würden sie ja auch nicht in der Auswahl stehen, oder?

Des weiteren finde ich, dass der images/topics Ordner in die themes gehört, da ich ja template-abhängige Themen Icons brauche und der Standard-Ordner nur bei nicht vorhandenem Theme-Ordner verwendet werden sollte.

Ich hab' admin/module/topics händisch so verändert, dass sie die dateien aus meinem Theme-Ordner (mytemplate/images/topics) holt. Aber das kanns ja nicht sein. Da bräucht man was "abstrakteres", so'ne Art global $pathToTopicsImages, die , falls es Bilder in myTemplate/images/topics gibt (oder in myTemplate/theme.php gesetzt), den standard-pfad "images/topics" durch diesen ersetzt.
Wie geht man bei sowas am Geschicktesten vor (php-Newbie)?

Grüße
Fränzchen

jubilee

Hallo !
ZitatIn modules/topics steht zwar 'ne reg expr, aber die begrenzt (warum eigentlich?) die verwendeten Zeichen
Öhhh eine regex die die länge des Dateinamemens begrenzt ?
Wo hast die gesehen ?

MfG
jubilee

Fraenzchen

ZitatIn modules/topics steht zwar 'ne reg expr, aber die begrenzt (warum eigentlich?) die verwendeten Zeichen (und nicht z.B. die Erweiterungen), aber nicht deren Anzahl, sonst würden sie ja auch nicht in der Auswahl stehen, oder?

Zitat
ZitatÖhhh eine regex die die länge des Dateinamemens begrenzt ?
Wo hast die gesehen ?

Eben nicht.

Genau das ist das Problem...  ???

Grüße
Fränzchen

jubilee

Hmmmm ....
Du verwendest aber nix windows-like mit leerzeichen usw .....
Das wird auf unix-server mit einiger Sicherheit Probleme machen.

MfG
jubilee


Fraenzchen

Hi jubilee,

danke für deine Antworten.

Ich hab die admin/modules/topic.php angeguckt und beim ersten mal probieren festgestellt, das die Dateinamen, die in der select-box des topic-ediors angezeigt werden, "durch eine reg expr laufen" (~Zeile 82).
Ich hab' die dann so angepasst (topicsmanager()...), dass meine Dateinamen "durchgehen"
if ( (ereg("^([0-9a-zA-Z&+_].+)([.]{1})([a-z0-9]{3})$",$file)) )
Ich versteh' nicht, warum die angezeigten Dateien durch eine solche "Prüfung" müssen. Wenn eine Prüfung, dann eine die man in den Admin/Einstellungen verändern kann, oder?

Ich denke, dass das o.g. Problem vielleicht mit einer Datenbank-Feld- oder einer input-maxlength-Begrenzug zusammenhängt.

Grüße
Fränzchen

jubilee

ZitatIch versteh' nicht, warum die angezeigten Dateien durch eine solche "Prüfung" müssen. Wenn eine Prüfung, dann eine die man in den Admin/Einstellungen verändern kann, oder?
Warum ?
Eben damit es in den verschiedenen Server-Betriebssystemen keine Probleme gibt.
Dieser Zeichenvorat sollte unter allen möglichen Server-Systemen ohne Probleme laufen.
Mit Sicherheit sind die Zeichen &+ in Dateinamen NICHT Posix - Konform und könnten Probleme machen
(Unix - Betriebssysteme)
Das zusätzliche A-Z und der Underscore ist o.k. obwohl ich generell dazu anrate Dateinamen nur in Kleinschrift zu notieren.
MfG
jubilee

jubilee

Nochwas ....
ZitatIch denke, dass das o.g. Problem vielleicht mit einer Datenbank-Feld- oder einer input-maxlength-Begrenzug zusammenhängt.
In der Tat. Richtig gelegen.
Das Datenbankfeld
topicimage in der Topics-Tabelle hat nur 20 Zeichen Länge (Dateiname + (!!) Anhang)
Ich dachte das wäre größer dimensioniert ....
Eine Korrektur dort, würde das Problem dann lösen ....
MfG
jubilee

Fraenzchen

Hi Jubilee,

danke für den Hinweis der Dateinamenkonformität.
Daran hatte ich gar nicht gedacht  :-\
Ich finde es aber nicht gut, dass diese zu langen Dateinamen dann in der select-box zur Auswahl angezeigt werden und auswählbar sind. Das ist nicht stringent.
Also entweder eine Warnung über den zu langen Dateinamen im Adminbereich (oder zumindest eine Info im Themen Editor über die Längenbegrenzung), und/oder eine Zeichenanzahlbegrenzung in der reg expr, oder?
Ist es möglich (für 'nen Newbie), die zulässige Zeichenanzahl per sql auszulesen und in die reg expr mit einzubeziehen? Oder ist das'n Overkill?

Grüße
Fränzchen

RiotheRat

Du wirfst da zwei Sachen durcheinander ...

REGEXe stehen im üblichen Sinne für gezieltes Suchen und ggfls. Ersetzungen in den Variablen. Das andere ist die Länge eines übergebenen Strings.

Die Topic,- und auch Sectionsimages werden direkt aus dem jeweiligen Verzeichnis gelesen. Daher würde eine (wie auch immer gartete) Regel hier nicht greifen. Denn der Upload erfolgt mittels FTP (und was Du auf Deinen Server schaufelst ist erstmal Deine Sache) und das Auslesen dann mittels PHP.

Folglich bliebe nur beim Auslesen alles was länger als X Zeichen ist zu unterdrücken. Resultat: Dann kommen Anfragen warum das hochgeladene Image nicht auswählbar ist. Ein "Condition Race" der besonderen Art.

Daher: Dateinamen einfach so kurz als möglich halten und auf Leer,- sowie Sonderzeichen verzichten.

RtR
Unaufgeforderte PNs & Emails werden ignoriert

Erst wenn die letzte Zeile Code verhunzt, der letzte Server gehackt und der letzte Script-Kidde befriedigt ist, erst dann, werdet Ihr feststellen, dass Nuke nicht sicher ist...

Fraenzchen

#9
Hi RiotheRat,
Zitat von: RiotheRat am 05 Oktober 2005, 16:59:30
Du wirfst da zwei Sachen durcheinander ...

REGEXe stehen im üblichen Sinne für gezieltes Suchen und ggfls. Ersetzungen in den Variablen. Das andere ist die Länge eines übergebenen Strings.
Die Topic,- und auch Sectionsimages werden direkt aus dem jeweiligen Verzeichnis gelesen. Daher würde eine (wie auch immer gartete) Regel hier nicht greifen. Denn der Upload erfolgt mittels FTP (und was Du auf Deinen Server schaufelst ist erstmal Deine Sache) und das Auslesen dann mittels PHP.
Folglich bliebe nur beim Auslesen alles was länger als X Zeichen ist zu unterdrücken. Resultat: Dann kommen Anfragen warum das hochgeladene Image nicht auswählbar ist.

Hmm... Das ist dann aber auch im Orig. Code nicht sauber so abgegrenzt. Denn die von mir hochgeladenen files werden nur dann angezeigt, wenn sie bestimmten Anforderungen genügen:
nur Kleinbuchstaben oder Zahlen; eine Datei MeinBild.gif, mein_Bild.gif, meinbild.jpeg ist per "preset" nicht möglich.
Eine Anfrage warum ein solches Bild nicht angezeigt wird kommt vielleicht noch.

ZitatEin "Condition Race" der besonderen Art.
Ich dachte ein "Condition Race" (Race Condition) hätt' was mit der zeitlichen Konkurenz zweier (Bedingungs-)Prozessen zu tun?
Oder werf' ich da was durcheinander?   ;)


ZitatDaher: Dateinamen einfach so kurz als möglich halten und auf Leer,- sowie Sonderzeichen verzichten.

Dateinamen inkl. Erweiterung nicht länger als 20 Zeichen
[name(<17).Erweiterung(<4)]
nur Kleinbuchstaben oder Zahlen

Das könnt doch so (oä) irgendwo stehen, oder?

Friedliche Grüße
Fränzchen

RiotheRat

Selbstverständlich war Race Condition gemeint, hier im übertragenen Fall. Man sollte halt nie tippseln wenn der Hund schon am Hosenbein hängt und auf's Gassi gehen wartet. Wieder ein Race Hazard der besonderen Art.

ZitatDateinamen inkl. Erweiterung nicht länger als 20 Zeichen
[name(<17).Erweiterung(<4)]
nur Kleinbuchstaben oder Zahlen

Das könnt doch so (oä) irgendwo stehen, oder?
Werden wir dann so ähnlich wohl ins Handbuch aufnehmen. Dann sollte es damit auch keine Unklarheiten mehr geben.

RtR
Unaufgeforderte PNs & Emails werden ignoriert

Erst wenn die letzte Zeile Code verhunzt, der letzte Server gehackt und der letzte Script-Kidde befriedigt ist, erst dann, werdet Ihr feststellen, dass Nuke nicht sicher ist...

Fraenzchen

Hi Rio,

ZitatMan sollte halt nie tippseln wenn der Hund schon am Hosenbein hängt und auf's Gassi gehen wartet.
Das hängt eindeutig vom Hund ab (Rotweiler vs. Fußhupe)  ;D

Aber Späseken beiseite, der _ und A-Z kriegen keine Chance?

Grüße auch an den Hund
Fränzchen

jubilee

Hallo !
ZitatDie Topic,- und auch Sectionsimages werden direkt aus dem jeweiligen Verzeichnis gelesen. Daher würde eine (wie auch immer gartete) Regel hier nicht greifen

Das stimmt so nicht ....
admin/modules/topics.php Zeile 71-80 aus der Version 016
Zitat
while ($file = readdir($handle)) {
      if ( (ereg("^([0-9a-z]+)([.]{1})([a-z0-9]{3})$",$file)) ) {
         $tlist .= "$file ";
         }
      }
closedir($handle);
   $tlist = explode(" ", $tlist);
   sort($tlist);
   for ($i=0; $i < sizeof($tlist); $i++) {
      if($tlist[$i]!="") {
         echo "<option value=\"$tlist[$i]\">$tlist[$i]\n";
         }
      }
Es werden also tatsächlich nur die Dateien angezeigt, deren Dateiname dieser Regel entspricht.
Alle anderen werden ignoriert. Gelsen werden zwar alle, aber nicht weiterverarbeitet.

MfG
jubilee

Fraenzchen

Hi jubilee,

ZitatEs werden also tatsächlich nur die Dateien angezeigt, deren Dateiname dieser Regel entspricht.
Alle anderen werden ignoriert. Gelsen werden zwar alle, aber nicht weiterverarbeitet.

Schön und gut...

Aber kriegen "_" und "A-Z" (evt. ein zweiter "." und Erweiterung<5) auch zukünftig keine Chance?

Neugierige Grüße
Fränzchen

jubilee

Hallo !
ZitatAber kriegen "_" und "A-Z" (evt. ein zweiter "." und Erweiterung<5) auch zukünftig keine Chance?
Ich hatte Dir ja schon geschrieben, das Deine erweiterung der regex
bis auf & und + so durchaus in Ordnung ist
Aber ein extra Punkt im Dateinamen ist genauso überflüssig wie eine Dateierweiterung von 5 oder mehr Zeichen.
Das wird mit dem einen oder anderen Server Betriebssystem Ärger bringen. Somit wird das von uns auch nicht generell umgesetzt. User bestreben ist es möglich kompatibel zu allen verwendeten Server-BS zu sein.
Wenn Du das für Dich notwendig erachtest, diese Zeichen im Dateinamen zu verwenden, steht es Dir selbstverständlich frei die regex dahingehend zu erweitern.

MfG
jubilee


Andi

uma was geht es eigentlich?

Um eine einzige winzige Funktion, die 2-3 mal im Jahr benötigt wird und wo zumindest das Hochladen der Bilder per FTP-Handarbeit erledigt wird...
Ich geh mal davon aus, dass wenn ich eines der ca. 10 Topicsbildchen neu hochlade, dies anschliessend gleich verwende. Wird es nicht zur Auswahl gestellt, benenne ich es um und gut ist.

Sorry, aber für diese Lapalie fehlt mir jetzt echt das Verständnis.
schön´s Grüssle, Andi

Fraenzchen

Hi @ all,

@jubilee
ersma vielen Dank für deine konstruktiven Antworten.
ZitatAber ein extra Punkt im Dateinamen ist genauso überflüssig ...
Ok ok... :'(
Zitatwie eine Dateierweiterung von 5 oder mehr Zeichen
und Erweiterung<5 oder auch Erweiterung<=4!  (meinDing.jpeg, film.mpeg...)
ZitatWenn Du das für Dich notwendig erachtest, diese Zeichen im Dateinamen zu verwenden, steht es Dir selbstverständlich frei die regex dahingehend zu erweitern.
Ihr habt ja eure (guten) Gründe etwas so zu machen wie es ist. Daher frag' ich doch ersma warum es so ist, wenn ich es nicht gleich blicke und das is'ja auch gut so ("&+" :wall:), bevor ich was ändere.

@Andi
Zitatuma was geht es eigentlich?
Es geht um die Überlegung, pragmamx in einem verteilten Redaktions-Workflow einzusetzen.
Dabei sollen mehrere Redakteure untersch. Zugriffs-/Gestaltungs-Rechte haben, zb Topics-Imgs selbst zu setzen. Der Redakteur erhält von der Grafik das Bild "Xxxxx10-05Extras-22-1001.jpg*" und lädt es hoch. Wen ruft er jetzt an? (Ich arbeite im Bereich Print mit Redaktionen und Grafikern zusammen. *Orig. akt. Dateiname)
ZitatUm eine einzige winzige Funktion, die 2-3 mal im Jahr benötigt wird...
Gibts darüber Zahlen? Ich glaube eine aktive Community bedarf mehr als 2-3 neue (modifizierte) Themen (+entsprechende Bilder) pro Jahr. Zumindest hoffe ich das für mein Projekt.
ZitatIch geh mal davon aus, dass wenn ich eines der ca. 10 Topicsbildchen neu hochlade, dies anschliessend gleich verwende. Wird es nicht zur Auswahl gestellt**, benenne ich es um und gut ist.***
**Stimmt so nicht: Dateien, die (ereg("^([0-9a-z]+)([.]{1})([a-z0-9]{3})$",$file)) entsprechen, werden im theme editor in der select-box zur Auswahl angezeigt, aber nicht alle angezeigt (20 Zeichen-Begrenzung des Tabellen-Feldes). Bsp.: entertainment1stars.gif kann ausgewählt werden, wird aber nicht angezeigt.
***Für dich und dank eurer Hilfe inzwischen auch für mich kein Problem.
Aber wie erklär ichs dem Grafiker / Redakteur / Entscheider / Mutter / Kind??
Hej, jetzt weiss ich was ich sag:
ZitatSorry, aber für diese Lapalie fehlt mir jetzt echt das Verständnis.

Aber Späseken bei Seite:
Eine undokumentierte, nur bedingt nachvollziehbare (A-Z,_), verteilte (reg expr, DB) Beschränkung einer ggf. mehr als 1x/Monat gebrauchten Funktionalität eines aufstrebenden CMS und die Reaktion des Forums auf eine diesbezügliche Anfrage ist nicht unter allen Blickwinkeln eine Lapalie.

Zitat http://www.pragmamx.org/modules.php?name=Forum&topic=13258.msg89752#msg89752
Zitat... dieses Board wurde angelegt, um der Betriebsblindheit aus dem Weg zu gehen. Alle am Projekt pragmaMx sind schon Jahre mit diesem oder anderen Content Management Systemen beschäftigt, d.h. wir können uns oft nicht mehr daran erinnern, was uns in der Anfangszeit so schwer gefallen ist.

Friedliche Grüße
Fränzchen

PS.: Ich glaub' in pragma steckt' viel Arbeit und Herzblut drin.
Ich honoriere das und will niemanden "anpissen". Aber: "Wer nicht fragt...".

jubilee

Hallo !
Zitat**Stimmt so nicht: Dateien, die (ereg("^([0-9a-z]+)([.]{1})([a-z0-9]{3})$",$file)) entsprechen, werden im theme editor in der select-box zur Auswahl angezeigt, aber nicht alle angezeigt (20 Zeichen-Begrenzung des Tabellen-Feldes)

Korrekterweise muss man sagen, das die regex vor dem Auswahlfeld eigentlich genau wie das Datenbankfeld
auf die maximale Anzahl an Zeichen hätte begrenzt werden müssen.
Das Datenbankfeld fasst 20 Zeichen (was in der Zeit wo es nicht mehr die alte 8+3 Begrenzung der FAT-Systeme gibt schon etwas antik anmutet).
Die korrekte Regex (für max 20 Zeichen bei Dateinamenerweiterung bis zu 4 Zeichen sollte lauten :

Zitat(ereg("^([0-9A-Za-z_]{15})([.]{1})([a-zA-Z0-9]{3|4})$",$file))

Diese Regex erlaubt Zeichen a-z, A-Z, _ ,  0-9, 3 oder 4 Zeichen als Dateinamenserweiterung
Falls der namespace größer sein soll, ist die {15} um die Anzahl Zeichen höher zu setzen.
(Für max 30 Zeichen dann auf {25} usw... usf ...): btw Dabei auch das Datenbankfeld nicht vergessen
Alle anderen Zeichen, die nach Windows wohl erlaubt sind ( wie z.B. deutsche Umlaute, weitere Sonderzeichen etc. pp. ), würde ich aus Kompatibilitätsgründen nicht verwenden.
Gerade bei Unix Systemen ist (wie schon geschrieben) nicht sicher wie das System auf diese
Zeichen reagiert (z.B. wird das & in einigen Unix-Derivaten zum starten von Prozessen im Hintergrund verwendet und z.B.  das | dient zum pipen von Datenströmen)

ZitatFunktionalität eines aufstrebenden CMS und die Reaktion des Forums auf eine diesbezügliche Anfrage ist nicht unter allen Blickwinkeln eine Lapalie
Ist schon richtig. Manchmal haben bestimmt auch wir nicht den richtigen Blickwinkel.
Dies z.T. auch aus dem Wissen, das man einige Sachen einfach "nicht tut", weil man über die
negativen Konsequenzen aufgrund bitterer Erfahrung bereits informiert ist.
Leider ist
Zitatder Betriebsblindheit aus dem Weg gehen
nicht immer ganz so einfach wie es scheint.

ZitatAber wie erklär ichs dem Grafiker / Redakteur / Entscheider / Mutter / Kind??
Letztendlich helfen da (wie auch in jedem anderen Bereich des Zusammenlebens) nur eindeutige
Policies, die dem Nutzer ein Mindestmaß an Reglementierung bieten und doch dafür sorgen das es nicht zu
*Betriebsbeeinflussungen* aufgrund menschlicher Fehlbedienung kommt.

ZitatIch glaub' in pragma steckt' viel Arbeit und Herzblut drin.
Ich honoriere das und will niemanden "anpissen". Aber: "Wer nicht fragt...".
Ist schon recht !
Ist von uns auch nicht dahingehend verstanden worden .
MfG
jubilee


Fraenzchen

Hi jubilee,

riding the same wave... 8)

Zitat(ereg("^([0-9A-Za-z_]{15})([.]{1})([a-zA-Z0-9]{3|4})$",$file))
:kiss

BTW: Wo kann man den "posix"-standard für dateinamen nachlesen?
Unter google, wikipedia hab' ich nix gefunden...
Konkret (trau mich fast nicht...): Der "-"; erlaubt oder nicht??

ZitatIst schon recht! Ist von uns auch nicht dahingehend verstanden worden .
Gut.

Beste Grüße
Fränzchen

"Vieleicht ein Klugscheisser, aber immer höflich"

jubilee

Hallo !
ZitatUnter google, wikipedia hab' ich nix gefunden...
Startpunkt sollte sein :
http://de.wikipedia.org/wiki/POSIX

Letztendlich findest Du die gesammten Kerninformationen irgendwo hier
in den IEEE - Standards bzw. Vereinbarungen.
http://www.unix.org/version3/ieee_std.html
Was den normalen - angeht, bin ich jetzt auch überfragt. Ich würde den nicht verwenden, aber
ich meine er müsste gehen.
MfG
jubilee