Errore nelle SESSIONI

Ho seguito al lezione su questo sito per le sessioni, ho provato a fare un semplice login e a salvarne l'esito in una sessione, in questo modo:

<? session_start();
if($_POST[pass]&&$_POST[user])
{   
   $log=0;
   $insert_pass=$_POST[pass];
   $insert_user=$_POST[user];
   if(($insert_pass=="miapass")&&($insert_user=="superuser"))
   {
      $log=1;
      echo"<strong>Autenticazione avvenuta</strong>";
      $_SESSION['ok_log']=true;
   }
}
?>

Il form ha come metodo POST, e rimanda alla pagine stessa.

l'errore che mi visulazzia quando carico la pagina nel browser è:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Programmi\Apache Group\Apache2\htdocs\login.php:10) in C:\Programmi\Apache Group\Apache2\htdocs\login.php on line 22 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Programmi\Apache Group\Apache2\htdocs\login.php:10) in C:\Programmi\Apache Group\Apache2\htdocs\login.php on line 22

inviato 10 anni fa
blow
blow
1
X 0 X

controlla che si trovino all'inizio della pagina e che NON ci siano spazi o caratteri ( output ) prima del tag di inizio di php ( <?php )

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Ho controllato, ho provato anche a metterlo fuori dal tag <html> ma da sempre lo stesso errore.

risposto 10 anni fa
blow
blow
1
X 0 X

retifico, l'ho messo proprio a inizio pagine, prima del doctype e sembra funzionare!!! benissimo!

 8)

risposto 10 anni fa
blow
blow
1
X 0 X

No anzi ho parlato troppo presto, c'è qualcosa che non va in quanto mi dice che mi sono autenticato con qualunque nome  e password...

Allora il codice è questo:

<body>
<form name="login" method="post" action="showdb.php">
   <table border="0">
       <tr>
             <td><strong>Nome utente</strong></td>
             <td><input id="testo" type="text" name="user" /></td>
             <td rowspan="2"><input name="submit" type="submit" /></td>
         </tr>
       <tr>
         <td><strong>Password</strong> </td>
         <td><input type="password" name="pass" /></td>
         </tr>
      </table>
</form>
<?
if($_POST[pass]&&$_POST[user])
{   
   $_SESSION['ok_log']=false;
   $insert_pass=$_POST[pass];
   $insert_user=$_POST[user];
   if(($insert_pass=="miapass")&&($insert_user=="superuser"))
   {
      echo"<strong>Autenticazione avvenuta</strong>";
      $_SESSION['ok_log']=true;
   }
}
?>
</body>

Credo che non va più bene controllare $_POST in questa stessa pagina perchè ora quando c'è il submit mi manda a swhodb.php e non ricarica la stessa pagina come prima.

Cosa devo cambiare?

Vorrei controllare i campi form, ma allo stesso tempo utilizzare le sessioni per salvare il fatto che mi sono autenticato.

risposto 10 anni fa
blow
blow
1
X 0 X

Ho rimediato semplicemente controllando i valori di $_POST nella pagina showdb.php e da qui far partire la sessione.

risposto 10 anni fa
blow
blow
1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda