problema con le sessioni

  • Creatore Discussione Creatore Discussione asevenx
  • Data di inizio Data di inizio

asevenx

Utente Attivo
7 Nov 2009
312
0
16
Salve, sto creando un sito in php con un sistema di login ma mi appare il seguente errore:

A session had already been started - ignoring session_start() in ... on line 4

inoltre, in fondo pagina appare anche questo errore:

Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in Unknown on line 0

Qualcuno sa dirmi cosa significa? Grazie a tutti
 
Il messaggio di errore fa riferimento alla seguente pagina.

PHP:
<?php
//apro la sessione in cui salvare i dati del login
session_start();
error_reporting (0); 
ini_set('display_error', '0');

include("edizione.php");
?>

<html>
<head>

	<link href="css/style.css" rel="stylesheet" type="text/css">

</head>

<body marginheight="0" marginwidth="0">

<?php
	
//repero i dati...
$id = $_SESSION['id'];
$avatar = $_SESSION['avatar'];
$password = $_SESSION['password']= trim($_POST['password']);
$nome = $_SESSION['nome'] = trim($_POST['nome']);

$DB_tabella = "utenti";

//connessione e invio al DB
$DB_connessione = mysql_connect($DB_host,$DB_user,$DB_password) or die("Connessione DB fallita"); 
mysql_select_db($DB_name,$DB_connessione) or die("Selezione DB fallita");

//se l'utente inserisce i dati
if ($nome != "" || $password != ""){

//cripto la password
$criptata = md5($password);

//visualizza tutti i record nel DB
$query = "SELECT * FROM $DB_tabella WHERE nome = '$nome' AND pass = '$criptata'";
$result = mysql_query($query, $DB_connessione) or die('Errore...pannello di controllo');
$righe = mysql_num_rows($result);

//verifico che i dati inseriti dall'utente siano presenti nel database
	if ($righe > 0){

//ciclo while per visualizzare i dati estratti dal database
		while($resrow = mysql_fetch_row($result))
		{
			$USER_nome = addslashes($resrow[1]);
			$USER_avatar = addslashes($resrow[3]);

?>
	<form name='commenta' method='post' action='commento.php'>
		<div class="messaggio">Benvenuto <?php echo $USER_nome; ?>!</div>
		<div class="cella1">
            	<input readonly='readonly' name='nome' style="text-align:center" class="news_sottotesto" value='<?php echo $_SESSION['nome']; ?>' />
                <img class="avatar" src="<?php echo $USER_avatar; ?>" />
        </div>		
        <div rowspan ="2" class="cella2">
            	<textarea style=" margin:inherit" name="mex" class="casella">Lascia un commento...</textarea>
                <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");?>'>
        </div>

		<div class="cella3">
            <input class="bottone" type='submit' name='accedi' value='Invia!'>
            <input class="bottone" type='reset' name='cancella' value='Cancella'> 
        </div>
	</form>

<?php
		}

//nel caso in cui nome utente o password fossero errati		
	} else {
?>	

	<form name='commenta' method='post' action='index.php'>

		<div class="messaggio">Effettua il login per inserire un commento</div>
		<div class="cella4">
        	<div class="cella5">Username: </div>
			<div><input type="text" name="nome" style="width:123px;"></div>
			<div class="cella5">Password: </div>
			<div><input type="password" name="password" style="width:123px;"></div><br>
            <div class="cella7"><input type='submit' class="bottone" name='accedi' value='Invia!'></div>
       	</div>                
		<div class="cella6">
			<span>Nuovo utente? <br /><a class="link_white" href="registrati.php">Registrati</a></span>
			<span class="msg">Nome utente o password errati</span>
		</div>

	</form>

<?php	
		}

//nel caso l'utente non abbia inserito i propri dati (stato iniziale)		
} else {
?>

	<form name='commenta' method='post' action='index.php'>

		<div class="messaggio">Effettua il login per inserire un commento</div>
		<div class="cella4">
        	<div class="cella5">Username: </div>
			<div><input type="text" name="nome" style="width:123px;"></div>
			<div class="cella5">Password: </div>
			<div><input type="password" name="password" style="width:123px;"></div><br>
            <div class="cella7"><input type='submit' class="bottone" name='accedi' value='Invia!'></div>
       	</div>                
		<div class="cella6">Nuovo utente? <br /><a class="link_white" href="registrati.php">Registrati</a></div>

	</form>	
	
<?php
}
?>

</body>
</html>

Ci tengo a precisare che però non incide sulla funzionalità del sito quindi potrebbe essere ignorato, e per questo ho aggiunto error_reporting (0); ma viene comunque visualizzato.

Preciso inoltre che il codice che ho postato fa riferimento ad una pagina inserita in home page attraverso include. Non so se centri qualcosa, ma forse potrebbe essere d'aiuto saperlo.
 
Ultima modifica:
ha la session.auto_start () o qualcosa di simile a on? e poi stai lavorando in locale?
 
Salvo Salvi
hai controllato se in edizione.php non cè un altra session_start()?

no, non c'è.. è semplicemente una pagina creata con i dati del database

giamma
ha la session.auto_start () o qualcosa di simile a on? e poi stai lavorando in locale?

si, lavoro in locale.. ora provo a metterlo online. Scusami l'ignoranza, che cos'è session.auto_start () e on?

Inoltre volevo chiedere, senza aprire una nuova discussione se possibile, i dati che vengono salvati nelle sessioni non vengono ricordati quando cambio pagina, come faccio a trasportare i dati in tutte le pagine del sito? grazie
 
ti ho chiesto se lavori in locale perchè sono convinto che mettendolo online il problema si risolvi, session.auto_start serve a dire se si avvia un modulo di sessione in automatico mmmhhh non sò se sono stato chiaro (non sò come spiegartelo) cmq normalmente il suo valore è 0 se non è cosi potrebbe essere da quello il motivo dell'errore. I dati di sessione normalmente vengono trasportati con la variabile d'ambiente $_SESSION[chiave]= valore nelle altre pagine hai messo session_start(); poi le varie variabili d'ambiente es:

PHP:
session_start();
$_SESSION[chiave];// la sessione deve avere il nome dell'array utilizzato nella pagina precedente ovviamente non utilizzi = perche l'arrey lo avevi settato prima

//io poi fare una prova 
echo($_SESSION[chiave]);

spero di essere stato abbastanza chiaro senò fammi sapere ciao.
 
Ultima modifica:

Discussioni simili