[RISOLTO]Modifica Profilo Utente PHP

Nickname

Utente Attivo
18 Set 2013
122
0
0
Salve a tutti, ormai sto intasando il forum con le mie richieste :p
Ultimamente ho creato un sito con un sistema di registrazione e login
Fin qui tutto ok, ora quello che mi chiedo è come posso fare in modo che gli utenti possano modificare il proprio profilo ?
Premetto che ho cercato molto su google e sul forum ma non ho trovato ancora nessuna soluzione e che non sono molto pratico con il PHP.

Come posso fare ?
Grazie a tutti ;)
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, immagino che tu abbia l'id dell'utente in sessione
Crei una pagina ovviamente sotto login, fai un aquery per estrarre i dati dell'utente che vuoi far modificare e li mostri dentro degli input text all'interno di un form che richiamerà la stessa pagina (o un altra ) che elaborerà i dati e farà l'update sulla tabella
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Il tutto sta nella query di UPDATE grazie alla quale vai a sovrascrivere i dati precedenti.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non sapendo cosa hai nella sessione ne i nomi delle variabili campi e cosa vuoi cosa l'utente possa modificare faccio solo uno schema di come potresti fare.
poi ho messo le vecchie query mysql (faccio prima a scriverle) ma tu passa a mysqli o alla classe pdo.
PHP:
<?php
session_start();
if(!isset($_SESSION['utente'])){//questo DOVREBBE arrivare dalla pag di log, se log ok
	header("location: index.php");
	exit();
}
//dati di connessione.....
$query="SELECT * FROM utenti WHERE utente='".$_SESSION['utente']."'";
$ris=mysql_query($query);
$riga=mysql_fetch_array($ris);
$nome=$riga['nome'];
$cognome=$riga['cognome'];
if(isset($_POST['modifica'])){
	//non metto gli indispensabili controlli
	$n=$_POST['nome'];
	$c=$_POST['cognome'];
	$query="UPDATE utenti SET nome='$n', cognome='$c' WHERE utente='".$_SESSION['utente']."'";
	$ris=mysql_query($query);
	header("location: dove_vuoi.php");
	exit();
}
?>
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  nome 
  <input name="nome" type="text" id="nome" value="<?php echo $nome; ?>">
  <br>
  cognome 
  <input name="cognome" type="text" id="cognome" value="<?php echo $cognome; ?>">
  <br>
  <input name="modifica" type="submit" id="modifica" value="modifica">
</form>
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
ciao
non sapendo cosa hai nella sessione ne i nomi delle variabili campi e cosa vuoi cosa l'utente possa modificare faccio solo uno schema di come potresti fare.
poi ho messo le vecchie query mysql (faccio prima a scriverle) ma tu passa a mysqli o alla classe pdo.
PHP:
<?php
session_start();
if(!isset($_SESSION['utente'])){//questo DOVREBBE arrivare dalla pag di log, se log ok
	header("location: index.php");
	exit();
}
//dati di connessione.....
$query="SELECT * FROM utenti WHERE utente='".$_SESSION['utente']."'";
$ris=mysql_query($query);
$riga=mysql_fetch_array($ris);
$nome=$riga['nome'];
$cognome=$riga['cognome'];
if(isset($_POST['modifica'])){
	//non metto gli indispensabili controlli
	$n=$_POST['nome'];
	$c=$_POST['cognome'];
	$query="UPDATE utenti SET nome='$n', cognome='$c' WHERE utente='".$_SESSION['utente']."'";
	$ris=mysql_query($query);
	header("location: dove_vuoi.php");
	exit();
}
?>
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  nome 
  <input name="nome" type="text" id="nome" value="<?php echo $nome; ?>">
  <br>
  cognome 
  <input name="cognome" type="text" id="cognome" value="<?php echo $cognome; ?>">
  <br>
  <input name="modifica" type="submit" id="modifica" value="modifica">
</form>


Io ho provato in questo modo, solo che mi sembra troppo semplice.
PHP:
<?php
if (isset ($_POST['submit'])){
	$nome = $_POST['nome'];
	$descrizione = $_POST['descrizione'];
	
	if ($nome&&$descrizione){
		
	mysql_connect ("localhost", "root", "") or die ("Impossibile......."); 
	mysql_select_db("db_prova") or die ("Impossibile.....");
	
	$exists = mysql_query ("SELECT * FROM utenti WHERE nome='$nome'") or die ("Impossibile..........");
	if (mysql_num_rows($exists) != 0){
		
		mysql_query ("UPDATE utenti SET descrizione='$descrizione' WHERE nome='$nome'") or die ("Caricamento non.....");
		echo "Tutto ok";
		
	}else echo "Utente non esiste";
	
	
} else echo "Inserisci tutti e due...";
}
?>
<html>
<head>
</head>
<body>
<form action="update.php" method="POST">
<table>
<tr><td>Nome:</td><td><input type="text" id="nome" name="nome"></td></tr>
<tr><td>Descrizione:</td><td><textarea id="descrizione" name="descrizione"></textarea></td></tr>
<tr><td>Nome:</td><td><input type="submit" id="submit" value="Inserisci" name="submit"></td></tr>
</table>
</form>

