• User Attivo •

    Ciao anche qui c'è un test che potrebbe sfuggirti.
    [php]
    if(!isset($type) || $size==0)
    .......
    elseif(isset($type) || $size!=0)
    ............
    [/php]E se $type è valorizzato ma $size è 0 ?

    Purtroppo, visto che cerchiamo un errore non possiamo dare niente per scontato: questo sarebbe il primo grave errore.

    Mi sono permesso di ritoccare il codice che hai postato:
    in questa maniera puoi capire immediatamente se il problema si verifica nella parte precedente a questo script (si verificherà die ("Nessun file selezionato per l'upload");) oppure se l'errore è nella parte dove prepari e copi il file.

    [php]
    $size = $_FILES['videos'];
    $type = $_FILES['videos']['type'];

    if(!isset($type) || $size==0){
    die ("Nessun file selezionato per l'upload");
    }

    $array_estensioni_ammesse=array('mp4','wmv','flv'); //estensioni ammesse
    $dimensione_massima=800000; //dimensione massima consentita per file in byte -> 1024 byte = 1 Kb

    if($size>$dimensione_massima){
    echo "Il file selezionato per l'upload supera la dimensione massima di 80Mb";
    }
    else{
    $timestamp = time();
    $file = time() .'-'.$_FILES['videos']['name'];
    $dir ="../../videos/";
    $urlvideo = $dir.$file;
    copy($_FILES['videos']['tmp_name'], $urlvideo);
    $video = $file;
    }
    [/php]Fammi sapere
    :ciauz:


  • User •

    Ho provato il tuo e non va, quindi ho pensato, sarà il form? e ho fatto questa prova e non va cmq,
    [php]
    <?php
    $size = $_FILES['videos'];
    $type = '2';
    if($type==2){
    echo ("Nessun file selezionato per l'upload");
    }

    $array_estensioni_ammesse=array('mp4','wmv','flv'); //estensioni ammesse
    $dimensione_massima=800000; //dimensione massima consentita per file in byte -> 1024 byte = 1 Kb

    if($size>$dimensione_massima){
    echo "Il file selezionato per l'upload supera la dimensione massima di 80Mb";}
    else{
    $timestamp = time();
    $file = time() .'-'.$_FILES['videos']['name'];
    $dir ="../../videos/";
    $urlvideo = $dir.$file;
    copy($_FILES['videos']['tmp_name'], $urlvideo);
    $video = $file;
    }
    ?>
    [/php]


  • User Attivo •

    Ciao,
    cosa intendi con non va?

    Cosa ti aspettavi dopo il tuo test con $type = '2'?

    '2' non è 2: una è una stringa, l'altro è un numero.

    Tu dirai:
    Ma il cast non è automatico in PHP?

    Risposta:
    Dovrebbe esserlo, ma a volte ho dovuto eseguire cast 'manuali'.

    Comunque,
    nei logs del web server non trovi nessun errore?

    :ciauz:


  • User •

    Scusa, ho copiato male, ho provato sia come strnga e che numero
    $type=2; if($type==2) e $type='2'; e if($type=='2')
    No il server non da errori.


  • User Attivo •

    Mi sa allora che l'elaborazione si blocca prima, lì mi sa che non ci arrivi proprio.

    Se vuoi sul mio sito, precisamente qui, ho messo a disposizione una classe per eseguire dei log su file durante il funzionamento dell'applicazione.

    E' nata proprio per eseguire il debug applicativo in fase di test: direi la tua situazione.

    Se ti va,
    preleva pure il codice della classe ed utilizzala.

    Nell'articolo, alla fine, ci sono degli esempi che mostrano come utilizzarla.

    Io la ho usata parecchio e mi è servita. Spero serva anche a te.

    Buon debug.
    :ciauz:


  • User •

    Grazie dell'aiuto la provo subito, anche perchè io non sarò un grande di php pero if so come funziona:x


  • User •

    Ciao ho trovato il problema 😉 erano i file temp di windows. :dull: Comunque lo cambiata un pò questa e quello che uso
    [php]
    <?php
    $video = $_FILES['video']['type'];
    $video_size = $_FILES['video'];
    if(empty($video)){
    die ( "<p style="font-weight:bold; text-align:center;">Errore nella compilazione dei dati. <br />Nessun file selezionato per l'upload.<br /><br />
    <a href="javascript:history.go(-1)" title="Torna indietro">Torna indietro.</a></p>");
    return false;
    }
    else{
    $dimensionimax =800000;
    $timestamp = time();
    $file = time() .'-'.$_FILES['video']['name'];
    $video = array("mp4","avi", "image/png","image/pjpeg","image/jpeg", "image/jpg");
    if(!in_array($_FILES['video']['type'],$video))
    {
    die ("<p style="font-weight:bold; text-align:center;">Il file non è di un tipo consentito, sono ammessi solo i seguenti: ". implode("," , $video) ."<br /><br />
    <a href="javascript:history.go(-1)" title="Torna indietro">Torna indietro.</a></p>");
    }

    if ($video_size>$dimensionimax)
    {
    die ("<p style="font-weight:bold; text-align:center;">Errore: Il Video supera il limite di 80Mb ".mysql_error()."<br /><br />
    <a href="javascript:history.go(-1)" title="Torna indietro">Torna indietro.</a></p>");
    exit;
    }

    else{
    $dir ="../../videos/";
    $urlvideo = $dir.$file;
    copy($_FILES['video']['tmp_name'], $urlvideo);
    $video_file = $file;
    }
    }
    ?>
    [/php]Devo fare delle modifiche o va bene cosi?
    Poi mi da un problema con il formati io vorrei caricare un video.mp4 pero mi da l'avviso del formato non consentito come mai?
    Ciao.


  • User Attivo •

    Ciao spirit19,
    mi fa piacere che sei riuscito a trovare il problema. :vai:

    Dunque,
    per quanto riguarda l'estensione non accettata,
    la segnalazione ti appare perchè hai invertito il test.

    Tu testi:
    se è falso che 'mp4' è presente nell'array delle estensioni consentite
    allora segnala 'estensione non consentita'.

    Mentre vorresti assicurarti che sia vero invece che 'mp4' sia presente nell'array, giusto?

    Ti è servita la classe MaLogger?

    :ciauz:


  • User •

    La classe ancora non lo usata, comunque uso questo per il controllo formato
    [php]
    $video = array("mp4","avi", "image/png","image/pjpeg","image/jpeg", "image/jpg");
    if(!in_array($_FILES['video']['type'],$video))
    {
    die ("<p style="font-weight:bold; text-align:center;">Il file non è di un tipo consentito, sono ammessi solo i seguenti: ". implode("," , $video) ."<br /><br />
    <a href="javascript:history.go(-1)" title="Torna indietro">Torna indietro.</a></p>");
    }
    [/php]


  • User Attivo •

    Ciao,
    prova così:
    [php]if(!in_array(strtolower ($_FILES['video']['type']),$video)) [/php]:ciauz:


  • User •

    Ciao del tuo aiuto;),
    ho provato come dici tu non va,
    ho inserito altri formati, ma ancora non riconosce mp4
    [php]
    $video = array(" mp4", " mpeg-4", " mpeg", " mpg", " avi", " wmv", " flv", " divx", " avi", " image/png", " image/pjpeg", " image/jpeg", " image/jpg");
    if(!in_array(strtolower ($_FILES['video']['type']),$video))
    {
    die ("<p style="font-weight:bold; text-align:center;">Il file non è di un tipo consentito, sono ammessi solo i seguenti:<br /> ". implode("," , $video) ."<br /><br />
    <a href="javascript:history.go(-1)" title="Torna indietro">Torna indietro.</a></p>");
    }
    [/php]P.S. Ho provato con varii video .mp4, flv, avi nada non va il controllo.:?


  • User Attivo •

    Ciao,
    ho notato che aggiungi uno spazio bianco prima dell'estensione:
    ' mp4',' mpeg' ecc...

    Rimuovi li spazi bianchi,
    e per sicurezza trimma l'estensione che ricavi dal file uploadato.

    :ciauz:


  • User •

    Ciao scusa che vuoi dire con" e per sicurezza trimma l'estensione che ricavi dal file uploadato" come si fa in php?
    Grazie del tuo aiuto.


  • User Attivo •

    Ciao Spirit19,
    intendevo questo:

    [PHP]
    $video = array("mp4", "mpeg-4", "mpeg", "mpg", "avi", "wmv", "flv", "divx", "avi", "image/png", "image/pjpeg", "image/jpeg", "image/jpg");
    if(!in_array(strtolower (trim($_FILES['video']['type'])),$video))
    {
    die ("<p style="font-weight:bold; text-align:center;">Il file non è di un tipo consentito, sono ammessi solo i seguenti:<br /> ". implode("," , $video) ."<br /><br />
    <a href="javascript:history.go(-1)" title="Torna indietro">Torna indietro.</a></p>");
    }
    [/PHP]

    come noterai, ho rimosso lo spazio bianco che precedeva ogni estensione in $video, e ho 'trimmato' l'estensione del file uploadato.

    :ciauz:


  • User •

    Ciao ho provato come dici tu e non funziona, poi ho provato cosi
    [php]
    $video = array("mp4", "mpeg-4", "mpeg", "mpg", "avi", "wmv", "flv", "divx", "avi", "image/png", "image/pjpeg", "image/jpeg", "image/jpg");
    if(!in_array(strtolower(ltrim(rtrim(trim($_FILES['video']['type'])))),$video))
    {
    die ("<p style="font-weight:bold; text-align:center;">Il file non è di un tipo consentito, sono ammessi solo i seguenti:<br /> ". implode("," , $video) ."<br /><br />
    <a href="javascript:history.go(-1)" title="Torna indietro">Torna indietro.</a></p>");
    }
    [/php]
    e continua a non funzionare:bho:


  • User Attivo •

    Ma provare a debuggare?

    Se non ti va di utilizzare la via che ti ho detto,
    puoi sempre creare commenti HTML nella pagina:

    [PHP]
    $video = array("mp4", "mpeg-4", "mpeg", "mpg", "avi", "wmv", "flv", "divx", "avi", "image/png", "image/pjpeg", "image/jpeg", "image/jpg");

    echo '<!-- ESTENSIONE FILE UPLOADATO = "' . trim($_FILES['video']['type']) . '" -->';

    if(!in_array(strtolower(trim($_FILES['video']['type']))),$video))
    {
    die ("<p style="font-weight:bold; text-align:center;">Il file non è di un tipo consentito, sono ammessi solo i seguenti:<br /> ". implode("," , $video) ."<br /><br />
    <a href="javascript:history.go(-1)" title="Torna indietro">Torna indietro.</a></p>");
    }

    [/PHP]

    Cosa ti traccia il commento nel codice HTML?

    :ciauz:


  • User •

    Grazieee dei consigli
    ho stampato [php]$_FILES['video']['type'][/php]
    inpratica mette video/ prima del formato video e image/ prima del formato immagine
    cosi funziona
    [php]
    $video = array("video/mp4", "video/mpeg-4", "video/mpeg", "video/mpg", "video/avi", "video/wmv", "video/flv", "video/divx");
    if(!in_array(strtolower (trim($_FILES['video']['type'])),$video))
    {die ("<p style="font-weight:bold; text-align:center;">Il file non è di un tipo consentito, sono ammessi solo i seguenti:<br /> ". implode("," , $video) ."<br /><br />
    <a href="javascript:history.go(-1)" title="Torna indietro">Torna indietro.</a></p>");
    }
    [/php]
    Graziee.:)


  • User Attivo •

    :vai::vai::vai:

    Nessun problema,
    buon lavoro.

    :ciauz:


  • User •

    Grazie anche a te
    ps se hai bisogno un aiuto scrivi;)
    ciao.