[RISOLTO]Utente Loggato, Modifica immagine personale in PHP

Nickname

Utente Attivo
18 Set 2013
122
0
0
Salve a tutti.
Ultimamente ho creato un sito con un sistema di registrazione e login.
Ho fatto in modo che gli utenti durante la registrazione possano inserire una propria immagine personale e tutte le immagini finiscono in una cartella chiamata uploadimg e ovviamente ho fatto in modo che non si possano caricare immagini con lo stesso nome.

Ora sto facendo la parte relativa alla modifica del profilo.
Ho fatto tutto tranne la parte che permette di cambiare l'immagine, come posso fare per fare in modo che l'utente carichi una nuova foto sostituendo la precedente ?

È molto urgente, grazie mille a tutti per l'aiuto :)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
per sostituire l'immagine devi caricarla con lo stesso nome con cui l'utente l'ha caricata la prima volta.
hai salvato in qualche campo il nome della foto?
oppure la prima volta che l'utente l'ha caricata l'hai salvata es come suo_username.jpg o suo_id.jpg?
l'ideale sarebbe che avessi salvato anche il nome dell'immagine perche se è salvato comunque prima la cancelli poi la carichi e la salvi/uppi di nuovo.
per caricarla di nuovo devi comunque fare nello stesso modo in cui l'hai caricata la prima volta, basta che dove hai il form di modifica del nome tu aggiunga il campo file
comunque ti dico che sarebbe stato meglio salvare in tabella il nome perche es. se l'utente pippo ha caricato
pippo.jpg
e la vuole modificare caricando una png il nome diventa
pippo.png
e quindi non vai a sovrascrivere l'immagine
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
ciao
per sostituire l'immagine devi caricarla con lo stesso nome con cui l'utente l'ha caricata la prima volta.
hai salvato in qualche campo il nome della foto?
oppure la prima volta che l'utente l'ha caricata l'hai salvata es come suo_username.jpg o suo_id.jpg?
l'ideale sarebbe che avessi salvato anche il nome dell'immagine perche se è salvato comunque prima la cancelli poi la carichi e la salvi/uppi di nuovo.
per caricarla di nuovo devi comunque fare nello stesso modo in cui l'hai caricata la prima volta, basta che dove hai il form di modifica del nome tu aggiunga il campo file
comunque ti dico che sarebbe stato meglio salvare in tabella il nome perche es. se l'utente pippo ha caricato
pippo.jpg
e la vuole modificare caricando una png il nome diventa
pippo.png
e quindi non vai a sovrascrivere l'immagine
Grazie per aver risposto, allora:
L'immagine viene semplicemente salvata con il nome del file, ad esempio luca.jpg
Il problema del formato non c'è per ora perché permetto di caricare solo immagini jpg.
Questo è lo script che uso per permettere all'utente di fare l'upload dell'immagine alla sua registrazione

