mantenere sessione login attiva anche in altre pagine

asevenx

Utente Attivo
7 Nov 2009
312
0
16
salve, ho creato questa pagina per il login, il tutto funzionante, ma vorrei mantenere le sessioni attive anche in altre pagine. Cioè vorrei che il nome utente fossero disponibile anche in altre pagine, senza dover rieseguire il login. Grazie

PHP:
<?php
$DB_host = "localhost";
$DB_user = "...";
$DB_password = "";
$DB_name = "...";
$DB_tabella2 = "utenti";

$link = mysql_connect($DB_host, $DB_user, $DB_password);
if (!$link) {
	die ('Non riesco a connettermi: ' . mysql_error());
}

$db_selected = mysql_select_db($DB_name, $link);
if (!$db_selected) {
	die ("Errore nella selezione del database: " . mysql_error());
}

if($_POST) {
	effettua_login();
} else {
	mostra_form();
}

function mostra_form()
{
	// mostro un eventuale messaggio
	if(isset($_GET['msg'])) {
		echo '<div class="titolo">'.htmlentities($_GET['msg']).'</div><br />';
		
		if ($_GET['msg'] == "Login avvenuto con successo"){				

?>
	<form name='commenta' method='post' action='commento.php'>
		<table width="98%" border="0" cellpadding="0" cellspacing="0">
			<tr>
				<td colspan="2" class="partita">Benvenuto <label class="notizia"><?php echo $_SESSION['utente']; ?>!</label></td>
			</tr>
			<tr>
				<td class="cella8"><?php echo $_SESSION['utente']; ?><br /><br />
                <img class="avatar" src="<?php echo $_SESSION['user_avatar']; ?>"/></td>
				<td class="cella4"><textarea name="mex" style="width:380px; height:100px;">Lascia un commento...</textarea></td>
			</tr>
            <tr>
				<td colspan="2" class="cella4">
                	<input type='submit' name='accedi' value='Invia!'><input type='reset' name='cancella' value='Cancella'> 
                </td>
			</tr>
		</table>
	</form>
<?php
		}
		
	}
?>


	<form name='commenta' method='post' action='index.php'>
                                    
		<table width="98%" border="0" cellpadding="0" cellspacing="0">
			<tr>
				<td colspan="3" class="partita">Effettua login per inserire un commento</td>
			</tr>
			<tr>
				<td class="cella4" style="width:75px;">Username: </td>
				<td class="cella4" style="width:150px;"><input type="text" name="nome" style="width:125px;"></td>
				<td class="cella3" rowspan="4">Nuovo utente? <br /><a href="registrati.php" class="cella4">Registrati</a></td>
			</tr>
			<tr>
				<td class="cella4" style="width:75px;">Password: </td>
				<td class="cella4" style="width:150px;"><input type="password" name="password" style="width:125px;">
			</tr>
			<tr>
				<td class="cella3" colspan="2">Dati dimenticati?</td>
			</tr>
			<tr>
				<td colspan="2" class="cella3">
                	<input type='submit' name='accedi' value='Invia!'>
                    <input type='reset' name='cancella' value='Cancella!'> 
                </td>
          	</tr>
		</table>

	</form>

<?
}

