- Home
- Categorie
- Coding e Sistemistica
- Coding
- errore sessione
- 
							
							
							
							
							
errore sessioneCiao a tutti, finalmente ho acquistato il dominio e ho caricato tutto sul server. 
 Però mi da quest'errore quando apro una qualsiasi pagina:[PHP]Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/u14d2c2z/domains/tapsosnuoto.it/public_html/admin/head.inc.php:21) in /home/u14d2c2z/domains/tapsosnuoto.it/public_html/admin/config.php on line 2 
 [/PHP]e la linea 2 di config.php è questa: 
 [PHP]
 session_start();
 [/PHP]ke faccio? 
 Ciau
 
- 
							
							
							
							
							
Non ci deve essere nessun output prima di session_start() 
 Controlla che prima dell'apertura del php (<?php) non ci siano righe, anche vuote.
 
- 
							
							
							
							
							
non ce ne sono...questo contiene quella pagina: [PHP] 
 <?php
 session_start();
 $connection = mysql_connect( 'host', 'nome_utente', 'password') or die('Could not connect to server.' );
 mysql_select_db('nome_database', $connection) or die('Could not select database.');
 ?>
 [/PHP]
 
- 
							
							
							
							
							ma a che ti serve il session_start(); nel config.php?? 
 
- 
							
							
							
							
							
dove dovrei metterlo? 
 
- 
							
							
							
							
							se il tuo config.php è proprio quello di sopra la sessione in quella pagina non ti serve proprio....almeno mi pare.....non ne vedo l'utilità  
 
- 
							
							
							
							
							
siccome viene richiamato anche da una pagina ke fa il login.... 
 che mi consigli?
 lo metto nella pagina del login?
 
- 
							
							
							
							
							@talkoman said: siccome viene richiamato anche da una pagina ke fa il login.... 
 che mi consigli?
 lo metto nella pagina del login?
 ovvio che si XDma oltre al session_start, nella pagina di login devi definire anche cosa dovrà portarsi appresso la sessione, ovvero rob del tipo: [php] 
 //** tiri fuori i dati dal Db che ti includi in un array e quindi fai partire la sessione. Consigliabile unsettarla e distruggerla, per poi riaprirla */
 session_start();
 session_unset();
 session_destroy();
 session_start();
 $_SESSION["id_user"]=$array["id_user"];
 $_SESSION["nick"]=$array["nick"];
 $_SESSION["email"]=$array["email"];
 .......
 ......
 ....
 [/php]
 da quì in poi ti potrai richiamare i dati di sessione mettendo ad inizio pagina, immediatamente dopo il <? (e prima NON deve esserci nulla):
 [php]session_start();
 $nick=$_SESSION['nick'];
 ....
 ..
 ..[/php] 
 
- 
							
							
							
							
							
io ce l'ho così: 
 [PHP]
 //Eseguo una query nella tabella utenti verificando se esiste l'username con quella password
 $query = mysql_query("SELECT user_username FROM admin_users WHERE user_username = '".$_POST['usrname']."' AND user_passwd = '".md5($_POST['password'])."'");
 $var=mysql_num_rows($query);
 //se esiste l'account registra la sessione
 if($var==1)
 {
 //metto l'username nella variabile di sessione "username"
 $_SESSION['username'] = $_POST['usrname'];
 //Faccio il redirect nella pagine enter.php
 echo "<script>
 window.location = "index.php"
 </script>";
 }
 [/PHP]
 
- 
							
							
							
							
							[php] 
 //Eseguo una query nella tabella utenti verificando se esiste l'username con quella password
 $query = mysql_query("SELECT user_username FROM admin_users WHERE user_username = '".$_POST['usrname']."' AND user_passwd = '".md5($_POST['password'])."'");
 $var=mysql_num_rows($query);
 //se esiste l'account registra la sessione
 if($var==1)
 {
 session_start();
 session_unset();
 session_destroy();
 session_start();
 //metto l'username nella variabile di sessione "username"
 $_SESSION['username'] = $_POST['usrname'];
 //Faccio il redirect nella pagine enter.php
 echo "<script>
 window.location = "index.php"
 </script>";
 }
 [/php]devi aprire la sessione prima di assegnare il valore  
 
- 
							
							
							
							
							
