Visualizzazione risultati 1 fino 4 di 4
Like Tree1Likes
  • 1 Post By dreadnaut

Discussione: mkdir crea cartella dentro la directory esistente

  1. #1
    fcfclean non è connesso Utente
    Data registrazione
    17-09-2014
    Messaggi
    139

    Predefinito mkdir crea cartella dentro la directory esistente

    salve ho trovato questo codice che crea la cartella dentro quella esistente funziona ma come posso aggiungere un messaggio cartella creata con successo chiedo aiuto grazie


    Codice PHP:
    <?php
    $path
    = "documenti/$_POST[foldername]";
    if(!
    is_dir($path)){
    mkdir($path);

    }
    ?>

    <form action="view.php" method="post">
    <input type="text" name="foldername" id="foldername" value="Nome cartella">
    <input type="submit" value="crea">
    </form>
    Ultima modifica di dreadnaut : 24-09-2020 alle ore 21.50.58 Motivo: + tag [php] attorno al codice

  2. #2
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    3,980

    Predefinito

    Salve,
    può farlo in questo modo:

    Codice PHP:
    <?php
    $NewDir
    = mkdir($path);
    if(
    $NewDir){
    echo
    Cartella creata con successo.;
    }
    elese {
    echo
    Non è stato possibile creare la cartella.;
    }
    ?>
    Cordiali saluti.
    Ultima modifica di GraphOGLRisorse : 24-09-2020 alle ore 22.37.25 Motivo: $ per le variabili ;-)

  3. #3
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,252

    Predefinito

    Citazione Originalmente inviato da fcfclean Visualizza messaggio
    salve ho trovato questo codice che crea la cartella dentro quella esistente funziona ma come posso aggiungere un messaggio cartella creata con successo chiedo aiuto grazie
    Come suggerito da GraphOGL sopra, è possibile mostrare un messaggio. Il codice così com'è però è un po rischioso, visto non c'è nessun controllo sul nome della directory che viene creata. Proviamo a renderlo un po' più solido!

    Prima di tutto, diamo una ripulita alla sintassi del php, ed ai tag del form:
    Codice PHP:
    <?php
    $path
    = "documenti/{$_POST['foldername']}"; // ← evitiamo warning con apici, e graffe di sicurezza
    if(!is_dir($path)){
    mkdir($path);
    }
    ?>

    <form method="post">
    <label for="foldername">Cartella</label>
    <input type="text" name="foldername" id="foldername" placeholder="Nuova cartella" />
    <button type="submit">Crea</button>
    </form>
    Ho aggiunto una <label> collegata al campo, e sostituito value= con placeholder=. Per inviare il form, input/submit è un po' obsoleto, con <button> hai più controllo.

    Poi aggiungiamo il messaggio di conferma, leggermente diverso dall'esempio sopra:
    Codice PHP:
    <?php
    $path
    = "documenti/{$_POST['foldername']}";

    $creazione_riuscita = false; // ← assumiamo di non esserci riusciti
    if(!is_dir($path)){
    $creazione_riuscita = mkdir($path); // ← e poi guardiamo il risultato
    }
    ?>

    <form method="post">
    <label for="foldername">Cartella</label>
    <input type="text" name="foldername" id="foldername" placeholder="Nuova cartella" />
    <button type="submit">Crea</button>
    </form>

    <?php if ($creazione_riuscita): ?>
    <div>
    Directory <code><?= htmlspecialchars($path) ?></code> creata con successo!
    </div>
    <?php endif ?>
    Purtroppo qualsiasi cosa uno scriva nel campo, viene accodata a documenti/ senza nessun controllo. Se io scrivessi ../altrove, la directory verrebbe creata accanto a "documenti", invece che al suo interno. Per evitare questo problema, è meglio validare il nome.

    La prima parte diventa così:
    Codice PHP:
    <?php
    $nuova_directory
    = $_POST['foldername'] ?? ""; // ← se manca il parametro, usiamo una stringa vuota

    function percorso_valido($dir) {
    // il nome può contenere solo lettere, numeri, e '-'
    if (!preg_match("/[a-zA-Z0-9-]+/", $dir)) {
    return
    false;
    }
    // la directory non deve già esistere
    if (is_dir($dir)) {
    return
    false;
    }
    // tutti i controlli sono passati? OK!
    return true;
    }

    // mkdir viene chiamata solo se il percorso è valido
    $creazione_riuscita = percorso_valido($nuova_directory)
    &&
    mkdir("documenti/{$nuova_directory}");

    ?>
    I controlli potevano andare tutti su una riga, ma separandoli così sono più facili da leggere e modificare. E con questo la cartella viene creata solo se il nome rientra nei parametri.
    Ultima modifica di dreadnaut : 24-09-2020 alle ore 23.20.05
    GraphOGLRisorse likes this.

  4. #4
    fcfclean non è connesso Utente
    Data registrazione
    17-09-2014
    Messaggi
    139

    Predefinito

    buongiorno e grazie

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •