[RISOLTO]Modifica Profilo Utente PHP

  • Creatore Discussione Creatore Discussione Nickname
  • Data di inizio Data di inizio
Vuoi che l'immagine sia sovrascritta oppure la vuoi salvare cambiando quella del profilo?
Nel primo caso basta creare una cartella immagini dove metti tutte le immagini degli utenti chiamandole con l'id oppure con il nickname se è univoco e non modificabile, allora basta permettergli di fare l'upload caricando una nuova immagine con lo stesso nome che sovrascriverà quella precedente.
Nel secondo caso nella cartella immagini puoi creare una cartella per ogni utente (nominandole con il suo id o con il suo nickname) e quando fa l'upload nomini le immagini con un id che vai ad incrementare in modo che non si sovrascrivano.

Ci sono più soluzioni ovviamente ma quella che mi sembra più semplice e più chiara è questa.
 
Vuoi che l'immagine sia sovrascritta oppure la vuoi salvare cambiando quella del profilo?
Nel primo caso basta creare una cartella immagini dove metti tutte le immagini degli utenti chiamandole con l'id oppure con il nickname se è univoco e non modificabile, allora basta permettergli di fare l'upload caricando una nuova immagine con lo stesso nome che sovrascriverà quella precedente.
Nel secondo caso nella cartella immagini puoi creare una cartella per ogni utente (nominandole con il suo id o con il suo nickname) e quando fa l'upload nomini le immagini con un id che vai ad incrementare in modo che non si sovrascrivano.

Ci sono più soluzioni ovviamente ma quella che mi sembra più semplice e più chiara è questa.

Vorrei fare in modo che l'utente possa cambiare la propria immagine, oppure se non è presente, di metterne una nuova.
Quindi in pratica se l'utente ha già l'immagine e la cambia, questa verrà sovrascritta, altrimenti, se l'utente non ne ha già una, verrà caricata normalmente.

Io ho già fatto un form per la registrazione degli utenti, e le immagini vengono caricate tutte in una cartella.
Grazie dell'aiuto :)

Edit: Nella pagina del profilo le richiamo con il nickname che è univoco e non modificabile ;)
 
Se sono tutte nella stessa cartella puoi fare confusione.
Prova a seguire il secondo caso.
 
Io però lascerei perdere le istruzioni mysql_ e userei le improved mysqli_ che in tema di sicurezza sono molto più sicure e inizierei a usare mysqli_stmt_bind_param() proprio per evitare di inserire valori direttamente nelle query. Scusate se faccio il Pierino :D
Inoltre eviterei di cose del tipo
PHP:
"SELECT * FROM utenti WHERE username = '$username' AND password = '$password_cript'"
perché ti esponi ad un caso da manuale di SQL Injection.
Infatti basta inserire nella stringa tramite il form di login (campo password) la seguente frase
' OR '1' = '1
il gioco è fatto.
La queri diventa
PHP:
"SELECT * FROM utenti WHERE username = '$username' AND password = 'OR '1' = '1'"
ora siccome 1 sarà sicuramente uguale a 1 la query funziona sempre e comunque.
Ovvio che il sistema lo trasforma proprio per via dell'escaping, però questa è la SQL Injection più semplice sgamata, ce ne sono altre complesse che superano anche l'escaping.
La cosa migliore è quella di 1) non mandare mai al database la password in chiaro mai verificarla dalla query in quel modo, ma se proprio non se ne può fare a meno almeno codificarla in modo che anche OR 1=1 diventi una banale stringa md5 (meglio sha1)
PHP:
"SELECT * FROM utenti WHERE username = '$username' AND password = SHA1('$password_cript')"
( qui SHA1() è funzione dell'SQL, non quella del PHP ;-) ) in questo modo viene tutto codificato.
Comunque non vale la pena mai fare così, semmai meglio
PHP:
"SELECT * FROM utenti WHERE username = '$username'"
e poi verificare se il campo password è uguale a quanto proviene da form di login, tanto più se username è univoco come dovrebbe essere (non ci sono nel database due nickname uguali) è un passaggio in più nel PHP ma rende la cosa un pelo più gestibile.

fonti: http://it.wikipedia.org/wiki/SQL_injection http://en.wikipedia.org/wiki/SQL_injection http://oldblog.antirez.com/post/33 http://stackoverflow.com/questions/902129/sql-sha1-inside-where/902159#902159
 
ciao
@MarcoGrazia
guarda che l'utente ha chiesto un'altra cosa non una lezione di php.
questo a parte al passaggio a mysqli che gli era già stato suggerito
 
Borgo lo so, ma leggendo il suo codice mi sono detto se potevo migliorarlo dal punto di vista della sicurezza.
Non voglio fare il sapientino, anche perché ho pure scritto almeno una cavolata, solo che mettere online codice insicuro è pericoloso anche per gli altri.
 
Borgo lo so, ma leggendo il suo codice mi sono detto se potevo migliorarlo dal punto di vista della sicurezza.
Non voglio fare il sapientino, anche perché ho pure scritto almeno una cavolata, solo che mettere online codice insicuro è pericoloso anche per gli altri.

Bè ti ringrazio, però ora mi interessa più creare tutto il sistema per fare quello che ho chiesto, poi più in là vedrò per la sicurezza che comunque rimane molto importante :)
 
ciao
scusa, mi sono perso.
comunque sarebbe meglio che tu riproponessi il problema in un nuovo post specificando bene quello che vuoi fare.
es l'utente loggato vuole caricare/modificare un suo avatar
 

Discussioni simili