[PHP]<?php 
 //includo il file di Configurazione con session_start()) dentro
 include ("config.php");
 //Eseguo una query nella tabella utenti verificando se esiste l'username con quella password
 $query = mysql_query("SELECT user_username FROM admin_users WHERE user_username = '".$_POST['usrname']."' AND user_passwd = '".md5($_POST['password'])."'");
 $var=mysql_num_rows($query);
 //se esiste l'account registra la sessione
 if($var==1){
 session_start();
 session_unset();
 session_destroy();
 session_start();
 //metto l'username nella variabile di sessione "username"
 $_SESSION['username'] = $_POST['usrname'];
 //Faccio il redirect nella pagine enter.php
 echo "<script>
 window.location = "index.php"
 </script>";
 }
 else
 {
 //Faccio il redirect nella pagine enter.php
 echo "<script>
 window.location = "login.php"
 </script>";
 }
 ?>[/PHP]non mi effettua il login...mi torna sulla pagina login.php 
 
- 
							
							
							
							
							@talkoman said: non mi effettua il login...mi torna sulla pagina login.php per come è il codice significa che if($var==1)restituisce FALSE..... 
 
- 
							
							
							
							
							
allora è strutturato così 
 pagina: login.php[PHP]<form action="verifica.php" method="post" enctype="application/x-www-form-urlencoded" name="login"> 
 <br/>
 <table border="0">
 <tr>
 <td><div align="right">UserName</div></td>
 <td><input type="text" name="usrname"></td>
 </tr>
 <tr>
 <td><div align="right">Password</div></td>
 <td><input type="password" name="password"></td>
 </tr>
 </table>
 <input type="submit" value="Entra!" name="post"></form>[/PHP]verifica ke è quella di sopra.... 
 
- 
							
							
							
							
							[PHP]include ("config.php"); $username=$_POST['usrname']; 
 $psw=$_POST['password'];
 $pswmd5=md5($psw);
 $sql= "SELECT user_username FROM admin_users WHERE user_username='".$username."' AND user_passwd='".$pswmd5."'";$query = mysql_query($sql) or die (mysql_error()); 
 $var=mysql_num_rows($query);
 .....
 [/PHP]prova così, eventualmente fatti un echo di $var per vedere che tira fuori  
 
- 
							
							
							
							
							
allora ho fatto delle prove ho fatto così la pag verifica.php: 
 [PHP]if($var==1){
 session_start();
 session_unset();
 session_destroy();
 session_start();
 //metto l'username nella variabile di sessione "username"
 $_SESSION['username'] = $_POST['usrname'];
 //Faccio il redirect nella pagine enter.php
 echo "SI";
 /echo "<script>
 window.location = "index.php"
 </script>";/
 }
 else
 {
 //Faccio il redirect nella pagine enter.php
 echo "NO";
 /echo "<script>
 window.location = "login.php"
 </script>";/
 }[/PHP]
 e mi stampa si, quindi si redirecta su index.php
 ma index.php è così:
 [PHP]<?php
 include ("head.inc.php");
 include ("foot.inc.php");
 //includo il file di Configurazione con session_start()) dentro
 include ("config.php");
 //se esiste la variabile $_SESSION['username'] è loggato
 if(!isset($_SESSION['username'])){
 echo "<script>
 window.location = "login.php"
 </script>";
 }
 ?>[/PHP]
 quindi può essere ke non si prende il session e ritorna su login....
 come faccio??
 
- 
							
							
							
							
							[php] 
 if(!isset($_SESSION['username'])){
 echo "<script>
 window.location = "login.php"
 </script>";
 }
 [/php]normale che non ti funge XD 
 prima di richiamare una variabile di sessione devi aprire la sessione XD[php]session_start(); 
 if(!isset($_SESSION['username'])){
 echo "<script>
 window.location = "login.php"
 </script>";
 }
 [/php]
 
- 
							
							
							
							
							
per questo era nel config.php.... 
 
- 
							
							
							
							
							
comunque mi da lo stesso problema originario: [PHP]Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/u14d2c2z/domains/tapsosnuoto.it/public_html/admin/head.inc.php:21) in /home/u14d2c2z/domains/tapsosnuoto.it/public_html/admin/index.php on line 7[/PHP] 
 
- 
							
							
							
							
							session_start() va messo subito dopo <?, e prima che esca il session_start() del config.php hai già l'header ed il footer, ovvero, la stringa di prima la devi mettere prima dell'header e del footer.....mi pare che era già scritto...o sbaglio? 
 
- 
							
							
							
							
							
grazie funziona!!....devo semplicemente sistemarlo in tutte le pagine:D