Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 29
  1. #11
    Allora, rieccoci

    ora tutto è al posto giusto.
    A seconda di quello che scrivo cambia il risultato, peccato che le due cose che scrivo dovrebbero essere equivalenti.

    se il file img.php è così:
    Codice PHP:
    include "../include/connection.php";
    $id$_GET['id'];

    $query="SELECT mime, img FROM centrale_file_tipo WHERE id = $id";
        if (!
    $resultmysql_db_query($db_name$query$db_link)) 
        print(
    "non funziona la $query".mysql_error()); 

    $row mysql_fetch_assoc($result); 
    $img $row['img'];
    if (
    $img=="")
        {
        
    $query="SELECT mime, img FROM centrale_file_tipo WHERE id = 2";
        if (!
    $resultmysql_db_query($db_name$query$db_link)) 
        print(
    "non funziona la $query".mysql_error()); 
        
        
    $row mysql_fetch_assoc($result); 
        
    $img $row['img'];
        
    $mime$row['mime'];
        }
    header('Content-Type: '.$row['mime'].''); 
    echo 
    $img
    e nella barra degli indirizzi scrivo http://localhost/planner/img.php?id=14
    mi viene fuori una pagina bianca con scritto colo http://localhost/planner/img.php?id=14
    come se contenesse una echo "http://localhost/planner/img.php?id=14";

    invece se metto

    Codice PHP:
    include "../include/connection.php";
    $id$_GET['id'];
    $query="SELECT mime, img FROM centrale_file_tipo WHERE id = $id";
        if (!
    $resultmysql_db_query($db_name$query$db_link)) 
        print(
    "non funziona la $query".mysql_error()); 

    $row mysql_fetch_assoc($result); 
    $img $row['img'];
    if (
    $img=="")
        {
        
    $query="SELECT mime, img FROM centrale_file_tipo WHERE id = 2";
        if (!
    $resultmysql_db_query($db_name$query$db_link)) 
        print(
    "non funziona la $query".mysql_error()); 
        
        
    $row mysql_fetch_assoc($result); 
        
    $img $row['img'];
        
    $mime$row['mime'];
        }
    header('Content-Type: '.$mime.'');  //ho cambiato qui
    echo $img
    e nella barra degli indirizzi scrivo http://localhost/planner/img.php?id=14
    mi viene fuori la finestra di download per scaricare la pagina img.php. la apro con blocco note e dentro ci sono tutti i simboletti strani quindi dovrebbe essere l'immagine

  2. #12
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    ma cosa c'è nel campo mime nel db?

  3. #13
    il mime type
    nel caso di una gif c'è scritto image/gif

    e lo prendo così

    $filetype = $_FILES["immagine"]["type"];

    nel file che salva tutti i dati nel db.
    Tutto il codice è in alto, al primo post

  4. #14
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Sbaglio o nel primo blocco di codice non valorizzi $mime?

  5. #15
    nel primo blocco di codice non valorizzo $mime e nemmeno lo mostro perchè quello è il form di inserimenti/modifica. E l'utente medio, solitamente, nemmeno sa cosa sia un mime type quindi non glie lo faccio vedere.
    Ma prima di salvare tutto nel db, lo estraggo con
    $filetype = $_FILES["immagine"]["type"];
    e con la insert lo schiaffo nel campo mime della tabella

  6. #16
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Cercherò di spiegarmi meglio.
    Nel tuo msg di ieri alle 16.42 hai postato due blocchi di codice alternativi. Quello che io avevo notato si riferiva al secondo, nel quale usi la variabile $mime per inviare l'header, ma la valorizzi solo nella seconda parte (dentro la if) e non nella prima, il che significa che se trovi l'immagine nel db butti fuori un content-type vuoto. Questo è il motivo per cui ti appaiono i 'simboletti' (supponendo che non entri nella if).

    Riguardando invece il primo blocco di codice, in quello usi $row['mime'], che dovrebbe essere correttamente valorizzato in entrambi i casi. Lì quindi non si spiega perché non funzioni,e soprattutto non si spiega perché ti esca l'url della pagina invece dell'immagine.

    Potrei ipotizzare che tu abbia fatto qualche danno in fase di salvataggio dell'immagine. Ma senza avere il tutto davanti temo di non poter fare granché

  7. #17
    Giusto, hai perfettamente ragione.
    Prima della if non valorizzavo $mime e quindi se trovavava l'immagine mandavo l'header senza un content-type.

    ora il codice è questo:
    Codice PHP:
    <?
    include "../include/connection.php";
    $id$_GET['id'];

    $query="SELECT mime, img FROM centrale_file_tipo WHERE id = $id";
        if (!
    $resultmysql_db_query($db_name$query$db_link)) 
        print(
    "non funziona la $query".mysql_error()); 
        
    $row mysql_fetch_assoc($result); 
    $img $row['img'];
    $mime$row['mime'];
    if (
    $img=="")
        {
        
    $query="SELECT mime, img FROM centrale_file_tipo WHERE id = 2";
        if (!
    $resultmysql_db_query($db_name$query$db_link)) 
        print(
    "non funziona la $query".mysql_error()); 
            
        
    $row mysql_fetch_assoc($result); 
        
    $img $row['img'];
        
    $mime$row['mime'];
        }
    header('Content-Type: '.$mime.''); 
    echo 
    $img;
    ?>
    (formato immagine: 16x16)

    ora le casistiche sono queste (con 3 browser diversi):
    1)Internet explorer 7
    a) Nella pagina che mi da l'elenco di tutte le immagini ho un quadrato 16x16 vuoto con solo un puntino bianco in mezzo.
    b) se scrivo nella barra degli indirizzi localhost/planner/img.php?id=14 mi da lo stesso quadrato 16x16 con il puntino bianco in mezzo

    2) Mozilla Firefox 3.0.15
    a) Nella pagina che mi da l'elenco di tutte le immagini ho il nulla! Ma se evidenzio con il mouse si vede che un quadrato 16x16 c'è.
    b) se scrivo nella barra degli indirizzi localhost/planner/img.php?id=14 mi da una pagina bianca con solo scritto localhost/planner/img.php?id=14, come il codice di questa pagina fosse
    Codice PHP:
    <?php
    echo "localhost/planner/img.php?id=14";
    ?>
    3) Google Chrome 3.0.195.27
    a) Nella pagina che mi da l'elenco di tutte le immagini ho un quadrato 16x16 totalmente vuoto
    b) se scrivo nella barra degli indirizzi localhost/planner/img.php?id=14 mi da una pagina bianca con dentro solo la classica immaginetta di un'immagine corrotta o non trovata

    Nel file che crea la tabella con l'elenco delle immagini, alla riga
    Codice PHP:
    echo("<td align=\"center\"><img src=\"planner/img.php?id=$rif\" $img_mod>$rif</td>"); 
    ho provato a mettere
    Codice PHP:
    echo("<td align=\"center\"><a href=\"planner/img.php?id=$rif\">link</a></td>"); 
    ed il risultato è (con tutti e 3 i browser) che mi trovo una tabella chiaramente senza immagini e piena 'link' che cliccandoci mi aprono una pagina dal comportamento identico al caso b) di ogni browser.
    Questo mi fa pensare in modo abbastanza sicuro che dentro la variabile $img ci sia sempre scritto il link e che semplicemente ogni browser si comporta in modo diverso.

    Questo potrebbe far pensare che allora nel db, nel campo img della tabella, con un qualche errore di codice, io ci sia andato a scrivere il link. Ma ho guardato la tabella su phpmyadmin e dice che il campo img è grande 78kbyte....quindi un pochino troppo spazio per metterci solo una stringa lunga forse 30 caratteri come è localhost/planner/img.php?id=14

  8. #18
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    No, nella tabella non hai il link. Hai l'immagine salvata male. Posta il codice con cui la salvi

  9. #19
    eccolo:

    Codice PHP:
    if(is_uploaded_file($_FILES['immagine']['tmp_name']))
        {
        
    $filetype $_FILES["immagine"]["type"];
        
    $filename $_FILES["immagine"]["name"];
        
    $tmpname $_FILES["immagine"]["tmp_name"];
        
    $filesize $_FILES["immagine"]["size"];
        
    $error $_FILES["immagine"]["error"];
        }
    if(
    $filesize <= $maxfilesize AND $error == 0)
        {
        if(
    is_uploaded_file($_FILES['immagine']['tmp_name']))
            {
            
    $buffer '';
            
    $fp fopen($tmpname,"r");
            if(
    $fp != false)
                {
                
    $buffer fread($fp$filesize);
                
    fclose($fp);
                }
            
    $filecontentmysql_real_escape_string($buffer);
            }
        }
    }

    $insert "INSERT INTO centrale_file_tipo (mime, img_name, img) VALUES ('".$filetype."', '".$filename."', '".$filecontent."')";
        if(!
    $result mysql_db_query($db_name$insert$db_link))
        print (
    "non funziona la $insert".mysql_error()); 

  10. #20
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Prova a cambiare questo

    Codice PHP:
          if(is_uploaded_file($_FILES['immagine']['tmp_name'])) 
            { 
            
    $buffer ''
            
    $fp fopen($tmpname,"r"); 
            if(
    $fp != false
                { 
                
    $buffer fread($fp$filesize); 
                
    fclose($fp); 
                } 
            
    $filecontentmysql_real_escape_string($buffer); 
            } 
        } 
    Con questo
    Codice PHP:
          if(is_uploaded_file($_FILES['immagine']['tmp_name'])) 
            { 
            
    $buffer file_get_contents($_FILES['immagine']['tmp_name']); 
            
    $filecontentmysql_real_escape_string($buffer); 
            } 
        } 

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 © 2026 vBulletin Solutions, Inc. All rights reserved.