</body>
</html>

Premetto che funziona tutto benissimo, però vorrei capire cosa inserire per rendere il tutto più sicuro, grazie mille a tutti comunque per le risposte, questo forum è fantastico :)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
per avere un po' di sicurezza modifica la ricezione dei post
PHP:
<?php
//.....
$nome = addslashes(trim($_POST['nome']));
$descrizione = addslashes(trim($_POST['descrizione'])); 
//.....
?>
comunque non preuccuparti: "la semplicità di uno script non vuol dire malfunzionamento"
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
ciao
per avere un po' di sicurezza modifica la ricezione dei post
PHP:
<?php
//.....
$nome = addslashes(trim($_POST['nome']));
$descrizione = addslashes(trim($_POST['descrizione'])); 
//.....
?>
comunque non preuccuparti: "la semplicità di uno script non vuol dire malfunzionamento"

Ok grazie mille :)

Solo una cosa, in questo script praticamente uno deve inserire il nome dell'utente di cui vuole cambiare la descrizione, lo script verifica che quell'utente esista e poi esegue la modifica della descrizione.
Se io volessi semplicemente modificare solo la descrizione ? Senza inserire il nome.
Perché ovviamente se un utente va a modificare il proprio profilo (ovviamente dopo aver fatto il login) non deve andare ad inserire il proprio nome.
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
In teoria non c'è bisogno perchè il nome è già contenuto nel value dell'input text quindi anche se non lo inserisce viene comunque inviato.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
Se io volessi semplicemente modificare solo la descrizione ? Senza inserire il nome.
questo dipende da come hai strutturato il log.
è evidente che o il nome lo inserisci o quando l'utente si logga questo passi in sessione.
devi avere sempre qualcosa che indichi quale record deve essere modificato
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
ciao

questo dipende da come hai strutturato il log.
è evidente che o il nome lo inserisci o quando l'utente si logga questo passi in sessione.
devi avere sempre qualcosa che indichi quale record deve essere modificato

