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

    Problema file upload e PHP 5

    Ciao a tutti
    ho un problema con un upload che con la versione PHP4 funzionava perfettamente così come è scritto, ora però mi trovo con la versione PHP 5 e l'upload non funziona più.
    Posto il codice:
    Codice PHP:
    <?php
    require("/home/sgsa68c8/public_html/admin/inc/config.php");

    echo 
    "<form name=\"form\" action=\"{$_SERVER['PHP_SELF']}\" method=\"post\" enctype=\"multipart/form-data\">\n";

    DB_Connect();

    $FTGfile $file_name;

    $FTG_file $FTGfile;

    # directory to upload to

    @copy($file$uploaddir3.$file_name); 

    //IMMAGINE
    echo "            <tr>\n";
    echo 
    "                <td height=20 width=40% valign=middle>\n";
    echo 
    "                <p class=\"destro\"><span class=\"TESTO\">Immagine</span></p></td>\n";
    echo 
    "                <td width=60% colspan=3 valign=middle>\n";
    echo 
    "                

    <input name=\"file\" value=\"
    $file\" size=25 type=file></p></td>\n";
    echo 
    "            </tr>\n";

    //SUBMIT
    echo "    <tr>\n";
    echo 
    "        <td height=21 width=100% colspan=4 valign=top bgcolor=\"#ffffff\">\n";
    echo 
    "        <input type=\"hidden\" name=\"cmd\" value=\"add\" />\n";

    echo 
    "        <p class=\"centrato\"><input type=\"submit\" value=\"Invia\" name=\"invia\"></p></td>\n";
    echo 
    "    </tr>\n";


            
    DB_Query("INSERT INTO $table3(file) VALUES('$FTG_file');");


    DB_Close();

    ?>
    Non solo non mi carica il file nella directory, ma non mi salva neppure il file_name nel DB.

    Cosa è cambiato rispetto alla versione 4 di PHP?

    C'entrano i register global o è una questione di codice?

    Qualcuno mi può dare una mano? Non ci capisco più niente!


  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    bhe era un miracolo che andasse con php4, visto che quel metodo è deprecato da anni.

    Al posto della funzione copy usa move_uploaded file, e poi non vedo da dove prelevi il file, ma ho paura che tu dia per scontato che un campo file chiamato pippo generi una variabile chiamata $pippo, invece devi andare a cercare il tuo file nell'array $_FILES['pippo'] dove avrai altre info oltre al nome del file.

    ciao

  3. #3
    Ciao Gianaz
    intanto ti ringrazio per avermi risposto.
    Devo dire che non mastico troppo php, tant'è che questo codice lo avevo trovato e modificato a mio uso e consumo e funzionava, anche se di vecchia concezione.

    Per qunto riguarda il file che prelevo, non viene "manipolato", ma si carica così com'è, direttamente dal mio HD.

    A me serve solamente copiare il file_name nel DB, in modo da avere un link alla directory images, quando lo richiamo dal DB.

    Comunque ora provo a sostituire la funzione copy, poi ti tico.

    grazie

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    cioè in pratica client e server sono la stessa macchina?

    Comunque (non avevo letto prima), vedo che usi comunque la procedura di upload con il file input.

    L'errore vero e proprio secondo me sta nelle register_globals che di default sono a off, ma che nelle vecchie versioni erano a on.

    Se non mastichi molto php e non ti vuoi sbattere puoi provare a vedere se c'è ancora la possibilità di settarle a on (cerca nel file php.ini la direttiva register_globals appunto).
    Modifica e riavvia il server e dovrebbe andare.

    Altrimenti sostituisci $file con $_FILES['file']['name'] per il nome del file, mentre $_FILES['file']['tmp_name'] per prelevarlo dalla dir di temp e spostarlo dove vuoi (meglio con move_uploaded_file(), ma dovrebbe funzionare anche con copy).

    Ciao

  5. #5
    Ieri ho avuto un problema simile nell'autenticazione degli utenti tramite login.
    Un "forumista"?! mi ha dato questa dritta che mi ha risolto tutto a proposito dei register global.
    il codice che mi dato è:
    Codice PHP:
    ##############################
    if (!ini_get('register_globals')) {
      
    $superglobals = array($_SERVER$_ENV$_FILES$_COOKIE$_POST$_GET);
      if (isset(
    $_SESSION)) {
          
    array_unshift($superglobals$_SESSION);
       }
       foreach (
    $superglobals as $superglobal) {
          
    extract($superglobalEXTR_SKIP);
       }
    }
    ############################## 
    Forse messo all'inizio del codice mi aiuta.
    Comunque adesso provo con quello che mi hai scritto.
    A dopo

  6. #6
    Scusa non avevo letto bene.
    No client e server non sono la stessa macchina. Il server è remoto e non posso modificare php.ini.

    Comunque ho fatto delle prove e adesso almeno riesco a salvare il file_name nel DB.

    Quello che non va è il caricamento del file sul server.

    Il codice che ho usato ora é:
    Codice PHP:
    <?php

    require("/home/sgsa68c8/public_html/admin/inc/config.php");

    echo 
    "<form name=\"form\" action=\"{$_SERVER['PHP_SELF']}\" method=\"post\" enctype=\"multipart/form-data\">\n";

    DB_Connect();

    # directory to upload to
    @move_uploaded_file($_FILES['file']['name'], $uploaddir3.$_FILES['file']['tmp_name']); 

    //IMMAGINE
    echo "            <tr>\n";
    echo 
    "                <td height=20 width=40% valign=middle>\n";
    echo 
    "                <p class=\"destro\"><span class=\"TESTO\">Immagine</span></p></td>\n";
    echo 
    "                <td width=60% colspan=3 valign=middle>\n";
    echo 
    "                

    <input name=\"file\" value=\"
    $file\" size=25 type=file></p></td>\n";
    echo 
    "            </tr>\n";

    //SUBMIT
    echo "    <tr>\n";
    echo 
    "        <td height=21 width=100% colspan=4 valign=top bgcolor=\"#ffffff\">\n";
    echo 
    "        <input type=\"hidden\" name=\"cmd\" value=\"add\" />\n";

    echo 
    "        <p class=\"centrato\"><input type=\"submit\" value=\"Invia\" name=\"invia\"></p></td>\n";

            
    DB_Query("INSERT INTO $table3(file)

    VALUES('"
    .$_FILES['file']['name']."');");

    DB_Close();

    ?>
    Mi puoi dare una mano?
    Grazie!!!

  7. #7
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    codice:
    @move_uploaded_file($_FILES['file']['name'], $uploaddir3.$_FILES['file']['tmp_name']);
    deve diventare:
    codice:
    @move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir3.$_FILES['file']['name']);
    devi spostare il file dalla sua posizione temporanea a quella che vuoi tu, non viceversa...

    e comunque quando sei in fase di sviluppo evita le @ davanti alle funzioni, altrimenti non capisci qual'è l'errore che blocca il tuo script.

    ciao

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.