Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    60

    Problema con creazione cartella

    Ciao a tutti,

    ho preso da un sito (e un pò personalizzato) questo script, ma essendo alle prime armi con PHP non riesco a scrivere un determinato passaggio.

    Ho un normalissimo form:

    codice:
    <form method="get" action="creacartella.php"> 
    Scegli il nome del tuo spazio:
    
     
    
     
    <input type="text" name="$destination"> 
    
     
     
    <input type="submit" value="Invia"><input type="reset" value="Cancella"> 
    </form>
    e lo script PHP:


    codice:
    <?php
    function copy_directory( $source, $destination ) { if ( is_dir( $source ) ) { @mkdir( $destination ); $directory = dir( $source ); while ( FALSE !== ( $readdirectory = $directory->read() ) ) { if ( $readdirectory == '.' || $readdirectory == '..' ) { continue; } $PathDir = $source . '/' . $readdirectory; if ( is_dir( $PathDir ) ) { copy_directory( $PathDir, $destination . '/' . $readdirectory ); continue; } copy( $PathDir, $destination . '/' . $readdirectory ); } $directory->close(); }else { copy( $source, $destination ); } } copy_directory('cms','percorso', 0777); ?>
    Questo script come potete vedere permette di creare una cartella (in questo caso "percorso") e di copiarci all'interno tutto il contenuto della cartella "cms".
    Ora, la mia domanda è, come faccio a fare in modo che lo script chiami la cartella che viene creata con il nome inserito nel form e non "percorso"?

    Mi spiego meglio se un utente digita nel form "ciao" lo script deve creare una cartella "ciao" e inserire al suo interno il contenuto della cartella "cms" (parte che già esegue).

    Grazie in anticipo per gli aiuti.
    Se qualcosa non è chiaro chiedete pure.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Cmq è pericolosissima questa operazione... ci vorrebbero MOLTI controlli sul parametro passato!

    Codice PHP:
    <form method="post" action="creacartella.php"
      
    Scegli il nome del tuo spazio:
      
     
      
     
      <
    input type="text" name="destinazione"
      
     
     
      <
    input type="submit" value="Invia"><input type="reset" value="Cancella"
    </
    form
    Codice PHP:
    $destinazione $_POST['destinazione'];
    function 
    copy_directory$source$destination ) {
      if ( 
    is_dir$source ) ) {
        @
    mkdir$destination );
        
    $directory dir$source );
        while ( 
    FALSE !== ( $readdirectory $directory->read() ) ) {
          if ( 
    $readdirectory == '.' || $readdirectory == '..' ) { continue; }
          
    $PathDir $source '/' $readdirectory;
          if ( 
    is_dir$PathDir ) ) {
            
    copy_directory$PathDir$destination '/' $readdirectory ); continue;
          };
          
    copy$PathDir$destination '/' $readdirectory );
        };
        
    $directory->close();
      } else {
        
    copy$source$destination );
      };
    };
    copy_directory('cms',$destinazione0777); 

  3. #3
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    Modifica questo ($destination da dove lo prendevi??)

    codice:
    <input type="text" name="$destination">
    con

    codice:
    <input type="text" name="nomeCartella">
    e nello script cambia

    Codice PHP:
    copy_directory('cms','percorso'0777); 
    con

    Codice PHP:

    if(!isset($_GET['nomeCartella']))
    {
      
    // qui dovresti gestire la situazione in cui nella query non sia presente il nome della cartella da creare
    }
    else
    {
    copy_directory('cms',$_GET['nomeCartella'], 0777);

    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    60
    Grazie per le risposte, di sicurezza in php non so praticamente niente

    @eiyen sapresti dirmi più nel dettaglio cosa intendi per "controlli sul parametro passato" e su come potrei risolvere in modo pratico?

    Grazie ancora

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    La "destinazione" viene scritta manualmente dagli utenti e bisognerebbe fare dei controlli di sicurezza... per esempio dovresti almeno limitare il set di caratteri utilizzabili consentendo magari solo lettere, numeri e trattini (per evitare anche injections nel caso uno immetta qualcosa come "../pippo")

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.