• User

    login utente

    Salve a tutti
    ho costruito e testato in locale il mio sito chiab-gigi.it
    sia il login che 'nuovo utente' funzionano perfettamente

    ho caricato il tutto sul server (match.it)
    ho creato il database e la tabella 'iscritti'
    ho modificato, poichè in locale avevo altri parametri, il file 'config.php'

    faccio una prova: nuovo utente....verifico nel database e sono presente
    allora tento il login......non accetta user e pw

    sapete, per favore darmi una spiegazione
    grazie


  • User Attivo

    Difficile risponderti così senza avere info. Hai controllato i file di log? Come gestisci gli errori?

    Ti faccio notare che mi sono potuto registrare, o almeno il messaggio di errore così diceva, inserendo dati a casaccio.

    Dovresti fare una validazione lato client (con Javascript) ma più importante lato server (con PHP) sui dati (Es. formato email, campi obbligatori, etc...)


  • User

    grazie per la risposta flaviors200
    prima di proseguire devo chiederti:

    Ti faccio notare che mi sono potuto registrare, o almeno il messaggio di errore così diceva, inserendo dati a casaccio.

    R. io non ti vedo nel database, io mi vedo

    Dovresti fare una validazione lato client (con Javascript) ma più importante lato server (con PHP) sui dati (Es. formato email, campi obbligatori, etc...)

    R. ecco li avrei bisogno di una mano, se possibile
    ma posto comunque gli errori riscontrati finora

    comunque, come sopra, io mi vedo registrato nel database

    1. la tabella iscritti è cosi composta, questo è il dump.php per mysql
    CREATE TABLE IF NOT EXISTS `iscritti` (  `id_utente` int(4) NOT NULL AUTO_INCREMENT,
    `nome_utente` varchar(20) DEFAULT NULL,
    `password` varchar(40) DEFAULT NULL,
    `nome_reale` varchar(50) DEFAULT NULL,
    `email` varchar(80) DEFAULT NULL,
    `attivo` enum('0','1') NOT NULL default '0',
     PRIMARY KEY (`id_utente`),
     UNIQUE KEY `username` (`nome_utente`),
     UNIQUE KEY `email` (`email`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    
    1. anche se registrato, mi segnala come 'attivo =0'...-.. allora, per esperimento, forzo lo stato a 1

    2. risultato sono loggato e accedo alla pagina che deve essere visualizzata ma'.........se voglio uscire:

      msg: si è verificato un errore nella sintassi SQL; controlla il manuale che corrisponde alla versione del tuo server MySQL per la sintassi corretta da usare vicino a '' alla riga 1

    se vuoi posto i file config e functions......


  • User Attivo

    Allora andiamo per ordine:

    • Quando apro la pagina di registrazione ho già il messaggio "Il form non è stato compilato correttamente oppure stai cercando di registrarti con dei dati giá presenti nel database."
    • Se provo a compilare e inviare il modulo con stringhe a casaccio, mi spunta il messaggio "Registrazione conclusa ora puoi loggarti."

    Dovresti quindi fare una validazione lato server con le funzioni isset() o empty() e controllare la validità del formato dell'email con php.net/manual/en/function.filter-var.php oppure preg_match()

    Per la validazione lato client, se vuoi metterla, ti consiglio questa libreria parsleyjs.org/doc/examples/simple.html

    Si sarebbe meglio vedere il resto del codice, ma postalo tra i tag PHP oppure usa pastebin.com e poi incolla qui il link


  • User

    config.php
    [PHP]<?php# definizione delle costanti per l'autenticazione al DBMSdefine('DATA_HOST', 'localhost');define('DATA_UTENTE', 'xxxxxx_xgigi');define('DATA_PASS', 'xxxxxxxxx');define('DATA_DB', 'xxxxxxx_general');# classe per l'interazione con il databaseclass DATA_Class { # definizione del costruttore function __construct() { # connessione al DBMS $connessione = @mysql_connect(DATA_HOST, DATA_UTENTE, DATA_PASS) or die('Errore nella connessione: ' . mysql_error()); # selezione del database @mysql_select_db(DATA_DB, $connessione) or die('Errore dal database: ' . mysql_error()); }}// mail dell'amministratore$admin_email = "[email protected]";?>
    [/PHP]

    functions.php
    [PHP]<?php# inclusione del file di configurazione@include_once 'config.php';# definizione della classe che conterrà i metodi per la gestione degli iscritticlass Iscrizioni { # definizione del costruttore public function __construct() { # istanza della classe per la connessione al database $data = new DATA_Class(); }

    metodo per la registrazione public function registra($nome_reale, $nome_utente, $password, $email) { # tolgo eventuali spazi vuoti $nome_reale = trim($nome_reale); $nome_utente = trim($nome_utente); $password = trim($password); # verifico che il modulo sia stato compilato if (strlen($nome_reale) == 0 || strlen($nome_utente) == 0 || strlen($password) == 0) return false; else { # cifratura della password $password = @sha1($password); # confronto degli input con i dati contenuti in tabella $query = @mysql_query("SELECT id_utente FROM iscritti WHERE nome_utente = '$nome_utente' OR email = '$email'") or die('Errore: ' . mysql_error()); # controllo sulla presenza di corrispondenze prodotte dal confronto $conta = @mysql_num_rows($query); # se il confronto non genera corrispondenze.. if ($conta == 0) { # ..si procede con la registrazione.. $risultato = @mysql_query("INSERT INTO iscritti(nome_utente, password, nome_reale, email) VALUES ('$nome_utente', '$password','$nome_reale','$email')") or die('Errore: ' .mysql_error()); return $risultato; }else{ # ..altrimenti l'esito della registrazione sarà negativo return false; } } }

    metodo per l'autenticazione public function verifica_login($email_o_nome_utente, $password) { # cifratura della password $password = @sha1($password); # confronto degli input con i dati contenuti in tabella $query = @mysql_query("SELECT id_utente FROM iscritti WHERE (email = '$email_o_nome_utente' OR nome_utente='$email_o_nome_utente') AND password = '$password'") or die('Errore: ' . mysql_error()); # controllo sulla presenza di una corrispondenza prodotta dal confronto $conta = @mysql_num_rows($query); # se il confronto genera una corrispondenza.. if ($conta == 1) { # ..viene generata la sessione di login.. $risultato = @mysql_fetch_object($query); $_SESSION['login'] = true; $_SESSION['id_utente'] = $risultato->id_utente; return true; }else{ # ..altrimenti l'esito dell'autenticazione sarà negativo return false; } }

    metodo per la visualizzazione del nome dell'utente loggato public function mostra_utente($id_utente) { # estrazione del nome reale sulla base dell'identificatore memorizzato in sessione $query = @mysql_query("SELECT nome_reale FROM iscritti WHERE id_utente = $id_utente") or die('Errore: ' . mysql_error()); $risultato = @mysql_fetch_object($query); # stampa a video del nome reale dell'utente echo $risultato->nome_reale; }

    metodo per il controllo sulla sessione public function verifica_sessione() { # il metodo restituisce l'informazione relativa alla sessione a patto che questa sia stata inizializzata if(isset($_SESSION['login'])) { return $_SESSION['login']; }else{ return false; } } # metodo per il logout # la sessione viene distrutta a seguito di uno specifico input dell'utente public function esci() { $_SESSION['login'] = FALSE; @session_destroy(); } }?>[/PHP]

    immagine dati phpMyAdmin: drive.google.com/open?id=1vG_SbSfmhj5EkU-0OJAx7KPQKq_Inn2e
    image


  • User Attivo

    Forse meglio se posti il codice bello indentato su pastebin. Non riesco a capirlo proprio :bho:

    Vedo che utilizzi ancora le funzioni native di mysql, ormai sono deprecate da tanto e rimosse in PHP7, usa la classe PDO piuttosto opp mysqli


  • User

    grazie per la pazienza
    in primis non posso pubblicare link o altro (gt vuole iscrizione e io sn disoccupato e nn posso spendere)
    proviamo cosi e vediamo se mi dai una dritta per rimediare

    config.php

    <?php# definizione delle costanti per l'autenticazione al DBMS
    define('DATA_HOST', 'localhost');
    define('DATA_UTENTE', 'mio nome utente');
    define('DATA_PASS', 'mia pw');
    define('DATA_DB', 'nome db');

    classe per l'interazione con il database

    class DATA_Class {

    definizione del costruttore

    function __construct() {
    # connessione al DBMS
    $connessione = @mysql_connect(DATA_HOST, DATA_UTENTE, DATA_PASS) or die('Errore nella connessione: ' . mysql_error());
    # selezione del database
    @mysql_select_db(DATA_DB, $connessione) or die('Errore dal database: ' . mysql_error());
    }
    }
    // mail dell'amministratore
    $admin_email = "[email protected]";
    ?>

    functions.php

    <?php# inclusione del file di configurazione
    @include_once 'config.php';

    definizione della classe che conterrà i metodi per la gestione degli iscritti

    class Iscrizioni {

    definizione del costruttore

    public function __construct()
    {
    # istanza della classe per la connessione al database
    $data = new DATA_Class();
    }

    metodo per la registrazione

    public function registra($nome_reale, $nome_utente, $password, $email)
    {
    # tolgo eventuali spazi vuoti
    $nome_reale = trim($nome_reale);
    $nome_utente = trim($nome_utente);
    $password = trim($password);
    # verifico che il modulo sia stato compilato
    if (strlen($nome_reale) == 0 || strlen($nome_utente) == 0 || strlen($password) == 0) return false;
    else {
    # cifratura della password
    $password = @sha1($password);
    # confronto degli input con i dati contenuti in tabella
    $query = @mysql_query("SELECT id_utente FROM iscritti WHERE nome_utente = '$nome_utente' OR email = '$email'") or die('Errore: ' . mysql_error());
    # controllo sulla presenza di corrispondenze prodotte dal confronto
    $conta = @mysql_num_rows($query);
    # se il confronto non genera corrispondenze..
    if ($conta == 0)
    {
    # ..si procede con la registrazione..
    $risultato = @mysql_query("INSERT INTO iscritti(nome_utente, password, nome_reale, email) VALUES ('$nome_utente', '$password','$nome_reale','$email')") or die('Errore: ' .mysql_error());
    return $risultato;
    }else{
    # ..altrimenti l'esito della registrazione sarà negativo
    return false;
    }
    }
    }

    metodo per l'autenticazione

    public function verifica_login($email_o_nome_utente, $password)
    {
    # cifratura della password
    $password = @sha1($password);
    # confronto degli input con i dati contenuti in tabella
    $query = @mysql_query("SELECT id_utente FROM iscritti WHERE (email = '$email_o_nome_utente' OR nome_utente='$email_o_nome_utente') AND password = '$password'") or die('Errore: ' . mysql_error());
    # controllo sulla presenza di una corrispondenza prodotta dal confronto
    $conta = @mysql_num_rows($query);
    # se il confronto genera una corrispondenza..
    if ($conta == 1)
    {
    # ..viene generata la sessione di login..
    $risultato = @mysql_fetch_object($query);
    $_SESSION['login'] = true;
    $_SESSION['id_utente'] = $risultato->id_utente;
    return true;
    }else{
    # ..altrimenti l'esito dell'autenticazione sarà negativo
    return false;
    }
    }

    metodo per la visualizzazione del nome dell'utente loggato

    public function mostra_utente($id_utente)
    {
    # estrazione del nome reale sulla base dell'identificatore memorizzato in sessione
    $query = @mysql_query("SELECT nome_reale FROM iscritti WHERE id_utente = $id_utente") or die('Errore: ' . mysql_error());
    $risultato = @mysql_fetch_object($query);
    # stampa a video del nome reale dell'utente
    echo $risultato->nome_reale;
    }

    metodo per il controllo sulla sessione

    public function verifica_sessione()
    {
    # il metodo restituisce l'informazione relativa alla sessione a patto che questa sia stata inizializzata
    if(isset($_SESSION['login']))
    {
    return $_SESSION['login'];
    }else{
    return false;
    }
    }

    metodo per il logout

    la sessione viene distrutta a seguito di uno specifico input dell'utente

    public function esci() {
    $_SESSION['login'] = FALSE;
    @session_destroy();
    }
    }
    ?>

    il database del sito/server si identifica come localhost

    ciao