PHP:
if (isset($_FILES['foto']) && !empty($_FILES['foto']['name'])) {
    if ($_FILES['foto']['type'] != "image/jpeg")
        die("Il formato non è supportato, inserire file .jpeg, .jpg.");
    elseif (file_exists('uploadimg/' . $_FILES['foto']['name']))
        die("File già presente nel sito, rinominare il file.");
    elseif ($_FILES['foto']['size'] > 2097152)
        die("Il file non deve superare 2 MB");
    elseif (($width > 200) || ($height > 200))
        die("Le dimensioni dell'immagine non devono superare 200 x 200 pixel.");

    move_uploaded_file($_FILES['foto']['tmp_name'], 'uploadimg/' . $_FILES['foto']['name']);
}
Vorrei sapere una cosa inoltre, come posso fare in modo che si possano caricare anche altri formati ?
E un'altra cosa, la parte dove specifico la grandezza in pixel funziona? Perché a volte me la prende nonostante sia più grande, altre volte invece no.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
ecco uno schema per far caricare un formato diverso e per verificare il tipo di formato ammesso
PHP:
<?php
//ricavi il nome del file es pinco.jpg
//ti conviene sempre avere i nomi tutti minuscoli
$file=strtolower(pathinfo($_FILES['foto']['name'], PATHINFO_BASENAME));
//ricavi l'estenzione del file che per pinco.jpg è jpg
//poi ti servirà anche per la verifica
$estensione=strtolower(pathinfo($_FILES['foto']['name'], PATHINFO_EXTENSION));
//ricavi il nome
$nome=str_replace($estensione,"",$file);//diventa pinco.
$path="uploadimg/";//cartella dove hai le immagini
//cerchi se esiste un file chiamato pinco.jpg o pinco.png o pinco.gif
$trova=glob($path.$nome.'*');
//prima di fare altre operazioni ti conviene verificare se il nuovo file è ammesso
$tipo=array('jpg', 'gif','png');
if(in_array($estensione,$tipo)){
	//consentito
	//verifichi che sia stato trovato un file pinco.jpg o pinco.png o pinco.gif
	if(is_array($trova)){
		//trovato quindi lo elimini
		unlink($path.$tipo[0]);
	}
	//quindi carichi il file nuovo
	move_uploaded_file($_FILES['foto']['tmp_name'], $path . $file); 
}else{
	//avvisi che il tipo non è ammesso e rimandi dove ti pare
}
?>
certo se tu avessi messo il nome dell'immagine in tabella, forse, sarebbe stato più semplice

poi perche alle volte il size funzi e altre no non ti so dire
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
ciao
ecco uno schema per far caricare un formato diverso e per verificare il tipo di formato ammesso
PHP:
<?php
//ricavi il nome del file es pinco.jpg
//ti conviene sempre avere i nomi tutti minuscoli
$file=strtolower(pathinfo($_FILES['foto']['name'], PATHINFO_BASENAME));
//ricavi l'estenzione del file che per pinco.jpg è jpg
//poi ti servirà anche per la verifica
$estensione=strtolower(pathinfo($_FILES['foto']['name'], PATHINFO_EXTENSION));
//ricavi il nome
$nome=str_replace($estensione,"",$file);//diventa pinco.
$path="uploadimg/";//cartella dove hai le immagini
//cerchi se esiste un file chiamato pinco.jpg o pinco.png o pinco.gif
$trova=glob($path.$nome.'*');
//prima di fare altre operazioni ti conviene verificare se il nuovo file è ammesso
$tipo=array('jpg', 'gif','png');
if(in_array($estensione,$tipo)){
	//consentito
	//verifichi che sia stato trovato un file pinco.jpg o pinco.png o pinco.gif
	if(is_array($trova)){
		//trovato quindi lo elimini
		unlink($path.$tipo[0]);
	}
	//quindi carichi il file nuovo
	move_uploaded_file($_FILES['foto']['tmp_name'], $path . $file); 
}else{
	//avvisi che il tipo non è ammesso e rimandi dove ti pare
}
?>
certo se tu avessi messo il nome dell'immagine in tabella, forse, sarebbe stato più semplice

poi perche alle volte il size funzi e altre no non ti so dire
Grazie mille, se invece volessi semplicemente modificare il mio script (senza scriverne uno diverso come il tuo) in modo che permetta di caricare più formati diversi ? Si può? Giusto per imparare cose nuove.

Per mettere il nome dell'immagine nella tabella cosa intendi di preciso?

E quindi poi come faccio per fare modificare l'immagine all'utente?

(Scusami se faccio tutte queste domande ma ne so poco di php :) )
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Grazie mille, se invece volessi semplicemente modificare il mio script (senza scriverne uno diverso come il tuo) in modo che permetta di caricare più formati diversi ? Si può?
Queste due righe di codice ti permettono già di inserire quei 3 diversi tipi di immagine.
PHP:
$tipo=array('jpg', 'gif','png');
if(in_array($estensione,$tipo)){