Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313

    controllo isset files non funzionante

    buongiorno a tutti,

    eseguo un controllo se è stata inserita un'immagine da caricare altrimenti carica solo gli altri dati senza dare errore ma sembra che il controllo nen venga mai eseguito e non riesco a capire perchè.
    questo è il codice di controllo:
    Codice PHP:
    <?php
            session_start
    ();
            
            
    //connessione db
            
    $connmysql_connect("localhost""root""") or die ("impossibile connettersi");
            
    //selezione del DB
            
    mysql_select_db("archiviottico"$conn) or die ("impossibile selezionare il db");
            
            if(!isset(
    $_FILES["files"]["tmp_name"])){
                    
    $cev=$_SESSION['cev'];
                    
    $utente=$_SESSION['username'];            
                    
    $id=$_SESSION['idpolizza'];
                    
    $idpolizza$_POST['idpolizza'];        
                    
    $numeropolizza$_POST['numeropolizza'];
                    
    $compagnia$_POST['compagnia'];
                    
    $note$_POST['note'];
                    
    $idcliente$_POST['idcliente'];
                    
    $cev$_POST['cev'];
                
                    
    $query "UPDATE polizza SET idpolizza='$idpolizza', numeropolizza='$numeropolizza', compagnia='$compagnia', idcliente='$idcliente', note='$note', cev='$cev', utente='$utente' WHERE idpolizza='$id'";
                    
    mysql_query($query) or die (mysql_error(""));
    }
    //fine if
            
    else{
                
            
                    
    // controllo che non ci siano stati errori durante l'upload
                    
    if (!is_uploaded_file($_FILES['files']['tmp_name']))
                        die (
    "Errore di caricamento: ".$_FILES['files']['error']);
        
                        
    $nome $_FILES["files"]["name"];
                        
    $dimensione $_FILES["files"]["size"];
                        
    $cartella "polizze/"// cartella in cui vengono salvati file pdf delle polizze

                        
    if($dimensione 10240000000) {

                            if(
    is_file($cartella.$nome)){
        
                                echo 
    "Esiste già una polizza con questo nome";
            
                            }
                            else {
                                
    $cev=$_SESSION['cev'];
                                
    $utente=$_SESSION['username'];    
                                
    $id=$_SESSION['idpolizza'];
                                
    $idpolizza$_POST['idpolizza'];        
                                
    $numeropolizza$_POST['numeropolizza'];
                                
    $compagnia$_POST['compagnia'];
                                
    $note$_POST['note'];
                                
    $idcliente$_POST['idcliente'];
                                
    $cev$_POST['cev'];
            
                                
    // sposto il file caricato nella cartella di destinazione
                                
    $polizzamove_uploaded_file($_FILES['files']['tmp_name'], $cartella.$nome ) or die("Errore di upload del file.");
                  
                                
    $query "UPDATE polizza SET idpolizza='$idpolizza', nomepolizza='$nome', numeropolizza='$numeropolizza', dimensione='$dimensione', compagnia='$compagnia', idcliente='$idcliente', note='$note', cev='$cev', utente='$utente' WHERE idpolizza='$id'";
                                
    mysql_query($query) or die (mysql_error(""));
    }
    //fine else caricamento file
                
            
    }//fine if $dimensione
        
            
    }//fine else isset FILES
    ?>
    ho controllato passo passo ogni istruzione ma nulla.
    quando modifico i dati compreso il file pdf tutto ok ma quando modifico tutti i dati tranne il file pdf mi restituisce errore di carimento 4 che è un controllo che viene eseguito solo se il file pdf è stato caricato.
    dove sbaglio?
    grazie a tutti in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    dov'è questo errore? in che riga? stampati a video il contenuto delle variabili del form per vedere come sono valorizzate

  3. #3
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,648
    In attesa di più spiegazioni ruguardo al tuo problema ti consiglio di rivedere le tue query perché sono ad alto rischio di SQL Injection.

    Ti consiglio di utilizzare une stensione di PHP, ovvero PDO

    http://php.net/manual/en/book.pdo.php

    o in alternativa mysql_real_escape_string in accoppiata con sprintf

    http://php.net/manual/en/function.my...ape-string.php

  4. #4
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    in realtà non c'è in vero e proprio errore, è che non effettua il controllo if...
    se nel form cambio tutti i dati compreso il file la modifica avviene con successo, ma se modifico tutti i campi tranne il file, mi da:
    codice:
    Errore di caricamento:4
    e non capisco dove si trovi l'errore

  5. #5
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    ho provato a risolvere questo problema ma non capisco perchè sembra che non effettui il controllo
    Codice PHP:
    if(!isset($_FILES["files"]["tmp_name"])){ 
    qualcuno può illuminarmi?

  6. #6
    Ti è già stato suggerito di stampare il contenuto delle variabili!

    Codice PHP:
    print_r($_FILES); 
    oppure:

    Codice PHP:
    var_dump($_FILES); 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    Mi stampa questo messaggio:
    codice:
    Array ( [files] => Array ([name] => [type] => [tmp_name] =>[error]=> 4 [size] => 0 ) )
    ed è giusto che il nome, tipo e il tmp_name siano vuoti ma non dovrebbe fare questo perchè se non metto il file da modificare non dovrebbe dare Errore di caricamento 4 vorrebbe dire che non ha eseguito il controllo if

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    ma "isset" verifica che esista la variabile... da quel che posti la variabile c'è, ma vuota, quindi controlla (anche) questo aspetto, es.:

    Codice PHP:
    if (!isset($_FILES["files"]["tmp_name"])) || ($_FILES["files"]["tmp_name"]=='') { 
    ...in realtà nel tuo caso dovrebbe bastare il secondo pezzo, ma tant'è...

  9. #9
    Ma a questo punto "tmp_name" è settato, ma vuoto per cui è giusto che isset() ti ritorni true. Prova ad aggiungere il controllo sull'empty:

    Codice PHP:
    ...
    if (!isset(
    $_FILES["files"]["tmp_name"]) || empty($_FILES["files"]["tmp_name"])) { 
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  10. #10
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    fantastico satifal/eyen, ora funziona perfettamente...vorrei chiedervi un ultimo favore:

    1. che differenza c'è tra:
    codice:
    empty($_FILES["files"]["tmp_name"])
    e
    codice:
    ($_FILES["files"]["tmp_name"]=='')
    2. che controllo eseguono queste due "diverse" istruzioni nell'if?

    grazie molte a entrambi

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.