Visualizzazione risultati 1 fino 29 di 29

Discussione: Script upload

  1. #1
    canaleprotetto non è connesso Neofita
    Data registrazione
    23-06-2006
    Messaggi
    10

    Predefinito Script upload

    salve ragazzi!ho fatto uno script (anche razie ad alcuni amici) però mi risulta un errore si sintassi!mi potete aiutare..

    Codice:
    index.html
    <form action="upload.php" method="post" enctype="multipart/form-data">
      <p>
        <input type="file" name="upfile">
      </p>
      <p>
        <textarea name="testo">Inserisci una breve descrizione..</textarea>
      </p>
      <p>
        <input name="nome" type="text" value="Inserisci un nome.."></p>
      <p>
        <input name="email" type="text" value="Inserisci e-mail..">
      </p>
      <p>
        <input type="submit" value="Invia il file">
      </p>
    </form>
    Codice:
    upload.php
    <?php
    $file_name = $_FILES['upfile']['name'];
    $file_temp = $_FILES['upfile']['tmp_name']; 
    $file_type = $_FILES['upfile']['type'];
    $file_size = $_FILES['upfile']['size'];
    $testo = $_FILES['testo']['textarea'];
    $nome = $_FILES['nome']['text'];
    $email = $_FILES['email']['text'];
    $upload_dir = "/membri/canaleprotetto/host/";
    $fgt = md5(date("dmyGis").$file_name.$file_size);
    
    if (!is_uploaded_file($_FILES["upfile"]["tmp_name"])) {
        echo "File non inserito (".$_FILES["upfile"]["error"].")";
    }
    else {
    	$ext = explode (".", $file_name);
    	$file_name = $fgt.".".$ext[count($ext)-1];
    	  
    	$st="<a href=\"http://canaleprotetto.altervista.org/upload/$file_name\">$file_name</a>";
          $su="<BR>\n";
    
    	$op_db = fopen("/membri/canaleprotetto/db.html","a+");
    	$fpx = fputs($op_db,$nome,$email,$st,$testo,$su);
    	fclose($op_db);
    
    	echo "File inserito con successo!<br />Ecco il link: http://canaleprotetto.altervista.org/upload/$file_name";
    	copy ($file_temp,"$upload_dir/$file_name");
    }
    php?>
    il file lo uppa tranquillamente sulla cartella host, però non mi stampa nulla nel file db.html!

    grazie mille!!

  2. #2
    L'avatar di mythologia
    mythologia non è connesso Moderatore
    Data registrazione
    05-01-2004
    Messaggi
    2,614

    Predefinito

    Prova a cambiare:

    $fpx = fputs($op_db,$nome,$email,$st,$testo,$su);

    con:

    $fpx = fputs($op_db,$nome . $email . $st . $testo . $su);

  3. #3
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Devi fare così:
    Codice PHP:
    <?php
    $file_name
    = $_FILES['upfile']['name'];
    $file_temp = $_FILES['upfile']['tmp_name'];
    $file_type = $_FILES['upfile']['type'];
    $file_size = $_FILES['upfile']['size'];
    $testo = strip_tags($_POST['testo']);
    $nome = strip_tags($_POST['nome']);
    $email = strip_tags($_POST['email']);
    $upload_dir = "host/";
    $fgt = md5(date("dmyGis").$file_name.$file_size);
    if(!
    is_uploaded_file($_FILES["upfile"]["tmp_name"])){
    echo
    "File non inserito (".$_FILES["upfile"]["error"].")";
    }
    else {
    $ext = explode (".", $file_name);
    $file_name = $fgt.".".$ext[count($ext)-1];
    $st = "<a href=\"http://canaleprotetto.altervista.org/upload/$file_name\">$file_name</a>";
    $su="<BR>\n";

    $op_db = fopen("db.html","a+");
    $fpx = fputs($op_db,$nome.$email.$st.$testo.$su);
    fclose($op_db);
    echo
    "File inserito con successo!<br />Ecco il link: http://canaleprotetto.altervista.org/upload/$file_name";
    copy ($file_temp,"$upload_dir/$file_name");
    }
    ?>

  4. #4
    canaleprotetto non è connesso Neofita
    Data registrazione
    23-06-2006
    Messaggi
    10

    Predefinito

    grazie per le risoste, m potete dare una piccola speiegazione?

    poi avrei un piccolo favore da chiedervi, è possibile il titolo del file modificando l'm5 di questa stringa:

    $fgt = md5(date("dmyGis").$file_name.$file_size);

    mi spiego meglio con questo script fa l'md5 del file_name e file_size e mi esce un file con il titolo grandissimo, non c'è una soluzione che mi dia un md5 più piccolo almeno di 5caratteri!

  5. #5
    L'avatar di mythologia
    mythologia non è connesso Moderatore
    Data registrazione
    05-01-2004
    Messaggi
    2,614

    Predefinito

    L'unica soluzione sarebbe non usare l'md5.

  6. #6
    canaleprotetto non è connesso Neofita
    Data registrazione
    23-06-2006
    Messaggi
    10

    Predefinito

    ragazzi :( mi da sempre lo stesso errore; inserisco il file nell'upload,mi dice che il file è stato caricato con il relativo link, infatti se vado nella cartella host c'è il mio file però non mi scrive nulla sul file db.html!da cosa può dipendere?

  7. #7
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Ti da' qualche errore?
    Ma almeno, se il file db.html non esiste, lo crea?
    Io l'avevo provato e funziona; hai provato quello che ho scritto io?

  8. #8
    canaleprotetto non è connesso Neofita
    Data registrazione
    23-06-2006
    Messaggi
    10

    Predefinito

    Citazione Originalmente inviato da andreafallico Visualizza messaggio
    Ti da' qualche errore?
    Ma almeno, se il file db.html non esiste, lo crea?
    Io l'avevo provato e funziona; hai provato quello che ho scritto io?
    si l'ho provato quello che mi hai scritto!il file lo crea,però come già detto non scrive nulla dentro!

    ti chiedo scusa, funziona tutto!non trovavo i file perche lo creava nella cartella dove c'è il file upload.php e non nella root principale :P



    gazie mille :)
    Ultima modifica di canaleprotetto : 21-11-2009 alle ore 14.28.34

  9. #9
    Guest

    Predefinito

    Ragazzi salve,
    ho provato questo script ma purtroppo non mi funziona...

    Non mi inserisce i file nella cartella (in questo caso chiamata files)ma nel db.html me li registra come uploadati.

    Per quanto riguarda la disposizione ho una cartella nella "root" dell'hosting
    chiamata Up e dentro ho i vari file + la cartella dove dovrebbero essere destinati i file uploadati...

    Dopo aver effettuato l'upload mi da questo errore:

    Warning: copy() [function.copy]: open_basedir restriction in effect. File(/tmp/phpeMMRIj) is not within the allowed path(s): (/membri/theo/www/:/membri/theo/session) in /membri/theo/www/Up/upload.php on line 24

    Ho provato sia su altervista che su un altro hosting gratuito ma niente...
    Suggerimenti?
    Grazie

  10. #10
    canaleprotetto non è connesso Neofita
    Data registrazione
    23-06-2006
    Messaggi
    10

    Predefinito

    a me funziona ho pure fatto delle modifiche!!

  11. #11
    Guest

    Predefinito

    Ad upload_dir io ho messo questo indirizzo /membri/psptuto/host/...
    ma questo indirizzo implica che il file upload e compagnia varia,siano nella root principale?
    L'errore mi dice che si tratta della linea 24( copy ($file_temp,"$upload_dir/$file_name"))...
    inoltre ho visto ora che quando faccio l'upload mi da anche il nome completamente diverso dal file uploadato...
    Dopo Riproverò...
    Ultima modifica di psptuto : 22-11-2009 alle ore 14.44.50 Motivo: Ho aggiustato la punteggiatura

  12. #12
    L'avatar di mythologia
    mythologia non è connesso Moderatore
    Data registrazione
    05-01-2004
    Messaggi
    2,614

    Predefinito

    Perchè aggiungi /host/?
    Ultima modifica di mythologia : 22-11-2009 alle ore 14.50.40

  13. #13
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

  14. #14
    Guest

    Predefinito

    Ok andrea sono riuscito...
    GRAZIE


    p.s.è normale che il nome del file originale è diverso da quello uploadato?

  15. #15
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

  16. #16
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    Citazione Originalmente inviato da canaleprotetto Visualizza messaggio
    non c'è una soluzione che mi dia un md5 più piccolo almeno di 5caratteri!
    potresti fare na cosa del genere:
    Codice PHP:
    <?php
    $alfa
    = "abcdefghilmnopqrstuvz1234567890";
    $num_char = 8;
    $new_str = "";
    for(
    $i=0;$i<$num_char;$i++){
    $tmp = (int)$num_char / 2;
    if(
    $i == $tmp)
    $new_char .= "-";
    $new_char .= $alfa[rand(0,30)];
    }
    echo
    $new_char.rand(0,9999);
    ?>
    Ultima modifica di Xsescott : 22-11-2009 alle ore 21.06.35
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  17. #17
    Guest

    Predefinito

    Citazione Originalmente inviato da andreafallico Visualizza messaggio
    Quale script stai utilizzando?
    Quello scritto da voi...

  18. #18
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Citazione Originalmente inviato da psptuto Visualizza messaggio
    Ok andrea sono riuscito...
    GRAZIE


    p.s.è normale che il nome del file originale è diverso da quello uploadato?
    Se vuoi il nome del file originale devi eliminare questo:
    Codice PHP:
    $ext = explode (".", $file_name);
    $file_name = $fgt.".".$ext[count($ext)-1];

  19. #19
    canaleprotetto non è connesso Neofita
    Data registrazione
    23-06-2006
    Messaggi
    10

    Predefinito

    visto che lo script era per le mie esigenze, l'ho voluto fare così!cmq l'ho eliminato anche io levando l'md5!!

    Edit: ragazzi vorrei inserire dei piccoli comandi però non mi escono;
    vorrei prima di tutto imostare se le variabili $nome, $emaile $testo sono vuote mi esce un errore quindi ho messo delle variabili ELSEIF:

    sotto if
    }
    elseif($nome == 0){
    echo "Dati non inseriti!")";
    }
    elseif($email == 0){
    echo "Dati non inseriti!")";
    }
    elseif($testo == 0){
    echo "Dati non inseriti!")";
    }
    e infini l'else
    giusto?

    infine vorrei mettere un'esclusione sulle estensioni dei file da inserire, non ermettendo l'hosting di file html,php,htm,php3,php4,php5,ecc! volevo mettere un ARRAY, quindi devo mettere prima una variabile, poi un'altro elseif:

    in alto inserisco la variabile:
    $bbb = array ("html","htm","php","css","shtm","shtml","php3","p hp4","php5","hta","htc","xxhtml","js","asp","tpl") ;

    infine inserisco l'elseif:
    elseif($ext == $bbb){
    echo "I file non si possono hostare!")";
    }
    però mi permette di hostare i seguenti file, e poi se compilo o non compilo le variabili $testo,$nome,$email mi esce sempre l'errore "Dati non inseriti!" da cosaa può dipendere?
    Ultima modifica di canaleprotetto : 23-11-2009 alle ore 21.30.50

  20. #20
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    metodi più semplici per creare una stringa random:
    http://www.php.net/str_shuffle
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  21. #21
    canaleprotetto non è connesso Neofita
    Data registrazione
    23-06-2006
    Messaggi
    10

    Predefinito

    vediamo se ho capito bene:

    Codice PHP:
    function random_passwd($bbb) {
    $string = str_shuffle("html,htm,php");
    }
    giusto?

    però il mio problema sta con gli if,elseif,else!

    allora io ho uno script del genere:

    (if)se non inserisco il file mi esce errore
    (else)il file va hostato

    io qui in mezzo devo mettere degl elseif che mi faciano:
    (elseif)se $testo,$nome,$email è vuota, mi da errore
    (elseif)se $ext è uguale a php,html,htm , mi da errore

    però non capisco perche mi dia errore!

    Codice PHP:
    <?php
    $file_name
    = $_FILES['upfile']['name'];
    $file_temp = $_FILES['upfile']['tmp_name'];
    $file_type = $_FILES['upfile']['type'];
    $file_size = $_FILES['upfile']['size'];
    $testo = strip_tags($_POST['testo']);
    $nome = strip_tags($_POST['nome']);
    $email = strip_tags($_POST['email']);
    $bbb = "php,html,htm";
    $upload_dir = "host/";
    $fgt = md5(date("dmyGis").$file_name.$file_size);
    if(!
    is_uploaded_file($_FILES["upfile"]["tmp_name"])){
    echo
    "File non inserito (".$_FILES["upfile"]["error"].")";
    }
    elseif (
    $testo == 0) {
    echo
    "errore";
    }
    elseif (
    $nome == 0) {
    echo
    "errore";
    }
    elseif (
    $email == 0) {
    echo
    "errore";
    }
    elseif (
    $ext == $bbb) {
    echo
    "errore";
    }
    else {
    $ext = explode (".", $file_name);
    $file_name = $fgt.".".$ext[count($ext)-1];
    $st = "<a href=\"http://canaleprotetto.altervista.org/upload/$file_name\">$file_name</a>";
    $su="<BR>\n";

    $op_db = fopen("db.html","a+");
    $fpx = fputs($op_db,$nome.$email.$st.$testo.$su);
    fclose($op_db);
    echo
    "File inserito con successo!<br />Ecco il link: http://canaleprotetto.altervista.org/upload/$file_name";
    copy ($file_temp,"$upload_dir/$file_name");
    }
    ?>
    ho provato anche ad utilizzare l'array, ma non ci riesco:
    Codice PHP:
    //array estensioni non concesse
    $bbb = array (
    "html",
    "htm",
    "php",
    "css",
    "shtm",
    "shtml",
    "php3",
    "php4",
    "php5",
    "hta",
    "htc",
    "xxhtml",
    "js",
    "asp",
    "tpl"
    );

    if(!
    is_uploaded_file($_FILES["upfile"]["tmp_name"])){
    echo
    "Errore: File non inserito (".$_FILES["upfile"]["error"].")!";
    }
    if(
    in_array(".$ext", $bbb)){
    echo
    "Errore: Estensione non supportata!";
    }
    else {
    $ext = explode (".", $file_name);
    ....}
    dove sbaglio?
    Ultima modifica di canaleprotetto : 24-11-2009 alle ore 14.08.37

  22. #22
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Per controllare l'estensione dei file dai una lettura qui.
    Però anche con le immagini possono fare un iniezione di codice php.

  23. #23
    Guest

    Predefinito

    Ma perchè complicarsi la vita con funzioni e tutto, quando per trovare l'estensione basta:
    Codice PHP:
    strrchr(__FILE__, '.')


    In questo caso andrà passato il valore dell'array $_FILES.

  24. #24
    canaleprotetto non è connesso Neofita
    Data registrazione
    23-06-2006
    Messaggi
    10

    Predefinito

    Citazione Originalmente inviato da andreafallico Visualizza messaggio
    Per controllare l'estensione dei file dai una lettura qui.
    Però anche con le immagini possono fare un iniezione di codice php.
    carissimo AndreaFallico non mi apre il link!!

  25. #25
    Guest

    Predefinito

    canaleprotetto hai letto il mio post?

  26. #26
    canaleprotetto non è connesso Neofita
    Data registrazione
    23-06-2006
    Messaggi
    10

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    canaleprotetto hai letto il mio post?
    si certo, però questo script è un mio lavoro che ho fatto da piccolo e visto che non sono bravo con il php vorrei almeno renderlo decentee :P

  27. #27
    Guest

    Predefinito

    Citazione Originalmente inviato da canaleprotetto Visualizza messaggio
    si certo, però questo script è un mio lavoro che ho fatto da piccolo e visto che non sono bravo con il php vorrei almeno renderlo decentee :P
    Che c'entra?
    Quindi secondo il tuo ragionamento più ha funzioni, righe di codice, vuol dire che è meglio?
    Hai mai sentito parlare di memoria? Tempo di esecuzione dello script? Avere 30 righe di codice quando ne puoi avere 5 non è meglio.
    Con quello che ti ho scritto io ti eviti un sacco di ocndizioni e una o più funzioni che non ti servono.

  28. #28
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    Citazione Originalmente inviato da canaleprotetto Visualizza messaggio
    vediamo se ho capito bene:

    Codice PHP:
    function random_passwd($bbb) {
    $string = str_shuffle("html,htm,php");
    }
    giusto?

    però il mio problema sta con gli if,elseif,else!


    [/PHP]

    dove sbaglio?
    spe, tu hai detto che non volevi usare md5 perchè troppo lungo (quindi mi domando, sei sicuro che devi per forza usare md5 per questa cosa?)
    md5 è un algoritmo one way per calcolare di solito il digest di un file, ed utilizzato per verificare l'integrità di un file o per nascondere le password nel database evitando di vederle in chiaro.

    Se tu hai solo il bisogno di avere un nome più casuale possibile puoi usare quel metodo che ho indicato su. Comunque ce ne sono tanti.

    per l'estensione, prova a fare il controllo cosi:
    Codice PHP:
    if(in_array($ext[count($ext)-1], $bbb)){
    echo
    "Errore: Estensione non supportata!";
    }
    il alternativa puoi usare la funzione suggerita da biccheddu, facendo una cosa simile:
    Codice PHP:
    if(in_array( substr(strrchr($file_name, '.'), 1),$bbb)){
    echo
    "Errore: Estensione non supportata!";
    }
    oppure per un controllo piu SICURO:
    Codice PHP:
    $escludi = array("image/gif","image/pjpeg","image/jpeg");
    if(
    in_array($file_type,$escludi)){
    echo
    "Errore: Estensione non supportata!";
    }
    Per i valori da mettere nell'array guarda qui:
    http://www.asciitable.it/mimetypes.asp

    l'ultimo tipo di controllo è più accurato perchè non fà un controllo solo sull'estensione del file ma sul tipo di file stesso ;)
    Ultima modifica di Xsescott : 25-11-2009 alle ore 22.16.56
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  29. #29
    canaleprotetto non è connesso Neofita
    Data registrazione
    23-06-2006
    Messaggi
    10

    Predefinito

    scusa Biccheddu avevo capito male, grazie a Xsesott ho capito quel che volevi dire!!! !

    grazie ad entrambi.. siete mitici!


    Xsesott scusami ma non trovo il MIME Types per l'estensione PHP :( dove lo posso trovare?
    Ultima modifica di canaleprotetto : 26-11-2009 alle ore 20.07.47

Regole di scrittura

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