Pagina 6 di 7 PrimoPrimo ... 4567 UltimoUltimo
Visualizzazione risultati 151 fino 180 di 184
Like Tree7Likes

Discussione: Login PHP non indirizza alla pagina privata

  1. #151
    relettronico non  connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in /membri/relettronico/gestionesupplenze/Visualizzazionesupplenze.php on line 130

    Warning: mysqli_stmt_get_result() expects parameter 1 to be mysqli_stmt, boolean given in /membri/relettronico/gestionesupplenze/Visualizzazionesupplenze.php on line 131

    Warning: mysqli_stmt_error() expects parameter 1 to be mysqli_stmt, boolean given in /membri/relettronico/gestionesupplenze/Visualizzazionesupplenze.php on line 133

  2. #152
    mzanella  connesso ora AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,141

    Predefinito

    La riga 130 questa, giusto?
    Codice PHP:
    mysqli_stmt_bind_param($stmt"ss"$codice_meccanografico$data); 
    In questo caso controlla di aver controllato eventuali errori dopo aver preparato lo statement (righe precedenti alla 130):
    Codice PHP:
    $stmt mysqli_prepare($conn$query);
    if (!
    $stmt) {
        die(
    "Errore nella preparazione della query: " mysqli_error($conn));


    I suggerimenti che do pi spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  3. #153
    relettronico non  connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Non capisco cosa possa essere

    Codice PHP:
    <?php  
    error_reporting
    (E_ALL); 
    define('DBHOST''localhost'); 
    define('DBUSER''relettronico'); 
    define('DBPASS'''); 
    define('DBNAME''my_relettronico'); 

    // Connessione alla base di dati  
    $conn mysqli_connect(DBHOSTDBUSERDBPASSDBNAME); 
    if (!
    $conn) { 
        die(
    "Connection failed : " mysqli_connect_error); 


    // Verifica la presenza del codice meccanografico 
    if (!isset($_GET['codice_meccanografico']) || empty($_GET['codice_meccanografico'])) { 
        die(
    "Codice meccanografico non inserito"); 

     
    $codice_meccanografico $_GET['codice_meccanografico']; 
    // Se  stata selezionata una data, recupera le supplenze 
    if (isset($_GET['data']) && !empty($_GET['data'])) { 
        
    $data $_GET['data']; 
       
    $query "SELECT * FROM supplenze JOIN scuola ON supplenze.id_scuola = scuola.id_scuola " 
               
    "WHERE supplenze.pubblico = 1 " 
               
    "AND scuola.codice_meccanografico = ? " 
               
    "AND supplenze.data = ?"

        
    $stmt mysqli_prepare($conn$query); 
         
    if (!
    $stmt) {
        die(
    "Errore nella preparazione della query: " mysqli_error($conn));
    }  
    mysqli_stmt_bind_param($stmt"ss"$codice_meccanografico$data); 
        
    $result mysqli_stmt_get_result($stmt); 
        if (!
    $result) {
            die(
    "Errore durante l'esecuzione della query: " mysqli_stmt_error($stmt));
        }} 
    ?>

  4. #154
    mzanella  connesso ora AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,141

    Predefinito

    Mi sono accorto che mancava un pezzo
    Codice PHP:
    // Se  stato selezionato un intervallo di date, recupera le supplenze
    if (isset($_GET['data']) && !empty($_GET['data'])) {
        
    $data $_GET['data'];
        
        
    $query "SELECT * FROM supplenze JOIN scuole ON supplenze.id_scuola = scuole.id_scuola "
               
    "WHERE supplenze.pubblico = 1 "
               
    "AND scuole.codice_meccanografico = ? "
               
    "AND supplenze.data = ?";
        
    $stmt mysqli_prepare($conn$query);
        if (!
    $stmt) {
            die(
    "Errore nella preparazione della query: " mysqli_error($conn));
        }

        if (
    mysqli_stmt_bind_param($stmt"ss"$codice_meccanografico$data)) {
            die(
    "Errore nel binding dei parametri: " mysqli_stmt_error($stmt));
        }

        if (!
    mysqli_stmt_execute($stmt)) {
            die(
    "Errore durante l'esecuzione della query: " mysqli_stmt_error($stmt));
        }

        
    $result mysqli_stmt_get_result($stmt);
        if (!
    $result) {
            die(
    "Errore durante l'esecuzione della query: " mysqli_stmt_error($stmt));
        }

    Prova e riporta eventuali errori.

    I suggerimenti che do pi spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  5. #155
    relettronico non  connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    uscito "erore nel binding dei parametri"

  6. #156
    mzanella  connesso ora AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,141

    Predefinito

    Mi aspettavo una descrizione dell'errore. Usiamo mysqli_report per mostrare tutti gli errori:
    Codice PHP:
    // Se  stato selezionato un intervallo di date, recupera le supplenze
    if (isset($_GET['data']) && !empty($_GET['data'])) {
        
    $data $_GET['data'];
        
    mysqli_report(MYSQLI_REPORT_ALL);
        
        
    $query "SELECT * FROM supplenze JOIN scuole ON supplenze.id_scuola = scuole.id_scuola "
               
    "WHERE supplenze.pubblico = 1 "
               
    "AND scuole.codice_meccanografico = ? "
               
    "AND supplenze.data = ?";
        
    $stmt mysqli_prepare($conn$query);
        if (!
    $stmt) {
            die(
    "Errore nella preparazione della query: " mysqli_error($conn));
        }

        if (
    mysqli_stmt_bind_param($stmt"ss"$codice_meccanografico$data)) {
            die(
    "Errore nel binding dei parametri: " mysqli_stmt_error($stmt));
        }

        if (!
    mysqli_stmt_execute($stmt)) {
            die(
    "Errore durante l'esecuzione della query: " mysqli_stmt_error($stmt));
        }

        
    $result mysqli_stmt_get_result($stmt);
        if (!
    $result) {
            die(
    "Errore durante l'esecuzione della query: " mysqli_stmt_error($stmt));
        }


    I suggerimenti che do pi spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  7. #157
    relettronico non  connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Non descrive nessun errore

  8. #158
    mzanella  connesso ora AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,141

    Predefinito

    C'era un errore di battitura, mancava un "!":
    Codice PHP:
    // Se  stato selezionato un intervallo di date, recupera le supplenze
    if (isset($_GET['data']) && !empty($_GET['data'])) {
        
    $data $_GET['data'];
        
    mysqli_report(MYSQLI_REPORT_ALL);
        
        
    $query "SELECT * FROM supplenze JOIN scuole ON supplenze.id_scuola = scuole.id_scuola "
               
    "WHERE supplenze.pubblico = 1 "
               
    "AND scuole.codice_meccanografico = ? "
               
    "AND supplenze.data = ?";
        
    $stmt mysqli_prepare($conn$query);
        if (!
    $stmt) {
            die(
    "Errore nella preparazione della query: " mysqli_error($conn));
        }

        if (!
    mysqli_stmt_bind_param($stmt"ss"$codice_meccanografico$data)) {
            die(
    "Errore nel binding dei parametri: " mysqli_stmt_error($stmt));
        }

        if (!
    mysqli_stmt_execute($stmt)) {
            die(
    "Errore durante l'esecuzione della query: " mysqli_stmt_error($stmt));
        }

        
    $result mysqli_stmt_get_result($stmt);
        if (!
    $result) {
            die(
    "Errore durante l'esecuzione della query: " mysqli_stmt_error($stmt));
        }

    Armati di pazienza

    I suggerimenti che do pi spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  9. #159
    relettronico non  connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Siamo allo stesso problema dell'altra volta... io ho una supplenza nel db il giorno 2018-08-02 invio la data 02/08/2018 e non mi mostra nessuna supplenza per io inserisco lo stesso formato non saprei... prova tu...

  10. #160
    relettronico non  connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Poi io ho messo le sessioni ma come faccio a dire che l'utente relettronico inserisce le supplenze sotto "id_scuola=1" mentre mzanella inserisce le supplenze sotto "id_scuola=2"?

    Io ho pensato di memorizzare invece dell'id l'id_scuola (mettendo username e password nella tabella "scuola" e poi attraverso una query tipo questa della visualizzazione inserire tramite $id_scuola = $_SESSION['id_scuola']
    query= "INSERT INTO supplenze (id_scuola, doc_ass, [...]) VALUES ($id_scuola, $doc_ass, [...])"

    Non so se la sintassi corretta e nemmeno se possibile fare cosi dimmi tu..

  11. #161
    mzanella  connesso ora AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,141

    Predefinito

    Siamo allo stesso problema dell'altra volta... io ho una supplenza nel db il giorno 2018-08-02 invio la data 02/08/2018 e non mi mostra nessuna supplenza per io inserisco lo stesso formato non saprei... prova tu...
    L'ho provato e funziona correttamente, dunque i problemi devono essere altrove.
    A questo punto mysqli_report(MYSQLI_REPORT_ALL); non serve pi e va tolto.

    Poi io ho messo le sessioni ma come faccio a dire che l'utente relettronico inserisce le supplenze sotto "id_scuola=1" mentre mzanella inserisce le supplenze sotto "id_scuola=2"?
    Si tratta di mettere in relazione gli utenti con le scuole. Come prima cosa occorre decidere se:
    • ciascun utente pu gestire una sola scuola
    • un utente pu gestire un o pi scuole

    Mi sembra di capire che siamo nel primo caso, allora bisogna aggiungere una colonna alla tabella degli utenti in cui memorizzare l'identificativo della scuola che quell'utente gestisce.
    In questo modo, per ogni utente, saprai qual' l'id della scuola da utilizzare.

    I suggerimenti che do pi spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  12. #162
    relettronico non  connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    La scuola identificata dall'id_scuola poi da qui non ho capito come devo continuare con il codice.

    Quindi come faccio a capire il problema dello script?

  13. #163
    mzanella  connesso ora AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,141

    Predefinito

    La scuola identificata dall'id_scuola poi da qui non ho capito come devo continuare con il codice.
    Aggiungi la colonna id_scuola alla tabella degli utenti.
    Tutto il resto andr fatto per gradi: quando un utente si registra dovr indicare a quale scuola afferisce, durante gli inserimenti delle supplenze bisogner leggere l'id dell'utente dalla sessione, usarlo per recuperare l'id della scuola "associata" a quell'utente, quindi usare quest'ultimo per indicare a quale scuola la supplenza si riferisce.

    Quindi come faccio a capire il problema dello script?
    Facile: non puoi perch non c'!
    Il problema deve stare altrove. Nomi delle tabelle? Nomi dei campi? I dati arrivano correttamente tramite GET? Pu essere di tutto, dall'esterno impossibile stabilirlo.

    I suggerimenti che do pi spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  14. #164
    relettronico non  connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    E la query quindi come diventerebbe?
    Cambia solo la query o cambia tutto lo script?

    Se i nomi fossero coretti e i dati in GET arriva che altri problemi potrebbero esserci? Io vedo che nella pagina ce un ">" un errore di battitura che potrebbe causare l'errore?

  15. #165
    mzanella  connesso ora AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,141

    Predefinito

    E la query quindi come diventerebbe?
    Cambia solo la query o cambia tutto lo script?
    Nello script a cui stiamo lavorando ora, ovvero la visualizzazione, non cambia nulla, neanche la query.
    Cambia lo script di inserimento, nel quale bisogna prima leggere l'id della scuola dell'utente e poi usarlo nell'inserimento vero e proprio. Qualcosa come
    Codice:
    SELECT id_scuola FROM utenti WHERE id = <id utente ottenuto dalla sessione>
    Se i nomi fossero coretti e i dati in GET arriva che altri problemi potrebbero esserci? Io vedo che nella pagina ce un ">" un errore di battitura che potrebbe causare l'errore?
    Vero, c' un ">" di troppo, ma solo un errore di battitura nell'HTML, non collegato al problema.
    Se i nomi, i dati che arrivano tramite GET e lo script sono tutti corretti, allora la situazione pi probabile che sia la base di dati ad essere sbagliata.
    Il campo data di tipo DATE? I valori contenuti in ciascun campo sono corretti? Le righe che vorresti fossero mostrate hanno 1 come valore della colonna "pubblico"? Hai popolato la tabella scuole con la lista dei codici meccanografici e relativi id?

  16. #166
    relettronico non  connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Questo quello che mi da il var dump:

    array(2) {
    ["codice_meccanografico"]=>
    string(22) "$codice_meccanografico"
    ["data"]=>
    string(10) "2018-08-05"
    }


    La tabella scuola popolata con codice meccanografico e relativo id_scuola e i nomi delle colonne e delle tabelle mi sembrano corretti (mi uscirebbe l'errore se un tabella o una colonna non esistesse, ho controllato manualmente e c' tutto)

  17. #167
    mzanella  connesso ora AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,141

    Predefinito

    Ah-ha! Allora sono i dati tramite GET che non arrivano correttamente, come immaginavo all'inizio. Anzich il codice meccanografico ti arriva la stringa "$codice_meccanografico".

    Ora facile, il problema nel form. Questa riga
    Codice HTML:
    <input type="hidden" name="codice_meccanografico" value="$codice_meccanografico">
    va modificata in
    Codice HTML:
    <input type="hidden" name="codice_meccanografico" value="<?php echo $codice_meccanografico; ?>">

  18. #168
    relettronico non  connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Esattamente come pensavi grazie mille!
    Funziona alla perfezione avevo pensato che (come la data sotto) dovesse ricevere il valore e non la stringa ma con poca esperienza credevo che fosse corretto anche cosi

    Ora nell'inserimento devo aggiungere la query:

    Codice PHP:
    $id= ($_SESSION['id']);
    SELECT id_scuola FROM users WHERE id $id 
    Il prepared statement non so se si scrive cos dimmi tu...

    Poi io aggiungo questa query e nell'altra query dovrei richiamare l'id_scuola preso dal SELECT un prepared statement normale o cambia?

  19. #169
    mzanella  connesso ora AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,141

    Predefinito

    Era la classica svista

    Ora dai pure un'occhiata alla documentazione dei prepared statement con mysqli.

    Prima di tutto "definisci" la query, usando dei punti di domanda come segnaposto per i valori:
    Codice PHP:
    $query "SELECT id_scuola FROM users WHERE id = ?"
    quindi crei il prepared statement, un "oggetto" a cui poi "assocerai" il/i valore/i per le interrogazioni:
    Codice PHP:
    $stmt mysqli_prepare($conn$query);
    if (!
    $stmt) {
        die(
    "Errore nella preparazione della query: " mysqli_error($conn));

    Associ l'id letto dalla sessione:
    Codice PHP:
    if (!mysqli_stmt_bind_param($stmt"i"$_SESSION['id'])) {
        die(
    "Errore nel binding dei parametri: " mysqli_stmt_error($stmt));

    Esegui il prepared statement:
    Codice PHP:
    if (!mysqli_stmt_execute($stmt)) {
        die(
    "Errore durante l'esecuzione della query: " mysqli_stmt_error($stmt));

    Ne estrai il risultato:
    Codice PHP:
    $result mysqli_stmt_get_result($stmt);
    if (!
    $result) {
        die(
    "Errore durante l'esecuzione della query: " mysqli_stmt_error($stmt));

    E (finalmente) ottieni il dato che cercavi:
    Codice PHP:
    $result mysqli_stmt_get_result($stmt);
    if (!
    $result) {
        die(
    "Errore durante l'esecuzione della query: " mysqli_stmt_error($stmt));
    }

    $row mysqli_fetch_array($result);
    if (!
    $row) {
        die(
    "Nessun utente con l'id specificato");
    }

    $id_scuola $row['id_scuola']; 
    Nell'inserimento vero e proprio potrai quindi usare $id_scuola assieme agli altri parametri.

    I suggerimenti che do pi spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  20. #170
    relettronico non  connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Mi da "Nessun utente con l'id specificato"

  21. #171
    mzanella  connesso ora AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,141

    Predefinito

    Riguardando alcuni vecchi messaggi ho visto che prima usavi $_SESSION['id_utente'], non $_SESSION['id'], il problema potrebbe essere questo, prova a dare un'occhiata.

    I suggerimenti che do pi spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  22. #172
    relettronico non  connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Io ho $_SESSION['id_utente']= $row['id']

    Ho provato con id_utente ma mi da lo stesso errore per io non ho la colonna id_utente ho id e id_scuola centra qualcosa?

  23. #173
    mzanella  connesso ora AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,141

    Predefinito

    Verifica che la sessione contenga l'informazione corretta:
    Codice PHP:
    var_dump($_SESSION); 
    cosa mostra?

    I suggerimenti che do pi spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  24. #174
    relettronico non  connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Non mostra nulla non stampa nessuna scritta

  25. #175
    L'avatar di alemoppo
    alemoppo non  connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    11,207

    Predefinito

    Ma in alto nella pagina hai messo session_start() ?

    Ciao!

  26. #176
    relettronico non  connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Si l'ho messo il session_start()

  27. #177
    mzanella  connesso ora AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,141

    Predefinito

    Quindi la sessione avviata, ma non contiene dati. Molto strano, dovrebbe stampare almeno il vettore vuoto.

  28. #178
    relettronico non  connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Ecco il vettore. Non usciva perch c era un errore di battitura.

    array(1) { ["id_utente"]=> &NULL }

  29. #179
    mzanella  connesso ora AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,141

    Predefinito

    Chiaro, l'errore nel login: non viene inserito correttamente l'id dell'utente nella sessione.
    Mostra il codice del login aggiornato :)

    I suggerimenti che do pi spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  30. #180
    relettronico non  connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Ecco il login:
    Codice PHP:
    <?php
    session_start
    ();
    error_reporting(E_ALL);      
    define('DBHOST''localhost'); 
    define('DBUSER''relettronico'); 
    define('DBPASS'''); 
    define('DBNAME''my_relettronico'); 

    // Connessione alla base di dati
    $conn mysqli_connect(DBHOST,DBUSER,DBPASS,DBNAME); 
    if (!
    $conn) {
        die(
    "Connection failed : " mysqli_connect_error);
    }

    // Verifica che username e password siano stati ricevuti

    if (!isset($_POST['username'], $_POST['password'])) {
        die(
    "Missing username or password.");
    }

    $username $_POST['username']; 
    $password $_POST['password']; 




    $query "SELECT * FROM users WHERE username = ?"
    $stmt mysqli_prepare($conn$query); 
    mysqli_stmt_bind_param($stmt"s"$username); 
    mysqli_stmt_execute($stmt); 
    $result mysqli_stmt_get_result($stmt);
    $row mysqli_fetch_array($resultMYSQLI_ASSOC);  



    if (
    password_verify($password$row['password'])) {
        
    $_SESSION['id_utente'] = $row['id'];
        
    header("Location:pannellodiamministrazione.php");
      
          }else { 
        echo 
    "Password errata"

    mysqli_stmt_close($stmt); 

    ?>

Pagina 6 di 7 PrimoPrimo ... 4567 UltimoUltimo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •