PHP Update immagine di un utente

  • Creatore Discussione Creatore Discussione Nickname
  • Data di inizio Data di inizio
Si. Hai provato?

Dove devo inserirlo di preciso ?

PHP:
if (isset($_FILES["foto"]["name"]) && !empty($_FILES["foto"]["name"])) {
        $nomefile = strtolower($_FILES["foto"]["name"]);
        if (is_uploaded_file($_FILES["foto"]["tmp_name"])) {			
            if (move_uploaded_file($_FILES["foto"]["tmp_name"], "uploadimg/$nomefile")) {
                $connect = new mysqli("", "", "", "");
                $query = "UPDATE utenti SET foto = '$nomefile' WHERE username = '" . $_SESSION['utente'] . "'";  
				echo "L'immagine è stata modificata correttamente.";
                if (!$connect->query($query)) {
       echo "Errore query :" . $connect->error;
}  
                $connect->close();
            }
        }
    }
 
Questo è il codice per la modifica dell'immagine aggiungendone una nuova.
Ora devi creare un'altra pagina (o puoi farlo anche sulla stessa gestendo dei parametri) che elimina la foto sia dal db (con la query di prima) sia dalla cartella (con la funzione unlink).
 
..o puoi farlo anche sulla stessa gestendo dei parametri, che elimina la foto sia dal db (con la query di prima) sia dalla cartella (con la funzione unlink).

È proprio questo che voglio, nello stesso script eliminare la foto sia dal db sia dalla cartella.
Ma dove inserisco la funzione unlink?
 
In un'altra pagina o in quella passando un parametro tramite il metodo GET e controllando il valore inserito.
E' più sicuro fare un'altra pagina deleteimage.php
 
In un'altra pagina o in quella passando un parametro tramite il metodo GET e controllando il valore inserito.
E' più sicuro fare un'altra pagina deleteimage.php

Eh però io voglio fare in modo che quando l'utente cambia la foto quella vecchia si cancelli, quindi dovrebbe essere tutto uno script
 
Ah allora ti basta rinominare la foto con l'username dell'utente. In modo che venga sovrascritta.
Modifica questa riga:
PHP:
        $nomefile = strtolower($_FILES["foto"]["name"]);
Con questa:
PHP:
        $nomefile = $_SESSION['utente'];
 
Ah allora ti basta rinominare la foto con l'username dell'utente. In modo che venga sovrascritta.
Modifica questa riga:
PHP:
        $nomefile = strtolower($_FILES["foto"]["name"]);
Con questa:
PHP:
        $nomefile = $_SESSION['utente'];

Funziona, però nella tabella non mette l'estensione del file
 
Preleva l'estensione dal nome con un explode() e aggiungilo all'username.
 
Preleva l'estensione dal nome con un explode() e aggiungilo all'username.

ciao
oppure
PHP:
<?php
$nomefile = $_SESSION['utente'].".".pathinfo($_FILES["foto"]["name"], PATHINFO_EXTENSION);; 
?>

Ok con il metodo di borgo italia funziona benissimo =)
Ora, tornando alla funzione unlink, ho fatto una pagina cancella-foto.php con questo script:

PHP:
mysql_query ("UPDATE utenti SET foto='' WHERE username = '" . $_SESSION['utente'] . "'")

or die ("Eliminazione immagine fallita.");

unlink("uploadimg/$nomefile")

or die ("Eliminazione immagine fallita.");

}

Però non funziona, mi dà questo errore:

Warning: unlink(uploadimg/) [function.unlink]: Permission denied in D:\Inetpub\webs\ilmiositoit\cancella-foto.php on line 185
Eliminazione immagine fallita.

Dove sbaglio ?
 
Devi dare tutti i permessi a quella cartella...e poi è quello tutto il codice della pagina?
Se si, che valore dai alla variabile $nomefile?
Posta il codice.
 
Devi dare tutti i permessi a quella cartella...e poi è quello tutto il codice della pagina?
Se si, che valore dai alla variabile $nomefile?
Posta il codice.

Si la cartella ha tutti i permessi.

Hai ragione, per la fretta avevo dimenticato la variabile, però come la devo scrivere ?

Come ho fatto in update-foto ?

PHP:
$nomefile = $_SESSION['utente'].".".pathinfo($_FILES["foto"]["name"], PATHINFO_EXTENSION);;
 
Prova con:
PHP:
chmod("/uploadimg/$nomefile", 0777);
unlink("uploadimg/$nomefile");
 
Prova con:
PHP:
chmod("/uploadimg/$nomefile", 0777);
unlink("uploadimg/$nomefile");

Con questo script mi dà questi errori:

PHP:
Warning: chmod() [function.chmod]: No such file or directory in D:\Inetpub\webs\sitowebit\cancella-foto.php on line 186

Warning: unlink(uploadimg/) [function.unlink]: Permission denied in D:\Inetpub\webs\sitowebit\cancella-foto.php on line 187
Eliminazione immagine fallita.

Le linee 186 e 187 sono queste

PHP:
chmod("/uploadimg/$nomefile", 0777);
unlink("uploadimg/$nomefile")
 
chmod("/uploadimg/$nomefile", 0777);
unlink("uploadimg/$nomefile")
sono due percorsi diversi forse cosi
PHP:
chmod("uploadimg/$nomefile", 0777);
unlink("uploadimg/$nomefile")
 
sono due percorsi diversi forse cosi
PHP:
chmod("uploadimg/$nomefile", 0777);
unlink("uploadimg/$nomefile")

Niente, mi dice così

Warning: unlink(uploadimg/) [function.unlink]: Permission denied in D:\Inetpub\webs\sitowebit\cancella-foto.php on line 120

E la riga 120 è

unlink("uploadimg/$foto");

Uff come posso fare ??
(Scusate se rispondo così tardi ma ho avuto molto da fare)
 

Discussioni simili