function effettua_login()
{
	// recupero il nome e la password inseriti dall'utente
	$nome      = trim($_POST['nome']);
	$password  = trim($_POST['password']);
	// verifico se devo eliminare gli slash inseriti automaticamente da PHP
	if(get_magic_quotes_gpc()) {
		$nome      = stripslashes($nome);
		$password  = stripslashes($password);
	}

		// verifico la presenza dei campi obbligatori
		if(!$nome || !$password) {
			$messaggio = urlencode("Non hai inserito il nome o la password");
			//header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
			echo '<div class="titolo">Non hai inserito il nome o la password</div><br />';
?>		
	<form name='commenta' method='post' action='index.php'>
                                    
		<table width="100%" border="0" cellpadding="0" cellspacing="0">
			<tr>
				<td colspan="3" class="partita">Effettua login per inserire un commento</td>
			</tr>
			<tr>
				<td class="cella4" style="width:75px;">Username: </td>
				<td class="cella4" style="width:150px;"><input type="text" name="nome" style="width:125px;"></td>
				<td class="cella3" rowspan="4">Nuovo utente? <br /><a href="registrati.php" class="cella4">Registrati</a></td>
			</tr>
			<tr>
				<td class="cella4" style="width:75px;">Password: </td>
				<td class="cella4" style="width:150px;"><input type="password" name="password" style="width:125px;">
			</tr>
			<tr>
				<td class="cella3" colspan="2">Dati dimenticati?</td>
			</tr>
			<tr>
				<td colspan="2" class="cella3">
                	<input type='submit' name='accedi' value='Invia!'>
                    <input type='reset' name='cancella' value='Cancella!'> 
                </td>
          	</tr>
		</table>

	</form>		
<?php			
		} else {
	
	// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
	$nome     = mysql_real_escape_string($nome);
	$password = mysql_real_escape_string($password);	

	// preparo ed invio la query
	$query = "SELECT * FROM utenti WHERE nome = '$nome' AND pass = MD5('$password')";
	$result = mysql_query($query);
			// controllo l'esito
			if (!$result) {
				die("Errore nella query $query: " . mysql_error());
			}

			$record = mysql_fetch_array($result);

			if(!$record) {
				//$messaggio = urlencode('Nome utente o password errati');
				//header("location: $_SERVER[PHP_SELF]#msg=$messaggio");
				echo '<div class="titolo">Nome utente o password errati</div><br />';
?>		
	<form name='commenta' method='post' action='index.php'>
                                    
		<table width="100%" border="0" cellpadding="0" cellspacing="0">
			<tr>
				<td colspan="3" class="partita">Effettua login per inserire un commento</td>
			</tr>
			<tr>
				<td class="cella4" style="width:75px;">Username: </td>
				<td class="cella4" style="width:150px;"><input type="text" name="nome" style="width:125px;"></td>
				<td class="cella3" rowspan="4">Nuovo utente? <br /><a href="registrati.php" class="cella4">Registrati</a></td>
			</tr>
			<tr>
				<td class="cella4" style="width:75px;">Password: </td>
				<td class="cella4" style="width:150px;"><input type="password" name="password" style="width:125px;">
			</tr>
			<tr>
				<td class="cella3" colspan="2">Dati dimenticati?</td>
			</tr>
			<tr>
				<td colspan="2" class="cella3">
                	<input type='submit' name='accedi' value='Invia!'>
                    <input type='reset' name='cancella' value='Cancella!'> 
                </td>
          	</tr>
		</table>

	</form>		
    
<?php		
			} else {
		$_SESSION['user_id'] = $record['id'];
		$_SESSION['user_avatar'] = $record['avatar'];
		$_SESSION['utente'] = $nome;
		
		//$messaggio = urlencode('Login avvenuto con successo');
		//header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
		echo '<div class="titolo">Login avvenuto con successo</div><br />';	
?>

	<form name='commenta' method='post' action='commento.php'>
		<table width="98%" border="0" cellpadding="0" cellspacing="0">
			<tr>
				<td colspan="2" class="partita">Benvenuto <label class="notizia"><?php echo $_SESSION['utente']; ?>!</label></td>
			</tr>
			<tr>
				<td class="cella8"><input readonly='readonly' name='nome' class="cella11" value='<?php echo $_SESSION['utente']; ?>' /><br /><br />
                <img class="avatar" src="<?php echo $_SESSION['user_avatar']; ?>" /></td>
				<td class="cella4"><textarea name="mex" style="width:380px; height:100px;">Lascia un commento...</textarea><br />
                <input type='text' style='display: none' name='data' readonly='readonly' value='<?php echo date("y/m/d");?>'>
                <input type='text' style='display: none' name='ora' readonly='readonly' value='<?php echo date("H:i");?>'></td>
			</tr>
            <tr>
				<td colspan="2" class="cella4">
                	<input type='submit' name='accedi' value='Invia!'><input type='reset' name='cancella' value='Cancella'> 
                </td>
			</tr>
		</table>
	</form>
<?php

		}
	}
}
?>
 

Fez Vrasta

Utente Attivo
11 Mag 2013
409
0
0
devi per forza effettuare una query per ogni pagina, che va a prendere il nome utente e la passoword e le confronta con quelle nel cookie.
 

asevenx

Utente Attivo
7 Nov 2009
312
0
16
devi per forza effettuare una query per ogni pagina, che va a prendere il nome utente e la passoword e le confronta con quelle nel cookie.
da quel poco che sono riuscito a capire, per il login ho usato le sessioni, e non i cookie.. non sono due cose diverse? scusatemi l'ignoranza...

