Visualizzazione dei risultati da 1 a 4 su 4

Discussione: percorso directory

  1. #1

    percorso directory

    ciao a tutti,

    mi sono bloccato nel creare una funzione di controllo per un programma.

    alla mia funzione viene passato il realpath di una directory, quello che deve fare la mia funzione è controllare che il path passato come argomento non sia una directory o sottodirectory di un dato percorso.

    faccio un esempio.

    devo controllare che la directory c:\prova\pippo non sia una dir o sottodir del path c:\prova\

    mi potreste indicare una funzione che mi possa aiutare?
    Vi ringrazio,

  2. #2
    Confronta i primi X caratteri della directory con il path. Dove X è la lunghezza di path.

  3. #3
    ciao Filippo,

    purtroppo era la strada che avevo seguito. Confrontando i primi x caratteri non ottengo un controllo preciso perchè se il path passato è per esempio /pippo/pluto_c/ciccio e il path della root è /pippo/pluto rischio che comunque mi blocchi la funzione perchè rileva gli stessi X caratteri nei due path, quando in realtà i path sono diversi.

    Mi spiego meglio: questa funzione esegue una copia di una cartella X dentro la cartella specificata dall'utente. Io non voglio che l'utente mi indichi un percorso di destinazione che risiede dentro la cartella X poichè a quel punto la funzione inizierebbe a copiarsi all'infinito.


    per esempio:

    CARTELLA X : /ciccio/pluto

    cartella passata: /ciccio/pluto/paperino/ => non va bene
    cartella passatga: /ciccio/pippo =>OK

  4. #4
    A me l'algoritmo suggerito funziona perfettamente ...

    Codice PHP:
    <?php 

    function is_sub_dir($dir$subdir) {
        
    $dir realpath($dir);
        
    $subdir realpath($subdir);
        if (!
    $dir || !$subdir) {
            return 
    false;
        }
        return 
    substr($subdir0strlen($dir)) == $dir;
    }

    $destination '/ciccio/pluto';
    $folder '/ciccio/pluto/paperino/';
    var_dump(is_sub_dir($destination$folder));

    $destination '/ciccio/pippo';
    $folder '/ciccio/pluto/paperino/';
    var_dump(is_sub_dir($destination$folder));

    ?>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.