Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    Gioca a dove stà l'errore

    Salve a tutti....
    Ho un cliente che ha appena migrato i suoi siti su un'altro server.... naturalemtne a parte dover ritoccare una marea di cose che altrimenti non avrebbero funzionato, ne ho una che proprio non capisco come risolvere.
    Il sito è stato creato anni fa da una persone che a mio parere......cercherò di non dire niente ma vabbè...è più il lavoro che sto facendo per rimetterlo in sesto che altro.
    Comunque.....ho questa pagina dove uploadare un'immagine direttamente nel db (cosa che sinceramente non ho mai fatto.....)
    Se posto un po di codice mi aiutate a capire dove sta l'inghippo???

    form:
    Codice PHP:
     <form action="famiglia.php" method="POST" enctype="multipart/form-data">
    .......
                      <
    td bgcolor="#F2F5FF"><div align="center">Immagine
                          
    <input name="img" type="file" id="img">
                      </
    div></td>
    ........
                  </
    form
    stessa pagina ma parte che fa l'upload

    Codice PHP:
    case 'INSERTNEW':
            
    #echo $_FILES['img']['tmp_name'];
            
    if ($_FILES['img']['tmp_name']!="none" AND $_FILES['img']['tmp_name']!=NULL){
                
    $hndl=fopen($_FILES['img']['tmp_name'],"rb"); 
                
    $isize=($_FILES['img']['size']); 
                
    $imgtype=$_FILES['img']['type'];
                  
    $imgdata=""
                  while(!
    feof($hndl)){ 
                    
    $imgdata.=base64_encode(fread($hndl,$isize)); 
                  }
            }
            if (
    insert_famiglia($_POST$imgdata$imgtype)){
                
    header ("Location: famiglie.php?");
                
    #echo "ciccia";
            
    }else{
                
    debug("ERROR updating data...");
            } 
            break; 
    funzione insert_famiglia
    Codice PHP:
    function insert_famiglia($array$imgdata$imgtype){
        global 
    $connection;
        if(
    $connection){
            if(
    $result=mysql_query("INSERT INTO famiglie SET nome_famiglie = '$array[nome_famiglie]', descr_famiglie = '$array[descr_famiglie]', id_categorie = '$array[id_categorie]', posizione = '$array[posizione]', immagine='$imgdata', img_type='$imgtype'")){
                
    # TODO This is not very safe! :(
                
    $inserted_id=mysql_insert_id();
                return 
    $inserted_id;
            }else{
                return 
    FALSE;
            };
        }else{
            return 
    FALSE;
        }

    semplicaemente non mi fa l'upload delle immagini...tutto il resto sì. E quando si va a vedere nel db da degli errori........
    Qualcuno che vuole giocare con me a scopri l'errore....per favore??!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Complimenti per il titolo della discussione

    Allora, tiro ad indovinare, in base ad una mia esperienza precedente in un campo un po' diverso: l'invio di email con allegato. Dopo un po' di tentativi mi sono accorto che per un qualche motivo lo script non riusciva a leggere il file caricato tramite form e da allegare direttamente dalla cartella tmp predefinita (ossia dove accedi con $_FILES['nome_campo']['tmp_name']) e che il problema si risolveva spostandolo all' "interno" del sito con un move_uploaded_file prima di passare alla lettura (ed aggiunta in allegato) tramite addAttachment. Magari l'inserimento nel database soffre, sul tuo server, di un problema analogo? Prova a spostare il file e poi a fare quel che devi fare.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Originariamente inviato da Andrea1979
    Complimenti per il titolo della discussione

    Allora, tiro ad indovinare, in base ad una mia esperienza precedente in un campo un po' diverso: l'invio di email con allegato. Dopo un po' di tentativi mi sono accorto che per un qualche motivo lo script non riusciva a leggere il file caricato tramite form e da allegare direttamente dalla cartella tmp predefinita (ossia dove accedi con $_FILES['nome_campo']['tmp_name']) e che il problema si risolveva spostandolo all' "interno" del sito con un move_uploaded_file prima di passare alla lettura (ed aggiunta in allegato) tramite addAttachment. Magari l'inserimento nel database soffre, sul tuo server, di un problema analogo? Prova a spostare il file e poi a fare quel che devi fare.

    grazie intanto.... spero che i mod non se la prendando per il titolo forse non troppo descrittivo...so che non si fa ma lo trovavo divertente.....
    Sto leggendo un po in giro e anche io credo che il problema possa essere quello.....cercherò di capire...
    Solo che non so per inesperienza come funzioni il memorizzare le immagini nel db.....

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    lascia il resto dello script in quel modo, per il momento... se il problema è quello che penso io, magari te la cavi con un semplice

    move_uploaded_file
    lettura ed inserimento dal nuovo percorso
    unlink
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Originariamente inviato da Andrea1979
    lascia il resto dello script in quel modo, per il momento... se il problema è quello che penso io, magari te la cavi con un semplice

    move_uploaded_file
    lettura ed inserimento dal nuovo percorso
    unlink
    ok...quindi tu dici di:
    case 'INSERTNEW':

    inserire qui il il move_uploaded_file


    #echo $_FILES['img']['tmp_name'];
    if ($_FILES['img']['tmp_name']!="none" AND $_FILES['img']['tmp_name']!=NULL){
    $hndl=fopen($_FILES['img']['tmp_name'],"rb");
    $isize=($_FILES['img']['size']);
    $imgtype=$_FILES['img']['type'];
    $imgdata="";
    while(!feof($hndl)){
    $imgdata.=base64_encode(fread($hndl,$isize));
    }
    }
    if (insert_famiglia($_POST, $imgdata, $imgtype)){
    header ("Location: famiglie.php?");
    #echo "ciccia";
    }else{
    debug("ERROR updating data...");
    }
    break;

    leggo su php.net:
    bool move_uploaded_file ( string filename, string destination )
    Questa funzione verifica che il file indicato da filename è un file validamente caricato (nel senso che è stato caricato attraverso il meccanismo di caricamento HTTP POST di PHP). Se il file è valido, verrà spostato nel file dato da destination.

    Se filename non è un file validamente caricato, allora non verrà compiuta alcuna azione e move_uploaded_file() restituirà FALSE.

    Se filename è un file validamente caricato, ma non può essere mossi per qualche ragione, non verrà compiuto alcunchè e move_uploaded_file() restituirà FALSE. In più verrà visualizzato un avviso di pericolo.

    Questo tipo di verifica è particolarmente importante se sussiste la possibilità che qualcosa fatto con i file caricati possa rivelare il loro contenuto agli utenti o ad altri utenti dello stesso sistema.
    quello che mi domando io è (a parte sapere se il move:uploaded_file va effettivamente lì dove l'ho segnato):
    string_destination??
    qual'è? la cartelletta temp?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Codice PHP:
    case 'INSERTNEW'
            
    #echo $_FILES['img']['tmp_name']; 
            
    if ($_FILES['img']['tmp_name']!="none" AND $_FILES['img']['tmp_name']!=NULL){
                
    $nuovo_percorso "/nuovo/percorso/".$_FILES['img']['name'];
                if (
    move_uploaded_file($_FILES['img']['tmp_name'], $nuovo_percorso)) {
                  
    $hndl=fopen($nuovo_percorso,"rb"); 
                  
    $isize=($_FILES['img']['size']); 
                  
    $imgtype=$_FILES['img']['type']; 
                  
    $imgdata=""
                  while(!
    feof($hndl)){ 
                    
    $imgdata.=base64_encode(fread($hndl,$isize)); 
                  }
                  
    unlink($nuovo_percorso); //cancella il file 
                
    }
                else {
                 echo(
    "Non sono stato in grado di spostare il file");
                }
            } 
            if (
    insert_famiglia($_POST$imgdata$imgtype)){ 
                
    header ("Location: famiglie.php?"); 
                
    #echo "ciccia"; 
            
    }else{ 
                
    debug("ERROR updating data..."); 
            } 
            break; 
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Originariamente inviato da Andrea1979
    Codice PHP:
    case 'INSERTNEW'
            
    #echo $_FILES['img']['tmp_name']; 
            
    if ($_FILES['img']['tmp_name']!="none" AND $_FILES['img']['tmp_name']!=NULL){
                
    $nuovo_percorso "/nuovo/percorso/".$_FILES['img']['name'];
                if (
    move_uploaded_file($_FILES['img']['tmp_name'], $nuovo_percorso)) {
                  
    $hndl=fopen($nuovo_percorso,"rb"); 
                  
    $isize=($_FILES['img']['size']); 
                  
    $imgtype=$_FILES['img']['type']; 
                  
    $imgdata=""
                  while(!
    feof($hndl)){ 
                    
    $imgdata.=base64_encode(fread($hndl,$isize)); 
                  }
                  
    unlink($nuovo_percorso); //cancella il file 
                
    }
                else {
                 echo(
    "Non sono stato in grado di spostare il file");
                }
            } 
            if (
    insert_famiglia($_POST$imgdata$imgtype)){ 
                
    header ("Location: famiglie.php?"); 
                
    #echo "ciccia"; 
            
    }else{ 
                
    debug("ERROR updating data..."); 
            } 
            break; 
    ok....mo provo.....
    nel frattempo grazie mille.......

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    chiaramente /nuovo/percorso/ dev'essere un percorso valido (magari qualcosa del tipo

    /www/htdocs/tuosito.com/tuacartella/

    ma lo saprai tu, dalle impostazioni del tuo server-
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    Originariamente inviato da Andrea1979
    chiaramente /nuovo/percorso/ dev'essere un percorso valido (magari qualcosa del tipo

    /www/htdocs/tuosito.com/tuacartella/

    ma lo saprai tu, dalle impostazioni del tuo server-
    sisi...ora sto facendo un po di prove....sinceramente il correggere errori di vecchi siti è una delle cose più noiose e pallose che abbia mai fatto.....

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    se ti pagano, amen
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.