[RISOLTO]Account Utente PHP

Nickname

Utente Attivo
18 Set 2013
122
0
0
Salve a tutti, sono ancora qui con un altro problema in php XD
Praticamente ho creato un sistema di registrazione e login degli utenti.
Ovviamente ora ho creato anche una pagina con il proprio account.
Il problema è che, facendo il login per la prima volta, i dati nell'account non vengono visualizzati, se invece si esce e si rientra vengono visualizzati correttamente.
Non capisco il perché di questo.
Come detto in altre discussioni sono una capra in php XD, quindi non fate caso ai vari errori e imprecisioni nel codice:


Questo è il login con il logout:

PHP:
<?php if(isset($_SESSION['utente']))
{					
echo "Ciao ".$_SESSION['utente']." | <a href='account.php?azione=logout' class='logout'>Esci</a>";

} else {
					
echo "<a href='account.php?azione=login' class='login'>Accedi</a>";
}
 ?>

<?php
		
$p = $_GET['azione'];

if($p == "login"){
if(!isset($_POST['invia'])){ ?>
<br />
<form method="post" action="#" id="formlogin">
					
<label for="username">Nome Utente</label><br />
<input type="text" name="username" id="username" /><br><br>
<label for="password">Password</label><br />
<input type="password" name="password" id="password" /><br /><br>
<input type="submit" name="invia" id="buttonlogin" value="Entra" />

</form>

Questo è il recupero dei dati ecc.

PHP:
<?php
} else {
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
  
if($username == "" || $password == ""){
					
echo "Attenzione, devi inserire sia il Nome utente che la Password.";
					
} else {
	
$password_cript = md5($password);
					
mysql_query("SELECT * FROM utenti WHERE id  = ".$_SESSION['id']);
		
$recuperadati = mysql_query("SELECT * FROM utenti WHERE username = '$username' AND password = '$password_cript'");
						
$verificadati = mysql_num_rows($recuperadati);
						
if($verificadati == 1){
						
$sessione = mysql_fetch_array($recuperadati);
$_SESSION['id'] = $sessione['id'];
$_SESSION['utente'] = $sessione['username'];
$_SESSION['email2'] = $sessione['email'];
$_SESSION['nome2'] = $sessione['nome'];
$_SESSION['cognome2'] = $sessione['cognome'];
echo "<br><b>Login effettuato con successo.</b>";
header("Refresh: 2; URL= account.php");

} else {
						
echo "Utente o password sbagliati.";
						
}
}
}

} elseif ($p == "logout"){
			
session_destroy();
echo "<br>Logout effettuato con successo!";
header("Refresh: 2; URL= account.php");
}
?>

E infine con questo recupero i dati dal database:

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

echo "<b>Email: </b>"; echo $_SESSION['email2']; echo "<br>";
echo "<b>Nome: </b>"; echo $_SESSION['nome2']; echo "<br>";
echo "<b>Cognome: </b>"; echo $_SESSION['cognome2']; echo "<br>";
?>

Non capisco dove sbaglio.
Grazie mille a tutti per l'aiuto :)
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Non vedo session_start() da nessuna parte
ricordati che deve essere la prima istruzione in una pagina che fa uso selle sessioni
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Devi sempre mettere session_start() quando vuoi usare le sessioni, non è detto che risolvi, inizia così intanto
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
Devi sempre mettere session_start() quando vuoi usare le sessioni, non è detto che risolvi, inizia così intanto

Mh ho provato facendo questo così

