Contao-Camp 2024
Ergebnis 1 bis 5 von 5

Thema: nicht öffentlichen Member Ordner auslesen

  1. #1
    Contao-Nutzer
    Registriert seit
    05.02.2020.
    Beiträge
    9

    Standard nicht öffentlichen Member Ordner auslesen

    Hallo,

    ich würde gerne prüfen, ob ein geschützter Member-Ordner leer ist.

    Bei einem öffentlichen Ordner klappt es so:

    PHP-Code:
    $this->import('FrontendUser''User');
    if (!empty(
    $this->User->homeDir)) { ... } 
    Bei einem geschützten Ordner liefert empty() immer true zurück


    Gibt es hierfür eine Möglichkeit? Danke.

  2. #2
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935

    Standard

    empty() prüft, ob die Übergebene Variable leer (oder gar nicht gesetzt) ist -- nicht ob der Ordner, der in dieser Varable angegeben ist leer ist.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  3. #3
    Contao-Nutzer
    Registriert seit
    05.02.2020.
    Beiträge
    9

    Beitrag

    stimmt...

    Auf diese Art habe ich jedoch das gleiche Problem:

    PHP-Code:
    $FrontendUserObject = \FrontendUser::getInstance(); 
    $homeDirPath = \FilesModel::findByUuid($FrontendUserObject->homeDir)->path;  

    if (
    count(scandir($homeDirPath)) > 2) {
        echo 
    'NOT EMPTY';
    } else {
        echo 
    'EMPTY';

    Bzw... fehlt es hier auch an der PHP-Basis?

  4. #4
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935

    Standard

    Ich würde hier noch prüfen, ob $homeDirPath nicht leer ist (also ob das Mitglied ein Home-Directory gesetzt hat) und ob der Rückgabewert von scandir() false ist (ist er laut doku, wenn der angegebene Parameter kein Verzeichnis ist:

    PHP-Code:
    $FrontendUserObject = \FrontendUser::getInstance();  
    $homeDirPath = \FilesModel::findByUuid($FrontendUserObject->homeDir)->path;   

    if (!empty(
    $homeDirPath)) { 
      
    $filesInDir scandir($homeDirPath);
      if (
    false !== $filesInDir && count($filesInDir) > 2) { 
        echo 
    'NOT EMPTY'
      } else { 
        echo 
    'EMPTY or DOES NOT EXIST'
      }
    } else {
      echo 
    "homeDir NOT SET";

    Ansonsten sehe ich auch nicht, wieso es nicht funktionieren sollte, denn der Schutz der Verzeichnisse sollte ein Thema des Webservers und nicht von Contao sein.
    Aber lass Dir sicherheitshalber mal ausgeben, welcher Pfad in path steht. Vielleicht erklärt es das ja (öffentliche Verzeichnisse ex. als Symlink unterhalb von web/, gechützte nicht).
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  5. #5
    Contao-Nutzer
    Registriert seit
    05.02.2020.
    Beiträge
    9

    Standard

    Danke für den Verbesserungsvorschlag.

    Du hast mir auf alle Fälle den richtigen Denkanstoss gegeben um meinen Fehler zu kapieren.

    Ich habe diese Unterscheidung in einer Template-Datei eingesetzt und daher bezieht sich der Pfad wohl auf das /web Verzeichnis..
    Jetzt habe ich es so abgeändert:

    PHP-Code:
    empty(TL_ROOT '/' $homeDirPath)... 
    und es passt.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •