[risolto] Problema sessioni php e login

Discussione in 'PHP' iniziata da otto9due, 22 Febbraio 2014.

  1. otto9due

    otto9due Utente Attivo

    Registrato:
    22 Febbraio 2014
    Messaggi:
    529
    Mi Piace Ricevuti:
    21
    Punteggio:
    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'] === ){

           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'] !== ){
      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: 22 Febbraio 2014
  2. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    16.025
    Mi Piace Ricevuti:
    146
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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
     
  3. otto9due

    otto9due Utente Attivo

    Registrato:
    22 Febbraio 2014
    Messaggi:
    529
    Mi Piace Ricevuti:
    21
    Punteggio:
    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:
     
  4. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    16.025
    Mi Piace Ricevuti:
    146
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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();
    ?>
     
  5. otto9due

    otto9due Utente Attivo

    Registrato:
    22 Febbraio 2014
    Messaggi:
    529
    Mi Piace Ricevuti:
    21
    Punteggio:
    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!
     
  6. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    16.025
    Mi Piace Ricevuti:
    146
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao
    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
     
Sto caricando...

Condividi questa Pagina