PHP:
 <?php if(isset($_SESSION['utente'])) {
session_start();
echo "<b>Email: </b>"; echo $_SESSION['email2']; echo "<br>";
echo "<b>Nome: </b>"; echo $_SESSION['nome2']; echo "<br>";
echo "<b>Cognome: </b>"; echo $_SESSION['cognome2']; echo "<br>";
?>

Ma niente, ma poi il fatto strano è che facendo il login per la prima volta da questo problema, se invece uno esce e rifà il login si visualizza tutto correttamente, è molto strano
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
session_start(); deve stare prima di ogni altra istruzione (a inizio pagina )
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
session_start(); deve stare prima di ogni altra istruzione (a inizio pagina )

Ah si dimenticavo, quello l'ho messo
PHP:
<?php

	include 'config.php';
	connect();
	session_start();
	
?>
All'inizio di ogni pagina
Però il problema c'è lo stesso.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
mysql_query("SELECT * FROM utenti WHERE id = " . $_SESSION['id']);
dove l'hai messa non ha motivo di esistere
la pagina account.php quale sarebbe?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
nel senso posta l'intero codice della pagina account.php, deve essere li il problema
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
nel senso posta l'intero codice della pagina account.php, deve essere li il problema

Ah ok, eccolo :

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Profilo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<?php

	include 'config.php';
	connect();
	session_start();
	
?>

</head>
<body>
<div id="login">
<?php if(isset($_SESSION['utente']))
{					
echo "Ciao ".$_SESSION['nome2']." | <a href='account.php?azione=logout' class='logout'>Esci</a>";

} else {
					
echo "<a href='account.php?azione=login' class='login'><div id='scrittalogin'>Accedi</div></a>";
}
 ?>

<?php
		
$p = $_GET['azione'];

if($p == "login"){
if(!isset($_POST['invia'])){ ?>
<br />
<form method="post" action="#" id="formlogin">
					
<label for="username">Nome utente</label><br />
<input type="text" name="username" id="username" /><br><br>
<label for="password">Password</label><br />
<input type="password" name="password" id="password" /><br /><br>
<input type="submit" name="invia" id="buttonlogin" value="Entra" />

</form>

		
<?php

} else {
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
  
					
if($username == "" || $password == ""){
					
echo "<br>Devi inserire sia il Nome utente che la Password.</span>";
					
} else {
	
$password_cript = md5($password);
					
mysql_query("SELECT * FROM utenti WHERE id  = ".$_SESSION['id']);
		
$recuperadati = mysql_query("SELECT * FROM utenti WHERE username = '$username' AND password = '$password_cript'");
						
$verificadati = mysql_num_rows($recuperadati);
						
if($verificadati == 1){
						
$sessione = mysql_fetch_array($recuperadati);
$_SESSION['id'] = $sessione['id'];
$_SESSION['utente'] = $sessione['username'];
$_SESSION['email2'] = $sessione['email'];

echo "<br><b>Login effettuato con successo.</b>";
header("Refresh: 2; URL= account.php");

} else {
						
echo "<br>Utente o password sbagliati.";
						
}
}
}

} elseif ($p == "logout"){
			
session_destroy();
echo "<br>Logout effettuato con successo!";
header("Refresh: 2; URL= account.php");
}
?>

</div>

<div id="dati">

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

echo "<b>username: </b>"; echo $_SESSION['utente']; echo "<br>";
echo "<b>Email: </b>"; echo $_SESSION['email2']; echo "<br>";
} ?>

</div>


</body>
</html>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
mmm.. mi sembra a posto
posta anche il login che ti porta a questa pagina
edit:
lascia perdere questa mia ultima risposta : stavo leggendo un altro file
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
l'ho provato e a parte diversi warning funziona
qunado scrivi
PHP:
echo "Ciao " . $_SESSION['nome2'] . "
non stampa perche nome2 non è settato, dovresti scrivere
PHP:
echo "Ciao " . $_SESSION['utente'] . "
a parte questo il problema che hai descritto non l'ho notato
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
l'ho provato e a parte diversi warning funziona
qunado scrivi
PHP:
echo "Ciao " . $_SESSION['nome2'] . "
non stampa perche nome2 non è settato, dovresti scrivere
PHP:
echo "Ciao " . $_SESSION['utente'] . "
a parte questo il problema che hai descritto non l'ho notato

No no nome2 l'ho settato ma mi sono dimenticato di metterlo, ma anche se fosse la cosa non cambia, non capisco perché fa così :(
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
per verificare ho messo var_dump($_SESSION); subito dopo session_start() e la sessione viene creata correttamente
pulisci la cache del tuo browser e riprova : a me funziona
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
per verificare ho messo var_dump($_SESSION); subito dopo session_start() e la sessione viene creata correttamente
pulisci la cache del tuo browser e riprova : a me funziona

No niente, avevo già provato, ma uguale, non capisco proprio perché faccia così, gli unici dati che mi si vedono la prima volta sono l'username e il nome.
Il resto tutto vuoto (nel codice che ho postato c'è poca roba ma in quello originale c'è nome,cognome,indirizzo ecc.)
Uff help :(
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
Ho risolto, era un problema stupidissimo.
Praticamente se facevo il login dalla pagina account.php i dati venivano tutti restituti correttamente.
Se lo facevo ad esempio da index.php invece no, semplicemente mi ero dimenticato, nella pagina index (dove facevo il login), di recuperare i dati dal database.
Quindi ho risolto mettendo questo anche in index:

PHP:
$_SESSION['id'] = $sessione['id'];
$_SESSION['utente'] = $sessione['username'];
$_SESSION['email2'] = $sessione['email'];

Così tutto funziona bene, scusate per la scocciatura :D
Spero sia utile a qualcuno
 
Discussioni simili
Autore Titolo Forum Risposte Data
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
A [RISOLTO] HighChart e PHP PHP 4
A [RISOLTO] PHP Selezionare tutti i file con stessa estensione PHP 2
A [RISOLTO] Table elaborata da codice PHP con dati da DB non visualizzata in IFRAME PHP 15
T [Photoshop] Problema creazione pennello personalizzato [RISOLTO] Photoshop 3

Discussioni simili