Visualizzazione risultati 1 fino 22 di 22

Discussione: Creare nuova cartella

  1. #1
    Guest

    Talking Creare nuova cartella

    come posso in php dare l'ordine di creare una nuova cartella nel mio server con nome l'id del utente?

  2. #2
    Guest

  3. #3
    Guest

    Predefinito

    questo qui è il codice

    Codice PHP:
    <?php
    mkdir
    ("/path/to/my/dir", 0777);
    ?>
    io vorrei che un utente entri nel mio sito e carichi un immagine a questo punto viene creata una cartella con il nome id del utnete (per evitare che 2 utenti carichino una foto con lo setesso nome e una delle due verebbe canbellata) e all'interno della cartella si salva l'immagine.
    COSA DEVO MODIFICARE?

  4. #4
    Guest

    Predefinito

    Scusa ma se l'id è diverso per ogni utente, non dovresti avere problemi.

    Chiedi di modificare qualcosa, ma che cosa , forse vorresti adattarlo al tuo script.
    Se è così, dovresti postare il codice

  5. #5
    Guest

    Predefinito

    Ma in ogni caso, basta che lo stesso utente, carichi due volte la stessa immagine e avresti sempre lo stesso problema.

    Devi fare un while e controllare con la funzione file_exists() che il file, se esiste, mostrare un errore o rinominarla

  6. #6
    Guest

    Predefinito

    Ma in ogni caso, basta che lo stesso utente, carichi due volte la stessa immagine e avresti sempre lo stesso problema.
    Devi fare un while e controllare con la funzione file_exists() che il file, se esiste, mostrare un errore o rinominarla
    no, questo deve essere un avatar quindi l'utente deve caricare una sola immagine

    index.php

    Codice PHP:
    <? ##################################
    # PHP CLASS 1.2 #
    # CLASSE PER L'UPLOAD #
    # TUTORIAL E GUIDA ALL'USO #
    # IL NET-SURFER #
    ##################################
    $max_file_size = 15000000;//Dimensione massima di un file.102400 Bytes = 100 KiloByte;1024 Bytes = 1 KiloByte
    $image_type = array('gif','jpeg','jpg','x-png','bmp','pict','pct','psd','pngpeg','png'); //Estensioni accettate.Badate bene di scriverle in minuscolo!
    if(isset($_FILES['file'])){//Se esiste $_FILES
    require "class.upload.php";//includiamo la classe
    $obj = new upload($_FILES['file'],"uploads/",$max_file_size,$image_type); //Inizializziamo la classe!
    /*Il primo parametro è il file
    il secondo la cartella con le immagini(E ricordate di inserire / dopo il nome);
    Il terzo parametro è il limite massimo di grandezza dei files
    il quarto parametro è l'array contenente le estensioni accettate
    */
    }
    ?><?php echo "Estensioni accettate : ";//Scrive, tramite foreach, tutte le estensioni accettate
    foreach($image_type as $type){
    echo
    $type." ";
    }
    ?>
    <form enctype="multipart/form-data" action="index.php"
    method="post"><input name="MAX_FILE_SIZE"
    value="<?php echo $max_file_size; ?>" type="hidden">
    <input name="file" type="file"><input
    name="upload" value="Upload" type="submit">
    class.upload.php

    Codice PHP:
    <?php

    ##################################
    # PHP CLASS 1.2 #
    # CLASSE PER L'UPLOAD #
    # TUTORIAL E GUIDA ALL'USO #
    # IL NET-SURFER #
    ##################################
    class upload{//Il nome della classe
    public $files;//Variabile pubblica di classe contenente il file
    public $dir;//Variabile pubblica di classe contenente la cartella
    public $max_size;//Variabile pubblica di classe contenente la dimensione massima dei files
    public $ext;//Variabile pubblica di classe contenente l'estensione del file
    public $ammissed_ext;//Variabile pubblica di classe contenente l'array con le estensioni accettate
    public $error;//Variabile pubblica di classe contenente gli errori
    public $complete;//Variabile pubblica di classe contenente il path sul disco dell'immagine
    public $link;//Variabile pubblica di classe contenente l'URL dell'immagine
    public $my_err;//Variabile pubblica di classe contenente l'errore finale
    function load($esito,$err = ""){//Funzione load .Prevede due variabili :
    //esito(true o false, true se non c'è errore, false se c'è);
    //Err : se esito è false allora dentro contiene l'errore.Altrimenti sarà vuoto



    if(empty($err) && $esito = true){//Se non ci sono errori e l'esito è ok

    $this->error = "";
    if(!
    $this->is_ammissed_file()){ //Qui si fa uso di una funzione interna alla classe
    //Con $this->miafunc(); apriamo la funzione.Se la classe è statica utilizzeremo self::miafunc();
    $this->error[] = "Estensione non accetta!";//Aggiungiamo un errore nell'array
    }



    if(empty(
    $this->error)){
    {
    $this->files['name'] = str_ireplace(" ","_",$this->files['name']);//Eliminiamo gli spazi e sostituiamoli con -

    $id = 0;
    if(
    file_exists($this->dir.$id."_".$this->files['name'])){//Se esiste il file con quel nome..
    while(file_exists($this->dir.$id."_".$this->files['name'])){//Finchè esiste il file con quel nome...

    $id++;//incrementa l'id
    $this->complete = $this->dir.$id."_".$this->files['name']; //Crea il file con il nome : n_nomefile.ext dove n sta per un numero

    }

    if(!@
    move_uploaded_file($this->files['tmp_name'],$this->complete)){ //Se l'upload è andato a buon fine...

    $this->error[] = "Impossibile copiare il file nella directory";


    }
    $this->link = "http://".$_SERVER['SERVER_NAME'].substr($_SERVER['REQUEST_URI'],0,-9).$this->complete; //Crea il link!
    }else{//Se non esiste un file con quel nome...
    if(!@move_uploaded_file($this->files['tmp_name'],$this->dir.$id."_".$this->files['name']))//Upload!
    {

    $this->error[] = "Impossibile copiare il file nella directory";


    }
    $this->link = "http://".$_SERVER['SERVER_NAME'].substr($_SERVER['REQUEST_URI'],0,-9).$this->dir.$id."_".$this->files['name'];
    }

    }


    }
    else{
    $this->error[] = $err;//Altrimenti aggiunge l'errore
    }


    }
    $this->no_error() ? print($this->link):print("Sono stati riscontrati i seguenti errori :
    "
    .$this->my_err);
    }


    function
    set_file_ext($_resource_file_name){//Funzione che restituisce l'estensione del file

    $ext_file = explode("." , $_resource_file_name);//Dividiamo la stringa in tante parti quante sono i punti + 1
    //ES: $stringa = "ciao.mi.chiamo.valerio";
    //$stringa_array = explode(".",$stringa);
    //$stringa contiene:
    //$stringa[0] = "ciao"
    //$stringa[1] = "mi"
    //$stringa[2] = "chiamo"
    //$stringa[3] = "valerio"
    $count_ext_files = count($ext_file)-1;//Contiamo il numero di elementi nell'array
    //ES: $array = Array("Ciao","xx","xxxx","jjb");
    //$count = count($array);
    //Restituisce 4
    $myext = $ext_file[$count_ext_files];
    return
    $myext;//La funzione darà come risultato l'estensione

    }

    function
    is_ammissed_file(){//Funzione che restituisce true o false se l'estensione dei file è accettata
    $this->ext = $this->set_file_ext($this->files['name']); //Tramite la nostra funzione creata prima settiamo l'estensione
    if(in_array(strtolower($this->ext),$this->ammissed_ext))//Se l'estensione è contenuta nell'array della estensioni(con la funzione strtolower tutti i caratteri diventano in minuscolo(es .PHP diventa .php)
    {
    return
    true;//Restituisce true
    }else{
    return
    false;//Restituisce false
    }

    }

    function
    __construct($files,$dir,$max_size,$ammissed_ext){// __construct, funzione che parte alla dichiarazione della classe
    //Da notare l'uso di $this->files invece di $files
    // la variabile globale di classe $this-> si usa nelle funzioni della classe
    //nelle classi di tipo statico non si utilizza $this-> ma self::
    //Assegnamo ad ogni variabile di classe il rispettivo contenuto
    $this->files = $files;
    $this->dir = $dir;
    $this->max_size = $max_size;
    $this->ammissed_ext = $ammissed_ext;
    switch(
    $this->files['error'])

    {
    //Fa uno switch degli errori presenti all'interno della variabile error di $this->files

    case UPLOAD_ERR_NO_FILE://Se non è stato selezionato alcun file...
    $this->error[] = "Non &egrave; stato selezionato alcun file!";
    $this->load(false,$this->error);
    break;

    case
    UPLOAD_ERR_INI_SIZE://Se si superano le dimensioni massime secondo php.ini...
    $this->error[] = "&egrave; stato riscontrato un errore!Il file &egrave; troppo grande secondo le impostazioni del file php.ini!";
    $this->load(false,$this->error);
    break;

    case
    UPLOAD_ERR_FORM_SIZE://Se si superano le dimensioni massime di max_file_size...
    $this->error[] = "Le dimensioni superano il valore massimo consentito!";
    $this->load(false,$this->error);
    break;

    case
    UPLOAD_ERR_PARTIAL://Se si riscontra un errore nell'upload...
    $this->error[] = "&egrave; stato riscontrato un errore nell'upload!";
    $this->load(false,$this->error);
    break;

    case
    UPLOAD_ERR_OK://Nessun errore
    $this->load(true);
    break;

    default:
    //S c'è un errore sconosciuto...
    $this->error[] = "&egrave; stato riscontrato un errore sconosciuto!";
    $this->load(false,$this->error);
    break;
    }

    }

    function
    no_error(){ //Funzione che controlla se ci sono errori
    if(!empty($this->error)){//Se $this->error (variabile di classe) non è vuoto, vuol dire che ci sono errori

    foreach($this->error as $err){//Scorre l'array ...
    $this->my_err .= $err."<br />"; //E lo riempe!
    }
    return
    false;
    }else{
    //Altrimenti...
    $this->link = "Il link della tua immagine : <a href = \"".$this->link."\">".$this->link."</a>";
    return
    true;
    }
    }
    }

    ?>

    capito quello che volgio fare creare una cartella con il nome dell'id e poi metterci dentro l'immagine.
    Oppure sarebbe più semplice rinominare il file con l'id del utente?
    Ultima modifica di AVVVARRIALE : 01-06-2009 alle ore 18.38.21

  7. #7
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Non potresti forzare il nome del file in modo che abbia l'id utente?
    Esempio: avatar.png dell'utente 18 diventa 18.png ecc... ecc...
    Così non esiste il rischio di "collisioni" e avresti tutti gli avatar ordinati in un'unica directory)

  8. #8
    Guest

    Talking

    se si può fare ok ci stò ma il problema e che non so come fare qualcuno ha un idea?

  9. #9
    Guest

    Predefinito

    Sul tuo sito hai un sistema di registrazione, giusto?
    Se questo è stato fatto bene, è impossibile che esistano due utenti con stesso id,nickname etc...
    Quindi nessun problema di avatar!

  10. #10
    Guest

    Predefinito

    si ho capito questo e lo voglio fare.
    Il problema e che non so modificare il mio codice di upload (che è sopra) quale righa devo modificare e con cosa

  11. #11
    Guest

    Predefinito

    questa è la tabella se serve altro ditemelo! sono a disposizione


    CREATE TABLE `utenti` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `user` TEXT NOT NULL ,
    `pass` TEXT NOT NULL
    `mail` TEXT NOT NULL
    ) ENGINE = MYISAM ;

  12. #12
    Guest

    Predefinito

    Se variabili di sessione che utilizzi

  13. #13
    Guest

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    Se variabili di sessione che utilizzi
    ma che stai dicendo? stai sclerando?

    ecco QUI i codici che utilizzo per il mio login e sopra quelli per l'upload....MI DITE COSA DEVO MODIFICARE E AL POSTO DI COSA????

  14. #14
    Guest

    Predefinito

    Se studiassi e avessi un minimo di basi del PHP, che ti servono anche per sapere dove mettere le mani, avresti capito cosa intendevo.

    $_SESSION['login'] è una variabile di sessione, che indica se l'utente è loggato o no.
    $_SESSION['id'] è un'altra variabile di sessione che indica l'id, credo dell'utente, ed è quella che dovrai utilizzare per creare la cartella.


  15. #15
    Guest

    Predefinito

    ok questo l'avevo capito io non ho capito a cosa va sostituito.
    Per chiamare l'immagine con l'di del utente devo usare "$_SESSION['id']" ma dove lo devo mettere?


    in questo script:

    <? ##################################
    # PHP CLASS 1.2 #
    # CLASSE PER L'UPLOAD #
    # TUTORIAL E GUIDA ALL'USO #
    # IL NET-SURFER #
    ##################################
    $max_file_size = 15000000;//Dimensione massima di un file.102400 Bytes = 100 KiloByte;1024 Bytes = 1 KiloByte
    $image_type = array('gif','jpeg','jpg','x-png','bmp','pict','pct','psd','pngpeg','png'); //Estensioni accettate.Badate bene di scriverle in minuscolo!
    if(isset($_FILES['file'])){//Se esiste $_FILES
    require "class.upload.php";//includiamo la classe
    $obj = new upload($_FILES['file'],"uploads/",$max_file_size,$image_type); //Inizializziamo la classe!
    /*Il primo parametro è il file
    il secondo la cartella con le immagini(E ricordate di inserire / dopo il nome);
    Il terzo parametro è il limite massimo di grandezza dei files
    il quarto parametro è l'array contenente le estensioni accettate
    */
    }
    ?><?php echo "Estensioni accettate : ";//Scrive, tramite foreach, tutte le estensioni accettate
    foreach($image_type as $type){
    echo $type." ";
    }
    ?>
    <form enctype="multipart/form-data" action="index.php"
    method="post"><input name="MAX_FILE_SIZE"
    value="<?php echo $max_file_size; ?>" type="hidden">
    <input name="file" type="file"><input
    name="upload" value="Upload" type="submit">

    oppure in questo:

    <?php

    ##################################
    # PHP CLASS 1.2 #
    # CLASSE PER L'UPLOAD #
    # TUTORIAL E GUIDA ALL'USO #
    # IL NET-SURFER #
    ##################################
    class upload{//Il nome della classe
    public $files;//Variabile pubblica di classe contenente il file
    public $dir;//Variabile pubblica di classe contenente la cartella
    public $max_size;//Variabile pubblica di classe contenente la dimensione massima dei files
    public $ext;//Variabile pubblica di classe contenente l'estensione del file
    public $ammissed_ext;//Variabile pubblica di classe contenente l'array con le estensioni accettate
    public $error;//Variabile pubblica di classe contenente gli errori
    public $complete;//Variabile pubblica di classe contenente il path sul disco dell'immagine
    public $link;//Variabile pubblica di classe contenente l'URL dell'immagine
    public $my_err;//Variabile pubblica di classe contenente l'errore finale
    function load($esito,$err = ""){//Funzione load .Prevede due variabili :
    //esito(true o false, true se non c'è errore, false se c'è);
    //Err : se esito è false allora dentro contiene l'errore.Altrimenti sarà vuoto



    if(empty($err) && $esito = true){//Se non ci sono errori e l'esito è ok

    $this->error = "";
    if(!$this->is_ammissed_file()){ //Qui si fa uso di una funzione interna alla classe
    //Con $this->miafunc(); apriamo la funzione.Se la classe è statica utilizzeremo self::miafunc();
    $this->error[] = "Estensione non accetta!";//Aggiungiamo un errore nell'array
    }



    if(empty($this->error)){
    {
    $this->files['name'] = str_ireplace(" ","_",$this->files['name']);//Eliminiamo gli spazi e sostituiamoli con -

    $id = 0;
    if(file_exists($this->dir.$id."_".$this->files['name'])){//Se esiste il file con quel nome..
    while(file_exists($this->dir.$id."_".$this->files['name'])){//Finchè esiste il file con quel nome...

    $id++;//incrementa l'id
    $this->complete = $this->dir.$id."_".$this->files['name']; //Crea il file con il nome : n_nomefile.ext dove n sta per un numero

    }

    if(!@move_uploaded_file($this->files['tmp_name'],$this->complete)){ //Se l'upload è andato a buon fine...

    $this->error[] = "Impossibile copiare il file nella directory";


    }
    $this->link = "http://".$_SERVER['SERVER_NAME'].substr($_SERVER['REQUEST_URI'],0,-9).$this->complete; //Crea il link!
    }else{//Se non esiste un file con quel nome...
    if(!@move_uploaded_file($this->files['tmp_name'],$this->dir.$id."_".$this->files['name']))//Upload!
    {

    $this->error[] = "Impossibile copiare il file nella directory";


    }
    $this->link = "http://".$_SERVER['SERVER_NAME'].substr($_SERVER['REQUEST_URI'],0,-9).$this->dir.$id."_".$this->files['name'];
    }

    }


    }
    else{
    $this->error[] = $err;//Altrimenti aggiunge l'errore
    }


    }
    $this->no_error() ? print($this->link):print("Sono stati riscontrati i seguenti errori :
    ".$this->my_err);
    }


    function set_file_ext($_resource_file_name){//Funzione che restituisce l'estensione del file

    $ext_file = explode("." , $_resource_file_name);//Dividiamo la stringa in tante parti quante sono i punti + 1
    //ES: $stringa = "ciao.mi.chiamo.valerio";
    //$stringa_array = explode(".",$stringa);
    //$stringa contiene:
    //$stringa[0] = "ciao"
    //$stringa[1] = "mi"
    //$stringa[2] = "chiamo"
    //$stringa[3] = "valerio"
    $count_ext_files = count($ext_file)-1;//Contiamo il numero di elementi nell'array
    //ES: $array = Array("Ciao","xx","xxxx","jjb");
    //$count = count($array);
    //Restituisce 4
    $myext = $ext_file[$count_ext_files];
    return $myext;//La funzione darà come risultato l'estensione

    }

    function is_ammissed_file(){//Funzione che restituisce true o false se l'estensione dei file è accettata
    $this->ext = $this->set_file_ext($this->files['name']); //Tramite la nostra funzione creata prima settiamo l'estensione
    if(in_array(strtolower($this->ext),$this->ammissed_ext))//Se l'estensione è contenuta nell'array della estensioni(con la funzione strtolower tutti i caratteri diventano in minuscolo(es .PHP diventa .php)
    {
    return true;//Restituisce true
    }else{
    return false;//Restituisce false
    }

    }

    function __construct($files,$dir,$max_size,$ammissed_ext){// __construct, funzione che parte alla dichiarazione della classe
    //Da notare l'uso di $this->files invece di $files
    // la variabile globale di classe $this-> si usa nelle funzioni della classe
    //nelle classi di tipo statico non si utilizza $this-> ma self::
    //Assegnamo ad ogni variabile di classe il rispettivo contenuto
    $this->files = $files;
    $this->dir = $dir;
    $this->max_size = $max_size;
    $this->ammissed_ext = $ammissed_ext;
    switch($this->files['error'])

    { //Fa uno switch degli errori presenti all'interno della variabile error di $this->files

    case UPLOAD_ERR_NO_FILE://Se non è stato selezionato alcun file...
    $this->error[] = "Non &egrave; stato selezionato alcun file!";
    $this->load(false,$this->error);
    break;

    case UPLOAD_ERR_INI_SIZE://Se si superano le dimensioni massime secondo php.ini...
    $this->error[] = "&egrave; stato riscontrato un errore!Il file &egrave; troppo grande secondo le impostazioni del file php.ini!";
    $this->load(false,$this->error);
    break;

    case UPLOAD_ERR_FORM_SIZE://Se si superano le dimensioni massime di max_file_size...
    $this->error[] = "Le dimensioni superano il valore massimo consentito!";
    $this->load(false,$this->error);
    break;

    case UPLOAD_ERR_PARTIAL://Se si riscontra un errore nell'upload...
    $this->error[] = "&egrave; stato riscontrato un errore nell'upload!";
    $this->load(false,$this->error);
    break;

    case UPLOAD_ERR_OK://Nessun errore
    $this->load(true);
    break;

    default: //S c'è un errore sconosciuto...
    $this->error[] = "&egrave; stato riscontrato un errore sconosciuto!";
    $this->load(false,$this->error);
    break;
    }

    }

    function no_error(){ //Funzione che controlla se ci sono errori
    if(!empty($this->error)){//Se $this->error (variabile di classe) non è vuoto, vuol dire che ci sono errori

    foreach($this->error as $err){//Scorre l'array ...
    $this->my_err .= $err."<br />"; //E lo riempe!
    }
    return false;
    }else{ //Altrimenti...
    $this->link = "Il link della tua immagine : <a href = \"".$this->link."\">".$this->link."</a>";
    return true;
    }
    }
    }

    ?>

  16. #16
    Guest

    Predefinito

    metti "$_SESSION['id']"dove dovresti scegliere il nome da dare al file

  17. #17
    Guest

    Predefinito

    questo è il mio problema non so dove metterlo chi mi sa dire in quale righa?????

  18. #18
    Guest

    Predefinito

    aiutatemi sto provando un altro codice ma mi esce questo errore "
    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /membri/zomer/prove/prova.php on line 13"


    questo è il codice:

    Codice PHP:
    <?

    // QUESTE RIGHE RENDONO LO SCRIPT COMPATIBILE CON LE VERSIONI
    // DI PHP PRECEDENTI ALLA 4.1.0
    if(!isset($_FILES)) $_FILES = $HTTP_POST_FILES;
    if(!isset(
    $_SERVER)) $_SERVER = $HTTP_SERVER_VARS;

    /********************* VARIABILI DA SETTARE ********************/
    // Directory dove salvare i files Uploadati ( chmod 777, percorso assoluto)
    $upload_dir = $_SERVER["DOCUMENT_ROOT"] . "upload/";

    // Eventuale nuovo nome da dare al file uploadato
    $new_name = "$_SESSION['id']";

    // Se $new_name è vuota, il nome sarà lo stesso del file uploadato
    $file_name = ($new_name) ? $new_name : $_FILES["upfile"]["name"];

    if(
    trim($_FILES["upfile"]["name"]) == "") {

    die(
    "Non hai indicato il file da uploadare !");

    }

    if(@
    is_uploaded_file($_FILES["upfile"]["tmp_name"])) {

    @
    move_uploaded_file($_FILES["upfile"]["tmp_name"], "$upload_dir/$file_name")
    or die(
    "Impossibile spostare il file, controlla l'esistenza o i permessi della directory dove fare l'upload.");

    } else {

    die(
    "Problemi nell'upload del file " . $_FILES["upfile"]["name"]);

    }

    echo
    "L'upload del file " . $_FILES["upfile"]["name"] . " è avvenuto correttamente";

    ?>

  19. #19
    Guest

    Predefinito

    cambia alla riga 13 da $new_name = "$_SESSION['id']"; a $new_name = $_SESSION['id'];

  20. #20
    Guest

    Predefinito

    palla non funziona mi dice "
    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /membri/zomer/utenti/img-prof/upload.php on line 16"

    come posso fare??????????

  21. #21
    Guest

    Predefinito

    uffa.......forse faccio prima a chiedere in che modo posso permettere ai miei utneti di caricare foto? OPPURE QUALCUNO MI SA AIUTARE SOPRA???

  22. #22
    Guest

    Predefinito

    avvvarriale alias yool, alla prossima infrazione parte direttamente il ban.
    Qui non amiamo essere presi in giro.


    Ciao!

Regole di scrittura

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