Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Upload php con path variabile

    Ciao ciao.
    Sto provando a fare un PHP uploader che pero' abbia la possibilita' di ricevere
    dal form html il path della cartella dove fare l'upload, ma sembra impossibile.
    La variabile si disperde nel nulla nel momento in cui do il comando di upload.

    in pratica io ho una cosa tipo :

    $uploaddir = "image_files/".$_POST['url']."/".$_FILES["image_upload_box"]["name"];

    o anche piu' semplicemente:

    $uploaddir = ("image_files/".$_POST['url']);

    ma comunque in ogni caso alla fine le immagini vengono copiate in image_files/
    e la cartella che io vorrei dargli con il post url si perde...

    Qualcuno ha avuto questo problema prima?

    Grazie

  2. #2
    Se non posti il codice è difficile capire dove sta il problema.

  3. #3

    codice

    Era per non postare 1000 righe di codice...
    in realta' il problema sta proprio nelle due righe che ho scritto prima...

    comunque...

    questa e' la pagina uploadpage.php alla quale passo il valore di $_POST['url'] da un form.


    <?
    $uploaddir = ("../images/".$_POST['url']);
    //this many file upload fields
    $fields = 6;

    //file accept filter 1 for on, 0 off
    $acceptfilter = 1;
    //acceptable file types (see www.w3schools.com/media/media_mimeref.asp for more information)
    $acceptabletypes = array("image/jpeg", "image/pjpeg", "image/gif", "text/plain", "text/html", "text/richtext", "video/mpeg", "video/quicktime");

    //limit file size? 1 for yes, 0 no
    $limitsize = 0;
    //maximum file size in kb
    $maxsize = 2048;

    //allow overwriting? 1 for yes, 0 no
    $overwriting = 1;

    //do directory listing? 1 for yes, 0 no
    $scandir = 1;

    //make a log file? 1 for yes, 0 no
    $makelog = 0;
    //name of log file (must be chmod 777)
    $logfile = "uploadlog.txt";
    //time offset in hours (if required)
    $timeoffset = +0;
    //name of image details txt
    $imgdetails = "imgdetails.txt";



    include("uploader.php");

    ?>


    e questa e' uploader.php


    <?


    function get_files($dirstr)
    {
    $scanfiles = array();
    $fh = opendir($dirstr);
    while (false!== ($filename = readdir($fh)))
    {
    if (is_file("$dirstr/$filename")) {
    array_push($scanfiles, $filename); }
    }
    closedir($fh);
    sort($scanfiles);
    return $scanfiles;
    }

    $count = count($_FILES['userfile']['name']);

    if ($count > 0) {

    $i=0;
    $f=0;
    while ($i < $count) {


    $kbsize = (round($_FILES['userfile']['size'][$i]/1024));
    $date = date("j M Y g:ia", time()+($timeoffset*3600));
    $userip = $_SERVER['REMOTE_ADDR'];

    if ($limitsize == 1) {
    if ($_FILES['userfile']['size'][$i] > (1024*$maxsize) ) {
    $toobig[$i] = "{$_FILES['userfile']['name'][$i]} is too large! the maximum file size is $maxsize kb.";
    } }

    if ($acceptfilter == 1) {
    if (!in_array($_FILES['userfile']['type'][$i], $acceptabletypes)) {
    $rejectstring = "{$_FILES['userfile']['name'][$i]} is not of the type ";
    foreach ($acceptabletypes as $acceptabletype) {
    $rejectstring .= "$acceptabletype or "; }
    $rejectstring = substr($rejectstring, 0, -4);
    $notacceptable[$i] = "$rejectstring.";
    } }

    if ($overwriting!== 1) {
    if(file_exists("$uploaddir/{$_FILES['userfile']['name'][$i]}")) {
    $alreadyexists[$i] = "a file of the name {$_FILES['userfile']['name'][$i]} already exists! overwriting is not permitted.";
    } }



    if (!isset($toobig[$i]) &&!isset($notacceptable[$i]) &&!isset($alreadyexists[$i])) {

    echo $uploaddir;

    copy($_FILES['userfile']['tmp_name'][$i], "$uploaddir/{$_FILES['userfile']['name'][$i]}");
    echo "{$_FILES['userfile']['tmp_name'][$i]} tmpname uploaded successfully!
    ";
    echo "{$_FILES['userfile']['name'][$i]} uploaded successfully!
    ";
    $f++;
    $content .= "$date $userip uploads $uploaddir/{$_FILES['userfile']['name'][$i]} ($kbsize kb)\n";
    }

    elseif ($_FILES['userfile']['size'][$i]!== 0) {
    echo "$toobig[$i] $notacceptable[$i] $alreadyexists[$i]
    ";
    $content .= "$date $userip fails to upload $uploaddir/{$_FILES['userfile']['name'][$i]} ($kbsize kb) - $toobig[$i] $notacceptable[$i] $alreadyexists[$i]\n";
    }

    $i++;
    }

    echo "uploaded $f file(s)";

    if ($makelog == 1) {
    $handle = fopen("$logfile", "a");
    fwrite ($handle, $content);
    fclose ($handle); }

    }

    ?>

    <form action="<?= $_SERVER['php_SELF']."?".$_SERVER['QUERY_STRING'];?>" method="post" enctype="multipart/form-data">


    Send these files:</p>


    <input type="text" name="cartella" value="<? echo $_POST['url'] ?>" size="50"></p>
    <?
    for($d=0; $d < $fields; $d++)
    {
    echo "<input name=\"userfile[]\" type=\"file\" size=\"30\">";
    }

    ?>


    <input name="submit" type="submit" value="Send files" />
    </p>
    </form>



    in effetti al primo caricamento $_POST['url'] me lo da giusto... ma quando clicco send files e la pagina ricarica se stessa... la variabile e' sparita...

  4. #4
    Giusto per iniziare:

    1. NON utilizzare lo short open tag, utilizza il tag di apertura completo.
    2. Prima di accedere ad un indice di un array ($_POST['url']) verifica che esista.
    3. Non usare copy() per gestire l'upload, utilizza move_uploaded_file().

    Infine, se cambi il nome del campo (da 'url' a 'cartella'), ovviamente dovrai anche cambiare il codice che lo utilizza.

  5. #5

    ok

    in realta' "cartella" e' solo un campo di controllo dove visualizzo la variabile $_POST['url']
    ma nella variabile $uploaddir = ("../images/".$_POST['url']) utilizzo $_POST['url']

    quindi non sto usando il contenuto di "cartella", ho provato..ma anche in quel caso
    cliccando send files il path e' sempre e comunque ../images/ e stop.

  6. #6
    Come passi $_POST['url'] allo script?

    Dal tuo codice, quando invii il form di upload, NON c'è alcun parametro url, per cui è chiaro che $uploaddir resti uguale a '../images/' e basta.

  7. #7

    si scusa hai ragione

    alla pagina uploadpage.php arrivo da un'altra pagina html dove e' presente
    un form con il campo URL percio' il dato gli arriva....
    La cosa veramente strana...a parte tutto, e' che quando accedo alla
    pagina uploader.php, con un echo e con il campo cartella visualizzo il path
    ed e' giusto... poi quando invio i files non so perche' si perde
    la parte di path variabile... questo e' il problema fondamentale.

  8. #8

    Re: si scusa hai ragione

    Originariamente inviato da gianlurip
    alla pagina uploadpage.php arrivo da un'altra pagina html dove e' presente
    un form con il campo URL percio' il dato gli arriva....
    Gli arriva SOLO alla prima richiesta, NON alla richiesta di upload perche' utilizzi un campo chiamato cartella e non url.

    Prova a rinominare il campo da cartella a url e vedrai che funziona (a perte quanto scritto in precedenza).

  9. #9

    si

    e' vero...hai ragione...in realta' davo per scontato che alla seconda richiesta
    comunque tenesse in considerazione il valore di URL che aveva alla prima
    richiesta.
    Ora pare funzionare.

    Per quanto riguarda il metodo move_uploaded_file() pensi sia meglio in ogni caso
    o ora che va posso lasciare tutto cosi'?

    grazie mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.