Bè la pagina può essere visualizzata solo dopo che un utente fa il login, poi metto così (ho modificato il codice che ho postato prima e l'ho messo per modificare il cognome):

PHP:
<?php if(isset($_SESSION['utente'])) {

echo "<b><i>Modifica il cognome:</i></b>"; 
echo "
<form action='update.php' method='POST'>
<table>
<tr><td>Cognome:</td><td><input type='text' id='cognome' name='cognome'></td></tr>
<input type='submit' id='submit' value='Inserisci' name='submit'></td></tr>
</table>
</form>
";
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
puoi fare così (a parte che mi sembra di averti gia postato qualcosa di simile)

PHP:
<?php
session_start();
if(!isset($_SESSION['utente'])){//l'utente NON è loggato
	header("location:alla_pagina_che_vuoi.php");//reindirizzi
	exit();
}
if(isset($_POST['submit'])){
	//dati di connessione
	if(trim($_POST['cognome']==""){
		echo "<h1>non pu&ograve; essere vuoto</h1>";
		//e rimandi al form
		echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	}else{
		$cognome=addslashes($_POST['cognome']);
		query="UPDATE utenti SET cognome='$cognome' WHERE utente='".$_SESSION['utente']."'";
    	$ris=mysql_query($query);
    	header("location: alla_pagina_che_vuoi.php");
    	exit();
	}
}else{
	echo "<b><i>Modifica il cognome:</i></b>"; 
	echo "
	<form action='update.php' method='POST'>
	<table>
	<tr><td>Cognome:</td><td><input type='text' id='cognome' name='cognome'></td></tr>
	<tr><td><input type='submit' id='submit' value='Inserisci' name='submit'></td></tr>
	</table>
	</form>
	";
}
//...
?>
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
ciao
puoi fare così (a parte che mi sembra di averti gia postato qualcosa di simile)

PHP:
<?php
session_start();
if(!isset($_SESSION['utente'])){//l'utente NON è loggato
	header("location:alla_pagina_che_vuoi.php");//reindirizzi
	exit();
}
if(isset($_POST['submit'])){
	//dati di connessione
	if(trim($_POST['cognome']==""){
		echo "<h1>non pu&ograve; essere vuoto</h1>";
		//e rimandi al form
		echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	}else{
		$cognome=addslashes($_POST['cognome']);
		query="UPDATE utenti SET cognome='$cognome' WHERE utente='".$_SESSION['utente']."'";
    	$ris=mysql_query($query);
    	header("location: alla_pagina_che_vuoi.php");
    	exit();
	}
}else{
	echo "<b><i>Modifica il cognome:</i></b>"; 
	echo "
	<form action='update.php' method='POST'>
	<table>
	<tr><td>Cognome:</td><td><input type='text' id='cognome' name='cognome'></td></tr>
	<tr><td><input type='submit' id='submit' value='Inserisci' name='submit'></td></tr>
	</table>
	</form>
	";
}
//...
?>

C'erano alcuni errori che ho comunque corretto, ma non va, stesso problema, dice che l'utente non esiste :( uff
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa una cosa, ma dove ti dice che l'utente non esiste?
nello script che ti ho postato non c'è nulla che dica una cosa del genere.
sei sicuro che lo script di log sia ok?
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
ciao
scusa una cosa, ma dove ti dice che l'utente non esiste?
nello script che ti ho postato non c'è nulla che dica una cosa del genere.
sei sicuro che lo script di log sia ok?

Nella pagina update.php

PHP:
<?php
if(isset($_SESSION['utente'])){
	$cognome = addslashes(trim($_POST['cognome']));
	
	if ($cognome){
		
	$exists = mysql_query ("SELECT * FROM utenti WHERE username = '$username' AND password = '$password_cript'") or die ("Impossibile completare la richiesta");
	if (mysql_num_rows($exists) != 0){
		
		mysql_query ("UPDATE utenti SET cognome='$cognome' WHERE username = '$username' AND password = '$password_cript'") or die ("Caricamento dei dati nel database fallito.");
		echo "Tutto ok";
		
	}else echo "L'utente non esiste";
	
	
} else echo "Inserisci tutti i campi";
}
?>

Si lo script di log va bene perché per tutto il resto funziona.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se questo script è parziale è difficile capire dove è l'errore, se non è parziale ma completo mancano diverse cose e ci sono delle cose in piu
PHP:
<?php
if(isset($_SESSION['utente'])){
	$cognome = addslashes(trim($_POST['cognome']));
	if ($cognome){ 
		$exists = mysql_query ("SELECT * FROM utenti WHERE username = '$username' AND password = '$password_cript'") or die ("Impossibile completare la richiesta");
		if (mysql_num_rows($exists) != 0){
			mysql_query ("UPDATE utenti SET cognome='$cognome' WHERE username = '$username' AND password = '$password_cript'") or die ("Caricamento dei dati nel database fallito.");
			echo "Tutto ok";
		}else echo "L'utente non esiste";
} else 
	echo "Inserisci tutti i campi";
}
?>
se è completo:
1) non vedo il session_start
2) da dove saltano fuori le variabili $username e $password_cript?
3) se hai fatto il log (come dovrebbe) a che ti serve riverificare l'utente?
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
ciao
se questo script è parziale è difficile capire dove è l'errore, se non è parziale ma completo mancano diverse cose e ci sono delle cose in piu
PHP:
<?php
if(isset($_SESSION['utente'])){
	$cognome = addslashes(trim($_POST['cognome']));
	if ($cognome){ 
		$exists = mysql_query ("SELECT * FROM utenti WHERE username = '$username' AND password = '$password_cript'") or die ("Impossibile completare la richiesta");
		if (mysql_num_rows($exists) != 0){
			mysql_query ("UPDATE utenti SET cognome='$cognome' WHERE username = '$username' AND password = '$password_cript'") or die ("Caricamento dei dati nel database fallito.");
			echo "Tutto ok";
		}else echo "L'utente non esiste";
} else 
	echo "Inserisci tutti i campi";
}
?>
se è completo:
1) non vedo il session_start
2) da dove saltano fuori le variabili $username e $password_cript?
3) se hai fatto il log (come dovrebbe) a che ti serve riverificare l'utente?


Ciao, no lo script è parziale, il session_start, la verifica utente e le variabili le ho messe prima, il resto del codice lo puoi trovare qui:
http://forum.mrwebmaster.it/php/36322-account-utente-php.html
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
verifica per prima cosa di avere aperto/chiuso correttamente le graffe dei vari if/else, se non ne hai saltata una col copy/paste mi sembra che ne manchi una.
poi dividi la query di select e metti un var dump per verificare se viene scritta come dovrebbe

PHP:
<?php
//....
	$q="SELECT * FROM utenti WHERE username = '$username' AND password = '$password_cript'";
	var_dump($q);
	mysql_query($q);
//....
?>
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
ciao
verifica per prima cosa di avere aperto/chiuso correttamente le graffe dei vari if/else, se non ne hai saltata una col copy/paste mi sembra che ne manchi una.
poi dividi la query di select e metti un var dump per verificare se viene scritta come dovrebbe

