Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    controllo di accesso con password e-mail [da Kevin Yank libro]

    Ho seguito tutto ciò che spiega il libro, ho anche usato i file pronti che ti dà il libro,
    bene il mio problema è che quando entro nella pagina dove inserisco email e password x loggarmi
    Ottengo sempre l'errore "L'indirizzo di posta elettronica specificato o la password sono errati."
    nonostante sia tutto corretto
    questo è il codice della pagina per l'access al sito
    codice:
    <?php
    
    
    function userIsLoggedIn()
    {
      if (isset($_POST['action']) and $_POST['action'] == 'login')
      {
        if (!isset($_POST['email']) or $_POST['email'] == '' or
          !isset($_POST['password']) or $_POST['password'] == '')
        {
          $GLOBALS['loginError'] = 'Please fill in both fields';
          return FALSE;
        }
    
    
        $password = md5($_POST['password'] . 'ijdb');
    
    
        if (databaseContainsAuthor($_POST['email'], $password))
        {
          session_start();
          $_SESSION['loggedIn'] = TRUE;
          $_SESSION['email'] = $_POST['email'];
          $_SESSION['password'] = $password;
          return TRUE;
        }
        else
        {
          session_start();
          unset($_SESSION['loggedIn']);
          unset($_SESSION['email']);
          unset($_SESSION['password']);
          $GLOBALS['loginError'] =
              'The specified email address or password was incorrect.';
          return FALSE;
        }
      }
    
    
      if (isset($_POST['action']) and $_POST['action'] == 'logout')
      {
        session_start();
        unset($_SESSION['loggedIn']);
        unset($_SESSION['email']);
        unset($_SESSION['password']);
        header('Location: ' . $_POST['goto']);
        exit();
      }
    
    
      session_start();
      if (isset($_SESSION['loggedIn']))
      {
        return databaseContainsAuthor($_SESSION['email'], $_SESSION['password']);
      }
    }
    
    
    function databaseContainsAuthor($email, $password)
    {
      include 'db.inc.php';
    
    
      try
      {
        $sql = 'SELECT COUNT(*) FROM author
            WHERE email = :email AND password = :password';
        $s = $pdo->prepare($sql);
        $s->bindValue(':email', $email);
        $s->bindValue(':password', $password);
        $s->execute();
      }
      catch (PDOException $e)
      {
        $error = 'Error searching for author.';
        include 'error.html.php';
        exit();
      }
    
    
      $row = $s->fetch();
    
    
      if ($row[0] > 0)
      {
        return TRUE;
      }
      else
      {
        return FALSE;
      }
    }
    
    
    function userHasRole($role)
    {
      include 'db.inc.php';
    
    
      try
      {
        $sql = "SELECT COUNT(*) FROM author
            INNER JOIN authorrole ON author.id = authorid
            INNER JOIN role ON roleid = role.id
            WHERE email = :email AND role.id = :roleId";
        $s = $pdo->prepare($sql);
        $s->bindValue(':email', $_SESSION['email']);
        $s->bindValue(':roleId', $role);
        $s->execute();
      }
      catch (PDOException $e)
      {
        $error = 'Error searching for author roles.';
        include 'error.html.php';
        exit();
      }
    
    
      $row = $s->fetch();
    
    
      if ($row[0] > 0)
      {
        return TRUE;
      }
      else
      {
        return FALSE;
      }
    }
    login.jpg

  2. #2
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    a parte che il session_start va messo sempre come prima istruzione.
    è chiaro che il messaggio di errore che ottieni è perché databaseContainsAuthor restituisce false. ora dal codice che posti non si può dedurre perché questo accada. devi verificare i parametri passati al database se sono corretti.

    Potrebbe esserci anche un errore nella query. L'eccezione verrebbe gestita ma di fatto la funzione ritorna false. E probabilmente ricaricando la pagina non vedi l'errore.
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  3. #3
    Quote Originariamente inviata da ciro78 Visualizza il messaggio
    a parte che il session_start va messo sempre come prima istruzione.
    è chiaro che il messaggio di errore che ottieni è perché databaseContainsAuthor restituisce false. ora dal codice che posti non si può dedurre perché questo accada. devi verificare i parametri passati al database se sono corretti.

    Potrebbe esserci anche un errore nella query. L'eccezione verrebbe gestita ma di fatto la funzione ritorna false. E probabilmente ricaricando la pagina non vedi l'errore.
    io seguito alla lettera quello che dice il libro, e il codice che ho copiato e preso dal file zippato del sito che gestisce la lezione che si trova sul libro,
    Io non stavo riuscendo a capire, la query che controlla email e password dove si trovi, perchè in questa pagina di codice non la trovo, o sono ancora io abbastanza ignorante.

    12.jpg

  4. #4
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    guarda che è nel codice che hai postato la funzione che esegue la query. a mio avviso non ti sei letto bene né la documentazione del libro né quello che ho scritto io
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  5. #5
    Quote Originariamente inviata da ciro78 Visualizza il messaggio
    guarda che è nel codice che hai postato la funzione che esegue la query. a mio avviso non ti sei letto bene né la documentazione del libro né quello che ho scritto io


    si è vero c'è, è sopratutto ci doveva essere anche se io non lo trovavo perchè il codice è preso come sta dallo zip esempio che fornisce il libro,
    la cosa che mi fa pensare è se in caso il database non risponde al comando, ll'utente fittizio con email e password c'è ...aah sbattero un po..vediamo,
    Ultima modifica di adempius; 10-11-2013 a 02:17

  6. #6
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    ma io ti consiglio di scrivere bene in italiano sul forum. non ho capito una sillaba di quello che hai scritto. se non si capisce quello che scrivi difficilmente ti si può aiutare.
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  7. #7
    Quote Originariamente inviata da ciro78 Visualizza il messaggio
    ma io ti consiglio di scrivere bene in italiano sul forum. non ho capito una sillaba di quello che hai scritto. se non si capisce quello che scrivi difficilmente ti si può aiutare.
    Scusami,
    Allora stamattina ho controllato passo passo quello che sta scritto sul libro , e ho anche controllato il codice, non mi pare ci siano degli errori , l'unico dubbio è che forse il database (le tabelle) sono incomplete, anche se per quanto riguarda la creazione delle tabelle ho sempre seguito quello che diceva il libro. ...
    In definitiva ho questo problema che non mi fa accedere , mi dice errore password e email, ho un idea, potrei passarvi il lavoro per intero zippato, non so se posso postare qui sul forum il link del sito dove sta il libro e il codice
    Ultima modifica di adempius; 10-11-2013 a 16:14

  8. #8
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    Ho ricevuto il tuo messaggio privato il ché è un male. Generalmente le soluzioni e gli aiuti si danno in pubblico in modo da consentire anche ad altri utenti di usufruire la soluzione. Detto questo ho visto il capitolo 9 ma non c'è traccia dei file che dici. Senza manuale è chiaro che non so dove mettere le mani. Carica i file qui sul forum , compreso il dump sql, così si vede se è possibile aiutarti.
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  9. #9
    ok va bene, non sapevo se potevo mettere il link del sito, cmq ho caricato il capitolo9 su dropbox,
    https://www.dropbox.com/s/4678zifmoklb0gt/Capitolo9.rar
    nella cartella ce il file sql da caricare nel database,
    il nome utente sarebbe l'email, e la si trova nel database, sulla tabella author, mentre la password è gia convertita in md5 ma sarebbe 'passwordijdb'
    voglio capire se anche voi avete lo stesso problema
    per quanto riguarda il database se avete problemi nel capire i ruoli di ogni tabella basta che me lo chiedete

  10. #10
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    prima di scendere nel dettaglio.
    Tu qui fai
    codice:
        $password = md5($_POST['password'] . 'ijdb');
    Se nel form inserisci questa "passwordijdb" è normale che non funzioni. Dovresti inserire "password"
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.