Pagina 3 di 7 PrimoPrimo 12345 ... UltimoUltimo
Visualizzazione risultati 61 fino 90 di 184
Like Tree7Likes

Discussione: Login PHP non indirizza alla pagina privata

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

    Predefinito

    Da 0 risultati ho guardato la tabella e phpmyadmin li salva con il trattino e YYYY-MM-DD mentre quello del form html me li salva con lo slash DD/MM/YYYY può essere questo?

    Ho creato uno script di registrazione ma non saprei se funziona potresti dirmi se può andare bene e dove devo inserire l'hash?

    Codice PHP:
    <?php
    session_start
    ();
    //connessione al database
    if($_POST["password"] != "" && $_POST["email"] != ""){
    $query = mysqli_query($conn, "INSERT INTO users (password,email)
    VALUES ('"
    .$_POST["password"]."','".$_POST["email"]."')")
    or die (
    "query di registrazione non riuscita".mysql_error());
    }else{
    header('location:index.php?action=registration&errore=Non hai compilato tutti i campi obbligatori');
    }
    if(isset(
    $query)){
    $_SESSION["logged"]=true;
    header("location:index.php");
    }else{
    echo
    "non ti sei registrato con successo";
    }
    ?>
    ma poi nel login devo mettere lo script che hai inviato tu in qualche messaggio precedente?

  2. #62
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Da 0 risultati ho guardato la tabella e phpmyadmin li salva con il trattino e YYYY-MM-DD mentre quello del form html me li salva con lo slash DD/MM/YYYY può essere questo?
    È certamente questo, ma è molto molto strano perché le specifiche di HTML (<input type="date">, HTML Input Types) indicano che il form deve inviare i dati nel formato YYYY-MM-DD.

    Ho creato uno script di registrazione ma non saprei se funziona potresti dirmi se può andare bene e dove devo inserire l'hash?
    Un po' caotico, si può migliorare (ricorda di aggiungere la connessione alla base di dati):
    Codice PHP:
    <?php
    session_start
    ();

    // Connessione al database

    // Errore se mancano email o password
    if (!isset($_POST['email'], $_POST['password']) || empty($_POST['email']) || empty($_POST['password'])) {
    header('location:index.php?action=registration&errore=Non hai compilato tutti i campi obbligatori');
    exit;
    }

    // Inserimento
    $email = $_POST['email'];
    $password = passhword_hash($_POST['password'], PASSWORD_DEFAULT);

    $query = "INSERT INTO users (email, password) VALUES(?, ?)";
    $stmt = mysqli_prepare($conn, $query);
    mysqli_stmt_bind_param($stmt, "ss", $email, $password);
    mysqli_stmt_execute($stmt) or die(mysqli_stmt_error($stmt));

    // Redirect
    $_SESSION['logged'] = true;
    header("location:index.php");
    ?>
    ma poi nel login devo mettere lo script che hai inviato tu in qualche messaggio precedente?
    Sì, per l'autenticazione fai riferimento al messaggio di ieri.

    I suggerimenti che do più spesso:


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

    Predefinito

    La registrazione mi da questo errore:

    Column 'username' cannot be null

    Per la data non ho anora trovato l'errore ma lo sistemerò

  4. #64
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Su AlterVista le impostazioni mysql sono restrittive: non è possibile eseguire una query senza specificare tutti i campi non default.

    Quindi nella tabella aggiungi ai campi che non specifichi un valore di default; nel tuo caso username potresti impostarlo ad una stringa vuota (non ho letto tutta la discussione, ma nella registrazione non richiedi anche l'username?).

    Ciao!
    mzanella likes this.

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

    Predefinito

    ora la registrazione funziona ma il login con l'hash mi da questi errori:

    Warning: mysqli_stmt_execute() expects exactly 1 parameter, 0 given in /membri/relettronico/gestionesupplenze/login1.php on line 26

    Warning: mysqli_stmt_bind_result(): Number of bind variables doesn't match number of fields in prepared statement in /membri/relettronico/gestionesupplenze/login1.php on line 27

    Fatal error: Call to undefined function mysqli_fetch() in /membri/relettronico/gestionesupplenze/login1.php on line 28

    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(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();
    mysqli_stmt_bind_result($stmt, $row);
    mysqli_fetch($stmt);

    if (
    password_verify($password, $row['password'])) {
    echo
    "Credenziali corrette";
    }
    else {
    echo
    "Password errata";
    }

    mysqli_stmt_close($stmt);
    ?>

  6. #66
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Questa riga
    Codice PHP:
    mysqli_stmt_execute();
    va modificata in
    Codice PHP:
    mysqli_stmt_execute($stmt);

    I suggerimenti che do più spesso:


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

    Predefinito

    ora sono rimasti solo questi due errori
    Warning: mysqli_stmt_bind_result(): Number of bind variables doesn't match number of fields in prepared statement in /membri/relettronico/gestionesupplenze/login1.php on line 27

    Fatal error: Call to undefined function mysqli_fetch() in /membri/relettronico/gestionesupplenze/login1.php on line 28

  8. #68
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Pensandoci bene conviene usare mysqli_get_result anziché mysqli_bind_result. Sostituisci questo
    Codice PHP:
    mysqli_stmt_bind_result($stmt, $row);
    mysqli_fetch($stmt);
    con
    Codice PHP:
    $result = mysqli_stmt_get_result($stmt);
    $row = mysqli_fetch_array($result, MYSQLI_ASSOC);

    I suggerimenti che do più spesso:


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

    Predefinito

    Ora mi dice che la password è errata anche se io la inserisco giusta quindi penso di dover controllare la connessione al db le varie tabelle e i campi

  10. #70
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Fai un minimo di debug: guarda cosa valgono $password e $row['password'], vedi dove è il problema.

    Ciao!

  11. #71
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Suggerisco di verificare che la password che stai estraendo dalla base di dati sia stata inserita correttamente, ovvero che sia un hash compatibile con password_hash e non una password in chiaro o un hash generato in altro modo.

    I suggerimenti che do più spesso:


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

    Predefinito

    Ho inserito uno username e la password "prova" nella registrazione e la tabella è compilata con lo username e l'hash io ora nel login metto lo username e "prova" nella password e non funziona ma sono sicuro che la password sia corretta e che la riga sia giusta

  13. #73
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Hai seguito il suggerimento di alemoppo? Qual'è il valore di $password e $row['password'] quando effettui il test?

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

    Predefinito

    Non ho capito che test devo fare

  15. #75
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Citazione Originalmente inviato da relettronico Visualizza messaggio
    Non ho capito che test devo fare
    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Fai un minimo di debug: guarda cosa valgono $password e $row['password'], vedi dove è il problema.

    Ciao!
    Codice PHP:
    var_dump($password,$row['password']);
    Ciao!

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

    Predefinito

    Mi da questo errore:

    Notice: Undefined variable: row in /membri/relettronico/gestionesupplenze/login1.php on line 24
    string(5) "prova" NULL Password errata

  17. #77
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ti manca un pezzo di codice, oppure ci sono errori.
    Mostra il codice aggiornato

    I suggerimenti che do più spesso:


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

    Predefinito

    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(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'];


    var_dump($password,$row['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($result, MYSQLI_ASSOC);

    if (
    password_verify($password, $row['password'])) {
    echo
    "Credenziali corrette";
    }else {
    echo
    "Password errata";
    }
    mysqli_stmt_close($stmt);
    ?>

  19. #79
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Allora il problema è un altro: il var_dump va usato dopo aver assegnato un valore alle variabili che vuoi mostrare:
    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(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($result, MYSQLI_ASSOC);

    var_dump($password,$row['password']);

    if (
    password_verify($password, $row['password'])) {
    echo
    "Credenziali corrette";
    }else {
    echo
    "Password errata";
    }
    mysqli_stmt_close($stmt);
    ?>

    I suggerimenti che do più spesso:


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

    Predefinito

    Funziona tutto grazie! Il problema era che c'erano due password uguali su due stringhe diverse ho svuotato la tabella e ho registrato un nuovo utente con la nuova password e funziona grazie di tutto

  21. #81
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Non ho capito una cosa
    Codice PHP:
    session_start();
    ...
    $_SESSION['id_utente'] = $row['id'];
    Ho inserito questa riga dopo al password verify del login e sarebbero le sessioni per loggare gli utenti in diverse pagine private e nella pagina privata ho inserito solo session_start() dovrei aggiungere ancora qualcosa o non serviva neanche session_start?
    E cosa intendi che nel database dovrò prendre le informazioni delle diverse pagine che devo creare le copie delle tabelle?

  22. #82
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    La session_start serve in ogni script nel quale intendi accedere ai dati di sessione. Poiché le pagine private devono essere mostrate solo a condizione che l'utente sia autenticato (e dunque che esista una sessione in corso), hai certamente bisogno di session_start in ciascuna di esse.

    E cosa intendi che nel database dovrò prendre le informazioni delle diverse pagine che devo creare le copie delle tabelle?
    La sessione contiene l'identificato dell'utente connesso. Tutto il resto lo devi fare tu, eventualmente leggendo dalla base di dati (perché creare copie delle tabelle? ).

    Ad esempio, se vuoi avere una pagina che mostri i dati anagrafici dell'utente connesso, dovrai leggerne l'id dal vettore di sessione ed utilizzarlo per estrarre i dati dell'utente dalla tabella opportuna, quindi mostrali.

    I suggerimenti che do più spesso:


  23. #83
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Ora a me interessa mettere diverse pagine private senza pensare al db ho inserito questo:
    session_start();
    ...
    $_SESSION['id_utente'] = $row['id'];

    dopo il password_verify del login.
    Ora nella pagina privata cosa devo aggiungere?

    Io avevo pensato di creare due tabelle uguali ma separate per due utenti non di mischiare tutto

  24. #84
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Pagina privata:
    Codice PHP:
    session_start();

    if (!isset(
    $_SESSION['id_utente'])) {
    die(
    "Devi autenticarti per accedere a questa pagina.");
    }

    // Il resto della pagina...
    Io avevo pensato di creare due tabelle uguali ma separate per due utenti non di mischiare tutto
    A quale scopo? "Mischiare tutto" cosa?

    I suggerimenti che do più spesso:


  25. #85
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Nel senso che le supplenze del utente1 le metterei in una tabella diversa dall'utente2 non mettere i anella stessa tabella

  26. #86
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    E se in futuro avrai 100 utenti?

    Se non ho capito male il problema, dovresti semplicemente salvare tutto in un'unica tabella con un campo dove salvi l'id dell'utente associato.
    Quindi ricavi le supplenze dell'utente 1 con:
    Codice:
    SELECT * FROM tabella WHERE id_utente = 1
    Ciao!
    Ultima modifica di alemoppo : 30-07-2018 alle ore 21.08.33

  27. #87
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Quindi all'inserimento devo mettere di default id=1 per il primo utente e così via giusto?

    Ho un altro problema io ho un form per selezionare la data per selezionare i dati da una tabella vorrei usare lo stesso form per fare un inserimento solo che l'inserimento non è fatto nello stesso momento ma è fatto dopo però c'è gia l'action per la selezione e due non si possono mettere dovrei mettere i due script in uno unico ma poi come faccio a scrivere la tabella? Se la metto su una pagina a parte mi servirebbe una specie di action anche sulla tabella è possibile?

  28. #88
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Leggendo dubbi di questo tipo e quantità il consiglio che posso offrire è fermarsi un attimo, sospendere i lavori, e cercare di capire meglio come funzionano le basi di dati relazionali e la programmazione web in PHP.

    Quindi all'inserimento devo mettere di default id=1 per il primo utente e così via giusto?
    Ti riferisci all'inserimento di un utente o di una supplenza? In entrambi i casi non ci sono valori di default: quando inserisci un utente il campo id sarà un AUTO_INCREMENT gestito automaticamente, mentre per le supplenze sarà il codice a dover inserire l'id dell'utente interessato.

    Ho un altro problema io ho un form per selezionare la data per selezionare i dati da una tabella vorrei usare lo stesso form per fare un inserimento solo che l'inserimento non è fatto nello stesso momento ma è fatto dopo però c'è gia l'action per la selezione e due non si possono mettere dovrei mettere i due script in uno unico ma poi come faccio a scrivere la tabella? Se la metto su una pagina a parte mi servirebbe una specie di action anche sulla tabella è possibile?
    È improbabile che uno stesso form vada bene sia per un inserimento che per una lettura .
    L'approccio standard consiste nell'avere due form distinti con due action distinte che puntano dunque a due pagine/script PHP distinte, una delle quali si occupa della lettura, l'altra dell'inserimento.

    I suggerimenti che do più spesso:


  29. #89
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Mi riferisco alla supplenza. Intendo che quando viene aggiunta una supplenza da utente1 nella colonna "id_utente" si inserisca automaticamente "1" mentre se la inserisce l'utente2 nella colonna "id_utente" si inserisca automaticamente "2".


    Quindi poi nel SELECT ci sarà "SELECT FORM supplenze WHERE id_utente='$id_utente' AND pubblico='$pubblico'

  30. #90
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Sì, questo è un buon approccio!

    I suggerimenti che do più spesso:


Pagina 3 di 7 PrimoPrimo 12345 ... UltimoUltimo

Regole di scrittura

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