PHP:
<?php
//....
	$q="SELECT * FROM utenti WHERE username = '$username' AND password = '$password_cript'";
	var_dump($q);
	mysql_query($q);
//....
?>

Aaallora, scusami se ho tardato a rispondere ma ho avuto altri problemi :D
Ho "risolto" la cosa facendo in modo che l'utente possa modificare tutti i suoi dati e che alla fine come conferma dovesse immettere la propria password.

Ora però ho un'altro problema relativo sempre a questo:

Come posso fare in modo che l'utente possa modificare anche la propria immagine del profilo?
Lo script per la modifica è quello che ho postato precedentemente, leggermente modificato.
 
Discussioni simili
Autore Titolo Forum Risposte Data
A [PHP] [RISOLTO] Modifica record db da form PHP 11
F [Risolto] Form di modifica record non riconosce <br> db access Classic ASP 3
N [RISOLTO]Utente Loggato, Modifica immagine personale in PHP PHP 9
T [risolto] aiutino modifica form email HTML e CSS 7
L (risolto) MySQL 0
B getElementById su piu id(Risolto) Javascript 7
L Esercitarsi con Js [RISOLTO] Javascript 4
C [RISOLTO]Inserimento variabile php in input html PHP 20
L risolto visualizzazione e ordinamento dati PHP 1
moustache [RISOLTO] SQL PHP IIS PHP 8
Sergio Unia Ricezione email con destinatari multipli [Risolto] PHP 2
L update tabelle in php mysql [risolto] PHP 6
M Semplice visualizzatore di immagini [risolto con plugin wp] PHP 7
L [RISOLTO] Stampa a video risultato count in html PHP 13
L [RISOLTO] Eliminare una discussione creata PHP 3
tomorc [HTML] Problema con scroll bar (risolto) HTML e CSS 0
A [PHP] Problema query insert [RISOLTO] PHP 14
B [PHP] recuperare IP dei server in load balancing [RISOLTO] PHP 3
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
S [RISOLTO] aggiorna tabella da select option asp classic Classic ASP 7
elpirata [RISOLTO][Javascript] Datapicker e autocompletamento campo input Javascript 2
elpirata [RISOLTO][Mysql] Problema insert valori apostrofati MySQL 1
elpirata [RISOLTO][Mysql] Contare le occorrenze in un campo tipo varchar MySQL 2
G [MS Access] Gestione biglietti [RISOLTO] MS Access 2
G [MS Access] Casella combinata & Query [RISOLTO] MS Access 4
G [MS Access] Query mese corrente con conteggio [RISOLTO] MS Access 2
M [RISOLTO]Windows media player non mi funziona più su win 10 pro 64 bit Windows e Software 2
C [RISOLTO][PHP] Errore di sintassi PHP 8
IT9-Gpp [RISOLTO] Leggere variabile restituita da success Ajax 3
Kolop [RISOLTO][PHP] Problema Pagination PHP 2
C [RISOLTO][PHP] Funzione ONclick PHP 14
C [RISOLTO][PHP] Conteggio righe di una tabella PHP 4
N [PHP] Utilizzo variabili di sessione [Risolto] PHP 13
Tommy03 [RISOLTO][PHP] Webserver o devserver? PHP 2
Sergio Unia Recupero dati da una vecchia versione MySql [Risolto] MySQL 4
spider81man [PHP] Problemi cancellazione dato su DB [RISOLTO] PHP 1
A [RISOLTO]Inserimento Immagini da pc a MySql PHP 15
A [PHP] RISOLTO Invio Mail con Tabella PHP 2
felino Risolto - [Wordpress][WooCommerce] PayPal Checkout e campi di fatturazione WordPress 2
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
elpirata [PHP][RISOLTO] Effettuare la somma dei tempi di lavorazione PHP 3
elpirata [PHP] [RISOLTO]Sovrascrivere testo in una tabella PHP 2
A [RISOLTO]Recuperare dati inviati con json tramite php PHP 4
C [RISOLTO][PHP] Passaggio variabili senza refresh di pagina PHP 7
elpirata [PHP][RISOLTO] Errore di tipo Notice: Undefined index - Come risolvere quando si hanno tante var PHP 10
S Problema in PHP per invio file XML - RISOLTO- PHP 8
A [Javascript] [RISOLTO] Doppio "submit", in uno stesso "Form" , che puntino ad "action" diversi Javascript 1
marino51 [Risolto]videochat di messenger ha smesso di funzionare sul telefonino Smartphone e tablet 1
A [Javascript] [HTML] RISOLTO...Allungare un box all'apertura della pagina No Mouse over Javascript 9
ken_korn [Javascript][Risolto] browser.tab.Tabs.favIconUrl non funziona Javascript 5

Discussioni simili