Non aggiorna valore session

marcocorso

Nuovo Utente
25 Giu 2015
3
0
0
Ciao ha tutti
ho provato a scrivere questo codice che dopo il login dovrebbe cambiare il nome dell'utente da "visitatore" a quello inserito per il login ma rimane "visitatore" e non varia

home.php
PHP:
<?php
session_start();
$_SESSION['username'] = "visitatore";

include('header.php');
?>

   .
   .
   .
   .
   .

	
<?php
include('footer.php');
?>


header.php

PHP:
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<html>

   <head>
      .
      .
   </head>
    
<body>
      .
      .
      .		
	
<?php
$DB_host     = '...';
$DB_user     = '...';
$DB_password = '...';
$DB_name     = '...';

$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()
{
	if(isset($_GET['msg'])) {
		echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
	}
?>

	<?php
}

function effettua_login()
{
	$nome      = trim($_POST['nome']);
	$password  = trim($_POST['password']);
	if(get_magic_quotes_gpc()) {
		$nome      = stripslashes($nome);
		$password  = stripslashes($password);
	}

	if(!$nome || !$password) {
		$messaggio = urlencode("Non hai inserito il nome o la password");
		header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
		exit;
	}

	$nome     = mysql_real_escape_string($nome);
	$password = mysql_real_escape_string($password);	

	$query = "SELECT uname FROM usr WHERE uname = '$nome' AND upwd = '$password'";
	$result = mysql_query($query);

	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");
	} else {
		$_SESSION['username'] = $nome;
		$messaggio = urlencode('Login avvenuto con successo');
		header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
	}
}
?>

		
		UTENTE:
		<?php
			echo $_SESSION['username'];
		?>
		
		<form name="form_login" method="post" action="">
		   <label>username: <input name="nome" type="text" value=""></label><br>
		   <label>password: <input name="password" type="password" value=""></label><br>
	           <input name="invia" type="submit" value="Invia">
	        </form>
 
Ciao ha tutti
ho provato a scrivere questo codice che dopo il login dovrebbe cambiare il nome dell'utente da "visitatore" a quello inserito per il login ma rimane "visitatore" e non varia

home.php
PHP:
<?php
session_start();
$_SESSION['username'] = "visitatore";

include('header.php');
?>

   .
   .
   .
   .
   .

	
<?php
include('footer.php');
?>


header.php

PHP:
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<html>

   <head>
      .
      .
   </head>
    
<body>
      .
      .
      .		
	
<?php
$DB_host     = '...';
$DB_user     = '...';
$DB_password = '...';
$DB_name     = '...';

$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()
{
	if(isset($_GET['msg'])) {
		echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
	}
?>

	<?php
}

function effettua_login()
{
	$nome      = trim($_POST['nome']);
	$password  = trim($_POST['password']);
	if(get_magic_quotes_gpc()) {
		$nome      = stripslashes($nome);
		$password  = stripslashes($password);
	}

	if(!$nome || !$password) {
		$messaggio = urlencode("Non hai inserito il nome o la password");
		header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
		exit;
	}

	$nome     = mysql_real_escape_string($nome);
	$password = mysql_real_escape_string($password);	

	$query = "SELECT uname FROM usr WHERE uname = '$nome' AND upwd = '$password'";
	$result = mysql_query($query);

	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");
	} else {
		$_SESSION['username'] = $nome;
		$messaggio = urlencode('Login avvenuto con successo');
		header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
	}
}
?>

		
		UTENTE:
		<?php
			echo $_SESSION['username'];
		?>
		
		<form name="form_login" method="post" action="">
		   <label>username: <input name="nome" type="text" value=""></label><br>
		   <label>password: <input name="password" type="password" value=""></label><br>
	           <input name="invia" type="submit" value="Invia">
	        </form>

la stringa "visitatore" te la deve stampare quell'echo?:
PHP:
UTENTE:
        <?php
            echo $_SESSION['username'];
        ?>
        
        <form name="form_login" method="post" action="">
           <label>username: <input name="nome" type="text" value=""></label><br>
           <label>password: <input name="password" type="password" value=""></label><br>
               <input name="invia" type="submit" value="Invia">
            </form>

Se la deve stampare li allora prova a scrivere così:
PHP:
<?php
session_start();
 echo $_SESSION['username'];
        ?>
 
ciao
il sistema migliore è mettere dei var_dump per vedere dove è l'inghippo
PHP:
<?php
session_start();
$_SESSION['username'] = "visitatore"; 
var_dump($_SESSION['username']);
//....
?>
PHP:
<?php
//....
function effettua_login()
{
    var_dump($_POST['nome']);
	$nome      = trim($_POST['nome']);
	//.....
}
//.....
?>
PHP:
<?php
//....
 } else {
        var_dump($nome);
		$_SESSION['username'] = $nome;
		var_dump($_SESSION['username']);
        $messaggio = urlencode('Login avvenuto con successo');
        header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
    }
}
?>
ti conviene uno alla volta, lanciare e verificare, sino a che non trovi l'errore
 
ho provato a inserire i vari var_dump ma, a parte il primo che visualizza correttamente visitatore, gli altri non visualizzano niente nella apgina
 

Discussioni simili