[risolto] Problema sessioni php e login

otto9due

Utente Attivo
22 Feb 2014
529
21
28
Anzitutto buonasera, sono nuovo del forum e da poco ho iniziato a "programmare" ( se così possiamo dire ) qualcosina per conto mio..
Ho sviluppato un sistemino, tipo pagina di cortesia, che raccoglie in un database i nome e email utente che vogliono essere avvisati dell'apertura di un determinato sito web.
Una volta raccolti i dati, ho creato un'area riservata, dalla quale mando una mail a tutte le mail presenti nel database ( caricate dai vari utenti ) ..
Detto questo vengo al problema.. Ho studiacchiato un pochetto le sessioni, ed ho creato un pannello di login che dovrebbe permettermi di accedere al pannello di controllo, che rinvia ( una volta inseriti i dati..) ad una pagina di controllo che dovrebbe effettuare il login..
PHP:
.........
$username = $_POST['username']; 
$password = sha1($_POST['password']);
        
try
      {
        $sql ='SELECT COUNT(*) FROM login WHERE username =:username AND password =:password';
        $s = $pdo->prepare($sql);
        $s->bindValue(':username', $username);
        $s->bindValue(':password', $password);
        $s->execute();
      }
      catch (PDOException $e)
      {
        $error = 'Error: ' . $e->getMessage();
        include '../ERRORDB/error.html.php';
        exit();
      }     
      
      $row = $s->fetch();
      
      if ($row[0] > 0){
          
          $SESSION['loggedin'] = 1;
          $SESSION['username'] = $username ;
          $SESSION['password'] = $password ;
      }else{
          unset($SESSION['loggedin']);
          unset($SESSION['username']);
          unset($SESSION['password']);
      }

    if ($SESSION['loggedin'] === 1 ){

       echo '<script language=javascript>document.location.href="../../PHP/controllruler.php"</script>'; 

    } else {

       echo '<script language=javascript>document.location.href="../../index.html"</script>';
    }
fino a qui in effetti funziona.. e la pagina sembra salvare la sessione, perchè mi reindirizza alla pagina giusta.. poi però quando vado nella pagina in cui vengo reindirizzato.. che necessita delle variabili di sessione per apparire.. ovvero:
PHP:
if ($SESSION['loggedin'] !== 1 ){
  echo "<h1>Area riservata, accesso negato.</h1>";
  echo "Effettua il login <a href='../PHP/login/login.php'><font color='orange'>qui</font></a>";
  die;
} elseif ($SESSION['loggedin'] === 1) {
  include 'connection.php';  
  try
{
  $sql = 'SELECT nome, email, data FROM user' ;
  $result = $pdo->query($sql);
}
catch (PDOException $e)
{
  $error = 'Error: ' . $e->getMessage();
  include 'error.html.php';
  exit();
}     
foreach ($result as $row)
{
  $utenti[] = array(
    'nome' => $row['nome'],
    'email' => $row['email'],
    'data' => $row['data']
  );
}
include 'controllpanel.php';
}
le variabili di sessione non vengono caricate..
ho fatto anche un test con var_dump per verificarne il contenuto, e questo risulta NULL.
Perchè secondo voi, in un'altra pagina utilizzando la stessa tecnica mi funziona?
P.S. in entrambe le pagine all'inizio subito dopo <?php c'è session_start();

Grazie in anticipo..
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.038
146
63
PR
www.borgo-italia.it
ciao
se non hai scritto male qui l'errore è di come scrivi la variabile di sessione, la sintassi è
$_SESSION['pinco']
con l'undescore da il dollaro e session
$SESSIONE è un semplice array
 

otto9due

Utente Attivo
22 Feb 2014
529
21
28
Grazieee

Non ci crederete ma è una giornata che esco pazzo.... Era proprio li l'errore... ma copiando e ricopiando da li.. continuavo a rifare il medesimo errore...
Grazie mille.. Risolto..:mavieni:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.038
146
63
PR
www.borgo-italia.it
ciao
consiglio, se puoi è non hai output html prima per reindirizzare al posto di
PHP:
echo '<script language=javascript>document.location.href="../../PHP/controllruler.php"</script>';
sarebbe meglio usare
header('location:controllruler.php);
il js è sempre comunque visibile
se hai degli output poui ridirigere il flusso usando
PHP:
<?php
ob_start();
//......
header('location:controllruler.php');
//.....
ob_end_flush();
?>
 

otto9due

Utente Attivo
22 Feb 2014
529
21
28
Graziee

Anzitutto volevo ringraziarti per la risposta.. Era da tempo che cercavo un buon forum in cui si parlasse di php annessi e connessi.. Mi sa che l'ho trovato..

Per quanto riguarda i javascript li ho levati, era una delle 1000 prove che ho fatto oggi per far funzionare quel login :D .. Per quanto riguarda ob_start () non lo avevo mai incontrato ne studiato, ma mi piacerebbe approfondire.. Dove trovo qualcosa in proposito??
Grazie ancora!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.038
146
63
PR
www.borgo-italia.it
ciao
Dove trovo qualcosa in proposito??
come detto in un altro post (in cui mi sembra che tu abbia anche risposto) la mia fonte di informazioni è il manuale in line, tra l'altro è il manuale ufficiale fatto dagli sviluppatori di php e quindi aggiornatissimo