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 giovane
    Data registrazione
    17-09-2014
    Messaggi
    94

    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 è connesso ora AlterGuru
    Data registrazione
    14-02-2015
    Messaggi
    1,060

    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
    5,950

    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.
    chezDreadnaut
    "Un <BR/> è impuro, punto."
    "I <P>&nbsp;</P> non hanno diritto di esistere."

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

    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
  •