Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027

    [upload immagine] problemi di caricamento immagini tramite form

    buongiorno a tutti

    avrei un problema con uno script che ho scritto giusto stamattina per caricare le immagini tramite form... ora mi spiego, dal form seleziono l'immagine e poi la vado ad inserire prima nel database e poi in una cartella specifica del dominio.

    diciamo che non da nessun errore, però non esegue nulla di ciò che chiedo io nel codice, non inserisce l'immagine nell'apposita cartella che vado a creare e non crea nemmeno la relativa sottocartella di utenti/ ,non inserisce i dati dell'immagine che passo dal form nel database...

    il php

    codice:
        if(isset($_POST['carica_img']) and $_SERVER['REQUEST_METHOD'] == "POST"){
            if(isset($_FILES['userfile'])){
                if(!is_dir("utenti/".$id)){
                    mkdir("utenti/".$id,0700);
                }
                $valid_formats = array("jpg","jpeg","png","gif","bmp","JPG","JPEG","PNG","GIF","BMP");
                $path = "utenti/".$id."/";
                $titolo=$_POST['titolo'];
                $genere=$_POST['genere'];
                $caricaimg = $db->prepare("INSERT INTO immagini (idutente,titolo,genere) VALUES (:idutente,:titolo,:genere)");
                $caricaimg->execute(array(':idutente'=>$id,':titolo'=>$titolo,':genere'=>$genere));
                $prendiidimg = $db->prepare("SELECT id FROM immagini WHERE titolo = :titolo");
                $prendiidimg->execute(array(':titolo'=>$titolo));
                $residimg=$prendiidimg->fetch();
                $idimg=$residimg[0];
                $_FILES['userfile']['name']=$idimg;
                move_uploaded_file($_FILES["userfile"]["tmp_name"][$idimg],$path.$idimg);
            }
        }
    il form:

    codice:
                <form class="form-horizontal" role="form" enctype="multipart/form-data" method="POST" action="<?php echo htmlentities($_SERVER['PHP_SELF']);?>">
                    <div class="form-group">
                        <label class="col-sm-1 control-label" for="titolo">Titolo</label>
                        <div class="col-sm-3">
                            <input type="text" class="form-control" id="titolo" placeholder="Titolo" accept="image/*" name="titolo">
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-1 control-label" for="genere">Genere</label>
                        <div class="col-sm-3">
                            <select class="form-control" name="genere">
                                <option value="oldschool">Old School</option>
                                <option value="fantasy">Fantasy</option>
                            </select>
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-sm-6">
                            <div class="fileinput fileinput-new" data-provides="fileinput">
                                  <div class="fileinput-preview thumbnail" data-trigger="fileinput" style="width: 200px; height: 150px;"></div>
                                  <div>
                                    <span class="btn btn-default btn-file"><span class="fileinput-new">Seleziona Immagine</span><span class="fileinput-exists">Cambia</span><input type="file" name="userfile"></span>
                                    <a href="#" class="btn btn-default fileinput-exists" data-dismiss="fileinput">Rimuovi</a>
                                  </div>
                            </div>
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-sm-3">
                            <button type="submit" class="btn btn-success" name="carica_img">Carica</button>
                        </div>
                    </div>
                </form>

    qualcuno mi può dare una mano?
    Ultima modifica di passasooz; 17-04-2014 a 15:05

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Scrivi correttamente il tag per il campo file perché non lo chiudi

    <input type="file" name="userfile" />

    Prova a modificare questo
    <button type="submit" class="btn btn-success" name="carica_img">Carica</button>

    in questo
    <input type="submit" class="btn btn-success" name="carica_img" value="Carica" />

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    mm non dovrebbe essere per questo, riferito alla chiusura dei tag e nemmeno per il button trasformato in input, in quanto utilizzo bootstrap e quindi la codifica giusta per bootstrap è questa, negli altri form ho adoperato questo metodo e funzionano tutti in maniera corretta

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    La variabile $id dove e quando viene generata?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    la variabile id viene presa in precedenza, ora posto il codice php che si trova a inizio pagina compreso quello per caricare l'immagine così avrete un quadro più chiaro

    codice:
    <?php
    session_start();
    $condiz=((isset($_SESSION['id']))?($_SESSION['id']):(false));
    if(!$condiz){
        echo "devi effettuare il login per accedere a quest'area";
    }
    else{
        $col = 'mysql:host=sql.francescopassanante.com;dbname=dfjsdjfsd';
        $db = new PDO($col , 'sdfsdfdsfdsf', 'sdfsdfsdfdsfsdf');
        $sql = $db->prepare("SELECT * FROM utente WHERE id = :id");
        $sql->execute(array(':id'=>$_GET['id']));
        $res=$sql->fetch();
        $id=$res[0];
        $nome=$res[1];
        $cognome=$res[2];
        $tipo=$res[3];
        $nazione=$res[4];
        $citta=$res[5];
        $provincia=$res[6];
        $indirizzo=$res[7];
        $email=$res[8];
        $telefono=$res[10];
        $sesso=$res[11];
        if($sesso=="m"){
            $sesso="Maschio";
        }
        else{
            $sesso="Femmina";
        }
        if(isset($_POST['carica_img']) and $_SERVER['REQUEST_METHOD'] == "POST"){
            if(isset($_FILES['userfile'])){
                if(!is_dir("utenti/".$id)){
                    mkdir("utenti/".$id,0700);
                }
                $valid_formats = array("jpg","jpeg","png","gif","bmp","JPG","JPEG","PNG","GIF","BMP");
                $path = "utenti/".$id."/";
                $titolo=$_POST['titolo'];
                $genere=$_POST['genere'];
                $caricaimg = $db->prepare("INSERT INTO immagini (idutente,titolo,genere) VALUES (:idutente,:titolo,:genere)");
                $caricaimg->execute(array(':idutente'=>$id,':titolo'=>$titolo,':genere'=>$genere));
                $prendiidimg = $db->prepare("SELECT id FROM immagini WHERE titolo = :titolo");
                $prendiidimg->execute(array(':titolo'=>$titolo));
                $residimg=$prendiidimg->fetch();
                $idimg=$residimg[0];
                $_FILES['userfile']['name']=$idimg;
                move_uploaded_file($_FILES["userfile"]["tmp_name"][$idimg],$path.$idimg);
            }
        }
    ?>
    <!DOCTYPE html>
    ................
    FORM.............

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2012
    residenza
    Dese (Venezia)
    Messaggi
    41
    Ciao,
    forse è un problema di permessi? Puoi creare cartelle sul server?
    Inoltre secondo me è sbagliata l'istruzione move_uploaded_file($_FILES["userfile"]["tmp_name"][$idimg],$path.$idimg); toglierei [$idimg] dopo$_FILES["userfile"]["tmp_name"].
    Ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    allora...
    ho capito il perchè non mi crea la cartella, e ho diciamo temporaneamente risolto ma non vorrei utilizzare questo metodo "risolutivo"

    io a questa pagina profilo.php accedo passando a GET l'id dell'utente, qundi quando esegui la form per caricare l'immagine e come action gli do $_SERVER['PHP_SELF'] non veniva passato il GET e quindi non veniva creata la sottocartella di utenti che prendeva il nome di $id che era un valore preso in GET.
    così ho passato il valore anzichè in GET con il SESSION e così la cartella me la crea, ma mi chiedevo, io vorrei mantenere il GET in questa funzione, c'è un metodo per far capire a $_SERVER che deve rimandarmi sulla stessa pagina passandomi per GET l'id?

    comunque sia, una volta che mi crea la cartella, il record nel db non viene eseguito e il file nella cartella da me creata non viene inserito...

    ho provato a togliete come ha detto MABULLO [[$idimg] dopo $_FILE["userfile"]["tmp_name"] ma il risultato che ottengo è questo:

    Warning: move_uploaded_file() [function.move-uploaded-file]: The second argument to copy() function cannot be a directory in /home/mhd-01/www.francescopassanante.com/htdocs/tattoonia/profilo.php on line 46

    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpVs07Zf' to 'utenti/8/' in /home/mhd-01/www.francescopassanante.com/htdocs/tattoonia/profilo.php on line 46
    la linea 46 è quella del move_uploaded_file che momentaneamente è scritta così:

    codice:
    move_uploaded_file($_FILES["userfile"]["tmp_name"],$path.$idimg);

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Se proprio vuoi puoi provare a modificare l'action del form in questo modo

    action="<?php echo htmlentities($_SERVER['PHP_SELF'].'?id='.$id ?>"

    in cui ovviamente $id è l'id che vuoi passare tramite get

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    ok si questo mi funziona grazie...

    per il resto invece qualche idea...?

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Invece di fare il move_uploaded_file() prova a stampare $path.$idimg e vedi se è corretta, magari a $idimg manca l'estensione e viene interpretata come directory e non come file.

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.