ovviamente ad inizio della pagina ho inserito il session_start()
 

Fez Vrasta

Utente Attivo
11 Mag 2013
409
0
0
Ah non so aiutarti allora scusa.

Di solito si usano i cookie perché almeno se chiudi tutto e torni il giorno dopo ti ritrovi ancora loggato.
 

asevenx

Utente Attivo
7 Nov 2009
312
0
16
cmq credo di aver risolto semplicemente così

PHP:
<?php
//apro la sessione per cercare i dati del login
session_start();

//repero i dati...
$id	= $_SESSION['user_id'];
$avatar = $_SESSION['user_avatar'];
$nome =	$_SESSION['utente'];
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
l'istruzione session_start() DEVE essere ripetuta in tutte le pagine in cui si usano le sessioni o per valorizzarle o per leggerle
e deve essere sempre la prima istruzione (anche prima del <!DOCTYPE HTML>)
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
questo codice lo inserisci in ogni pagina ?

La variabile di sessione $_SESSION (così come altre variabili) sono globali; quindi valgono in tutto il progetto.
Può utilizzare $_SESSION['user_id'] (e le altre) direttamente ma se vuole salvarle in variabili 'normali' (come ha fatto) allora deve farlo per ogni pagina.
 
Discussioni simili
Autore Titolo Forum Risposte Data
Y mantenere sessione login? PHP 5
O Mantenere una sessione PHP 20
S mantenere le modifiche in un file php PHP 2
S [PHP] Come mantenere selezionato checkbox dopo aver cliccato submit PHP 7
A Mantenere la validazione reindirizzandoci su un secondo sito WEb. (ASP.NET) ASP.NET 0
I [Javascript] mantenere un bottone abilitato al refresh della pagina Javascript 1
M [PHP] Mantenere variabile con datagrid nella pagina 2 PHP 1
S [PHP] Mantenere selezionato il valore scelto dopo submit PHP 16
F Mantenere selezione immagine Javascript 1
M [PHP - MYSQL] Mantenere filtro query in tabelle paginate PHP 3
A Mantenere il focus su di una inputbox Javascript 1
G Freelancer: quanto costa aprire e mantenere la partita IVA? Discussioni Varie 3
N Ciclare sul DB e mantenere i dati PHP 3
P Mantenere valore di un form anche dopo refresh PHP 6
S Mantenere dati form in memoria PHP 29
N Mantenere scelte fatte in un form PHP 5
A Mantenere le proporzioni Photoshop 3
L Convalidare form e mantenere il valore PHP 5
T Mantenere la posizione della pagina dopo postback PHP 1
E Flash mantenere un livello sempre animato Flash 1
J Come mantenere lo stato del "creator"? Javascript 0
S Ereditare e Mantenere Collegate Proprieta Flash 0
E Mantenere la stessa pagina cambianto il contenuto Classic ASP 1
opeth978 mantenere le informazioni PHP 19
C asp: mantenere l ostato 2 consigli Classic ASP 2
G Combo ... mantenere la selezione fatta Classic ASP 0
I carica foto profilo sessione utente PHP 2
MarcoGrazia Riprendere una sessione interrotta PHP 0
I sessione username PHP 1
I sessione utente elimina chat PHP 12
I sessione username scarica file PHP 1
I aggiungere la sessione PHP 8
L Sessione e array per utenti PHP 0
N Variabile di sessione è un array PHP7 PHP 3
R probema con la sessione PHP 0
S Utilizzo variabili di sessione tra PC e server PHP 0
M [PHP] Passare variabile di sessione con metodo GET PHP 10
R SESSIONE PERSISTENTE Programmazione 0
L [PHP] Suggerimento su sessione PHP 6
Cosina [PHP] Chiudere sessione quando la pagina viene riaggiornata PHP 4
cattivic72 [PHP] Durata sessione PHP 1
N [PHP] Utilizzo variabili di sessione [Risolto] PHP 13
I [PHP] login con sessione singola PHP 1
otto9due [PHP] id di sessione "session_id()" a cosa serve e come utilizzarlo? PHP 4
K [PHP] Unica sessione login forum/sito PHP 1
L [PHP] Sessione tra sottodominio PHP 1
M [PHP] Sessione Login PHP 15
gandalf1959 [PHP] variabile di sessione si azzera ricaricando la pagina? PHP 3
Emix Sessione strana... PHP 16
P dati da tenere in sessione PHP 2

Discussioni simili