Come creare una directory con un nome univoco in Php

PHP fornisce una serie di funzioni utili per eseguire attività come l'identificazione o la modifica di una directory corrente, creare nuove directory, eliminare oppure elencare quelle esistenti.

-

Per creare un nuova directory in Php è possibile utilizzare la funzione mkdir(), un nome ripreso dal vecchio comando dei sistemi operativi Unix per creare directory a riga di comando.

Iniziamo con una nostra funzione che ci consentirà di generare stringhe casuali che utilizzeremo come nome delle directory create.

Funzione per generare un nome con caratteri casuali

function generaNomeDirectory(){
	
$serieCaratteri = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
	
$numeroCar = substr(str_shuffle($serieCaratteri), 0, 6);
	
return $numeroCar;
	
}
$nomeDirectory = generaNomeDirectory();

echo $nomeDirectory;

//es: 45frt7

Questa semplice funzione non fa altro che alternare i caratteri della variabile $serieCaratteri  in maniera casuale generando stringhe di lunghezza variabile in questo caso stringhe lunghe 6 caratteri: str_shuffle($serieCaratteri), 0, 6).

Creazione di directory con mkdir

Per creare una directory nella stessa directory dello script PHP e sufficiente assegnare il nome della directory

$nuovaDir = mkdir("miaDirectory", "0775");

Mentre per creare una nuova directory in una diversa dalla posizione corrente dello script PHP è necessario specificare il percorso:

$nuovaDir = mkdir("/upload/miaDirectory", "0775");

Allo script si può inserire un secondo argomento utile per assegnare un attributo di scrittura alla nuova directory creata: (..., "0775");

Detto questo passiamo col creare la nostra nuova  directory con nomi causali univoci utilizzando la funzione generaNomeDirectory()

function generaNomeDirectory(){
	
$serieCaratteri = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
	
$numeroCar = substr(str_shuffle($serieCaratteri), 0, 8);
	
return $numeroCar;
	
}
	
   $nomeDirectory = generaNomeDirectory();

   $uploadDirectory = "/Uploads/".$nomeDirectory."/";
   
   
if (!file_exists(''.$uploadDirectory.'/')) {

   mkdir('Uploads/'.$nomeDirectory.'', 0755, true);
   
   
}

Il funzionamento è molto semplice, nella prima fase si crea un nome casuale da assegnare alla nuova directory, mentre nella seconda fase si verifica file_exists() che non esista una directory con lo stesso nome, infine con  mkdir() si crea la nuova directory.

Eliminazione di una directory

Allo stesso modo è possibile eseguire una cancellazione di una directory utilizzando la funzione rmdir() facendo passare come parametro il nome stesso della directory da eliminare, facendo attenzione che la stessa sia vuota senza alcun file diversamente l'eliminazione non andrà a buon fine.

$directory = "tuaDirectory";

if(!rmdir($directory )) {
  echo ("Impossibile eliminare $directory ");
}

 

Trova e modifica una directory

Tramite la funzione php getCwd() è possibile identificare la directory corrente:

$direct_corrente = getCwd();

echo "La directory corrente è $direct_corrente ";

è una volta trovata  modificarne il nome utilizzando un' altra preziosa funzione di Php chdir(). Questa funzione accetta un unico paramento che è naturalmente il nome del percorso della nuova directory.

$dir_corrente = getCwd();

echo "La directory corrente è $dir_corrente <br>";

chdir ("/nuovoNomeDirectory");

$dir_corrente = getCwd();

echo "La directory corrente ora è $dir_corrente <br>";

Il funzionamento è semplice, con $dir_corrente  si chiede il nome della directory corrente, mentre con chdir ("/nuovoNomeDirectory") si assegna il nuovo valore alla directory.

Elencare i file in una directory

Un'altra funzione molto utile in Php è scandir(), che può essere utilizzata per leggere il contenuto di una directory. Accetta due argomenti come parametro che sono il percorso della directory e il parametro 0 oppure 1 a seconda di come vogliamo visualizzare l'elenco dei file in ordine alfabetico o inverso.

$dir_corrente = getCwd();

echo "La directory corrente è  $dir_corrente";

$array = scandir(".", 1);

print_r($array);	
	

 

 

 

 

 

 

 

 

 


 
Php
 


Lascia un commento