• User

    [php]<?php
    // Includo la connessione al database
    require('config.php');

    // Se il modulo viene inviato...
    if(isset($_POST['login']))
    {

    // Dati Inviati dal modulo
    $user = (isset($_POST['username'])) ? trim($_POST['username']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['password'])) ? trim($_POST['password']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
    $user = addslashes($user);
    $pass = addslashes($pass);
    }

    // Crypto la password e la confronto con quella nel database
    $pass = md5($pass);

    // Controllo l'utente esiste
    $query = mysql_query("SELECT idusers FROM users WHERE username = '$user' AND password = '$pass' LIMIT 1");

    // Se ha trovato un record
    if(mysql_num_rows($query) == 1)
    {
    // prelevo l'id dal database
    $login = mysql_fetch_array($query);

    // Creo una variabile di sessione
    $_SESSION['login'] = $login['idusers'];

    // reindirizzo l'utente
    header('Location: privata.php');
    exit;
    }
    // se non esiste da l'errore
    else
    die('Nome Utente o Password errati');[/php]


  • ModSenior

    Fai un echo cosi:
    [php]
    <?php
    // Includo la connessione al database
    require('config.php');

    // Se il modulo viene inviato...
    if(isset($_POST['login']))
    {

    // Dati Inviati dal modulo
    $user = (isset($_POST['username'])) ? trim($_POST['username']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['password'])) ? trim($_POST['password']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
    $user = addslashes($user);
    $pass = addslashes($pass);
    }

    // Crypto la password e la confronto con quella nel database
    $pass = md5($pass);

    // Controllo l'utente esiste
    $query = mysql_query("SELECT idusers FROM users WHERE username = '$user' AND password = '$pass' LIMIT 1");
    echo "SELECT idusers FROM users WHERE username = '$user' AND password = '$pass' LIMIT 1";

    // Se ha trovato un record
    if(mysql_num_rows($query) == 1)
    {
    // prelevo l'id dal database
    $login = mysql_fetch_array($query);

    // Creo una variabile di sessione
    $_SESSION['login'] = $login['idusers'];

    // reindirizzo l'utente
    header('Location: privata.php');
    exit;
    }
    // se non esiste da l'errore
    else
    die('Nome Utente o Password errati');
    [/php]
    Così da controllare che i dati dal modulo arrivino correttamente.


  • User

    Ciao TheDarkita, oggi visto che ho un po di tempo voglio riproporti il problema che ti stavo parlando alla pagina 25 di questo tutorial che riguarda il check box: ecco il codice dove [php]$accept = addslashes($accept);[/php] è lo script dove dobrebbe spuntare l'utente al momento della registrazione, ma come ti stavo accennando anche senza spuntare la check box l'utente riesce a registrarsi cosa che non va bene (e nel Db risulta "no" visto che ho messo una query "yes" "no"):

    [php]<?php
    session_start();
    // Includo la connessione al database
    require('config.php');
    // Se il modulo viene inviato...
    if(isset($_POST['registra']))
    {

    // Dati Inviati dal modulo
    $user = (isset($_POST['user'])) ? trim($_POST['user']) : '';    // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : '';    // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
    $mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : '';    // Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''
    

    $accept = (isset($_POST['accept'])) ? trim($_POST['accept']) : ''; // Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
        $user = addslashes($user);
        $pass = addslashes($pass);
        $mail = addslashes($mail);
    

    $accept = addslashes($accept);
    }

    // Controllo il Nome Utente
    if(strlen($user) < 4 || strlen($user) > 12)
        die('Nome Utente troppo corto, o troppo lungo! Si prega ritornare indietro cliccando la freccia sul Vostro browser');
    // Controllo la Password
    elseif(strlen($pass) < 4 || strlen($pass) > 12)
        die('Password troppo corta, o troppo lunga; caratteri minimi 4 / massimi 12! Si prega ritornare indietro cliccando la freccia sul Vostro browser');
    // Controllo l'email
    elseif(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $mail))
        die('ATTENZIONE: Email non valida, si prega ripettere la procedura di registrazione! Si prega ritornare indietro cliccando la freccia sul Vostro browser');
    // Controllo il nome utente non sia già occupato
    elseif(mysql_num_rows(mysql_query("SELECT user FROM utenti WHERE user = '$user' LIMIT 1")) == 1)
        die('Nome Utente non disponibile! Si prega ritornare indietro cliccando la freccia sul Vostro browser');
    // Controllo l'indirizzo email non sia già registrato
    elseif(mysql_num_rows(mysql_query("SELECT mail FROM utenti WHERE mail = '$mail' LIMIT 1")) == 1)
        die('Questo indirizzo email risulta gi&agrave; registrato ad un altro utente! Si prega ritornare indietro cliccando la freccia sul Vostro browser'); 
    // Registrazione dell'utente nel database
    else
    {
    
        // Crypt della password per garantire una miglior sicurezza
        $pass = md5($pass);
    
        // Query per l'inserimento dell'utente nel database
        $strSQL = "INSERT INTO utenti (user,pass,mail,accept)";
        $strSQL .= "VALUES('$user', '$pass', '$mail', '$accept')";
        mysql_query($strSQL) OR die("Errore 003. <br>
    

    Possibile cause: <br>

    • non ha spuntato la casella per l'informativa. <br>

    • non ha inserito i suoi dati correttamente.<br>

    • errore del sistema.<br>
      Si prega tornare indietro e riprovare a registrarsi o<br>
      contattare l'amministratore.<br>
      Failure because: ".mysql_error());

      // Reindirizzo l'utente ad una pagina di conferma della registrazione
      header('Location: registrato.php');
      exit;
      

      }
      }
      ?>[/php]

    Questa è la parte tra i tag Body:
    [html]<form action="" method="post">
    <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
    <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
    <input name="mail" type="text" id="mail" value="Em@il" onfocus="if(this.value=='Em@il') this.value='';" /><br />
    <span class="Stile14">Accetto l' <a href="/informativa.php">informativa</a></span>
    <input name="accept" type="checkbox" id="accept" checked="checked" value="1" />
    <br />
    <input name="registra" type="submit" value="Registrati" />
    <input type="submit" name="reset" id="reset" value="Reset Campi" />
    <br />
    </form></center>
    <div align="center">[/html]

    Se non ricordo male nella pagina 26 di questo tutorial Zomer indicava di mettere questo codice nello script:
    [php]//Controllo che ha accettato la privacy
    if(!isset($_POST['checkbox']))
    die('Non hai spuntato la checbox');
    [/php]

    Ok adesso domanda di rito, se il codice è quello giusto dove dovrei inserirlo per esattezza nello script php?

    Nel caso non fosse giusto potresti ripropormi il codice.

    Grazie


  • ModSenior

    Cosi, dovrebbe andare:
    [php]
    <?php
    session_start();
    // Includo la connessione al database
    require('config.php');
    // Se il modulo viene inviato...
    if(isset($_POST['registra']))
    {

    // Dati Inviati dal modulo
    $user = (isset($_POST['user'])) ? trim($_POST['user']) : '';    // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : '';    // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
    $mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : '';    // Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''
    

    $accept = (isset($_POST['accept'])) ? trim($_POST['accept']) : ''; // Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
        $user = addslashes($user);
        $pass = addslashes($pass);
        $mail = addslashes($mail);
    

    $accept = addslashes($accept);
    }

    // Controllo il Nome Utente
    if(strlen($user) < 4 || strlen($user) > 12)
        die('Nome Utente troppo corto, o troppo lungo! Si prega ritornare indietro cliccando la freccia sul Vostro browser');
    // Controllo la Password
    elseif(strlen($pass) < 4 || strlen($pass) > 12)
        die('Password troppo corta, o troppo lunga; caratteri minimi 4 / massimi 12! Si prega ritornare indietro cliccando la freccia sul Vostro browser');
    // Controllo l'email
    elseif(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $mail))
        die('ATTENZIONE: Email non valida, si prega ripettere la procedura di registrazione! Si prega ritornare indietro cliccando la freccia sul Vostro browser');
    // Controllo il nome utente non sia già occupato
    elseif(mysql_num_rows(mysql_query("SELECT user FROM utenti WHERE user = '$user' LIMIT 1")) == 1)
        die('Nome Utente non disponibile! Si prega ritornare indietro cliccando la freccia sul Vostro browser');
    // Controllo l'indirizzo email non sia già registrato
    elseif(mysql_num_rows(mysql_query("SELECT mail FROM utenti WHERE mail = '$mail' LIMIT 1")) == 1)
        die('Questo indirizzo email risulta gi&agrave; registrato ad un altro utente! Si prega ritornare indietro cliccando la freccia sul Vostro browser'); 
    

    elseif($accept != 1)
    die('Devi accettare l'informativa');
    // Registrazione dell'utente nel database
    else
    {

        // Crypt della password per garantire una miglior sicurezza
        $pass = md5($pass);
        
        // Query per l'inserimento dell'utente nel database
        $strSQL = "INSERT INTO utenti (user,pass,mail,accept)";
        $strSQL .= "VALUES('$user', '$pass', '$mail', '$accept')";
        mysql_query($strSQL) OR die("Errore 003. <br>
    

    Possibile cause: <br>

    • non ha spuntato la casella per l'informativa. <br>

    • non ha inserito i suoi dati correttamente.<br>

    • errore del sistema.<br>
      Si prega tornare indietro e riprovare a registrarsi o<br>
      contattare l'amministratore.<br>
      Failure because: ".mysql_error());

      // Reindirizzo l'utente ad una pagina di conferma della registrazione
      header('Location: registrato.php');
      exit;
      

      }
      }
      ?>
      [/php]


  • User

    Sei una belva TheDarkita. Non ho fatto in tempo a cliccare "aggiorna" sul mio pc che tu mi hai già dato la risposta. Ma che fai dormi anche con il pc. E pensare che mia moglie s' arrabbia di brutto 😮 se stò il tempo utile per vedere tutte le mie email ed i siti (ossia più di tre ore solo a casa e quando sono al lavoro non ne parliamo!) :bigsmile:.
    Comunque grazie sei sempre The best nel settore.
    Ah dimenticavo avrei bisogno di un moderatore. Se t'interessa
    fammi un fischio.
    Ciao e grazie ancora.


  • ModSenior

    Figurati. 😉


  • User

    Ok alla grande funziona.
    Notte


  • User

    Niente mi restituisce semplicemente una cosa del genere

    SELECT idusers FROM users WHERE username = '' AND password = 'd41d8cd98f00b204e9800998ecf8427e' LIMIT 1Nome Utente o Password errati


  • ModSenior

    Incolla qui pure il form.
    Avrai messo un name diverso da username per il campo di testo del nome utente.


  • User

    LOGIN

    [php]<?php
    // Includo la connessione al database
    require('config.php');

    // Se il modulo viene inviato...
    if(isset($_POST['login']))
    {

    // Dati Inviati dal modulo
    $user = (isset($_POST['username'])) ? trim($_POST['username']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['password'])) ? trim($_POST['password']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
    $user = addslashes($user);
    $pass = addslashes($pass);
    }

    // Crypto la password e la confronto con quella nel database
    $pass = md5($pass);

    // Controllo l'utente esiste
    $query = mysql_query("SELECT idusers FROM users WHERE username = '$user' AND password = '$pass' LIMIT 1");
    echo "SELECT idusers FROM users WHERE username = '$user' AND password = '$pass' LIMIT 1";

    // Se ha trovato un record
    if(mysql_num_rows($query) == 1)
    {
    // prelevo l'id dal database
    $login = mysql_fetch_array($query);

    // Creo una variabile di sessione
    $_SESSION['login'] = $login['idusers'];

    // reindirizzo l'utente
    header('Location: privata.php');
    exit;
    }
    // se non esiste da l'errore
    else
    die('Nome Utente o Password errati');
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ".w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns=".w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Login</title>
    </head>
    <body>
    <form action="" method="post">
    <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
    <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
    <input name="login" type="submit" value="Login" /><br />
    </form>
    </body>
    </html>[/php]


  • ModSenior

    Prova cosi:
    [php]
    <?php
    // Includo la connessione al database
    require('config.php');

    // Se il modulo viene inviato...
    if(isset($_POST['login']))
    {

    // Dati Inviati dal modulo
    $user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['password'])) ? trim($_POST['password']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
    $user = addslashes($user);
    $pass = addslashes($pass);
    }

    // Crypto la password e la confronto con quella nel database
    $pass = md5($pass);

    // Controllo l'utente esiste
    $query = mysql_query("SELECT idusers FROM users WHERE username = '$user' AND password = '$pass' LIMIT 1");

    // Se ha trovato un record
    if(mysql_num_rows($query) == 1)
    {
    // prelevo l'id dal database
    $login = mysql_fetch_array($query);

    // Creo una variabile di sessione
    $_SESSION['login'] = $login['idusers'];

    // reindirizzo l'utente
    header('Location: privata.php');
    exit;
    }
    // se non esiste da l'errore
    else
    die('Nome Utente o Password errati');
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ".w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns=".w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Login</title>
    </head>
    <body>
    <form action="" method="post">
    <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
    <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
    <input name="login" type="submit" value="Login" /><br />
    </form>
    </body>
    </html>
    [/php]


  • User

    Niente nome utente o pass errati, comunque non penso sia quello il problema perchè ti ripeto se al posto di $user $pass li cambio direttamente con dei valori presenti nel database lui esegue l'accesso automaticamente,mentre se li metto è come se i dati si perdessero da qualche altra parte. E comunque scusa, se io ho nel database presente una colonna username penso sia sbagliato mettere solo user, o no?


  • User

    w w w.ecobrokerservices.it/db.jpg

    l'immagine riassume il mio db


  • ModSenior

    Pure il name della password lo hai messo sbagliato non ci avevo fatto caso:
    [php]
    <?php
    // Includo la connessione al database
    require('config.php');

    // Se il modulo viene inviato...
    if(isset($_POST['login']))
    {

    // Dati Inviati dal modulo
    $user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
    $user = addslashes($user);
    $pass = addslashes($pass);
    }

    // Crypto la password e la confronto con quella nel database
    $pass = md5($pass);

    // Controllo l'utente esiste
    $query = mysql_query("SELECT idusers FROM users WHERE username = '$user' AND password = '$pass' LIMIT 1");

    // Se ha trovato un record
    if(mysql_num_rows($query) == 1)
    {
    // prelevo l'id dal database
    $login = mysql_fetch_array($query);

    // Creo una variabile di sessione
    $_SESSION['login'] = $login['idusers'];

    // reindirizzo l'utente
    header('Location: privata.php');
    exit;
    }
    // se non esiste da l'errore
    else
    die('Nome Utente o Password errati');
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ".w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns=".w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Login</title>
    </head>
    <body>
    <form action="" method="post">
    <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
    <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
    <input name="login" type="submit" value="Login" /><br />
    </form>
    </body>
    </html>
    [/php]
    Devi utilizzare user e non username perchè i campi di testo hanno quel name.


  • User

    Quindi non si riferiscono alla tabella del database, comunque non va, che dici faccio prima ad andare a zappare la terra?


  • ModSenior

    Non mi sembra di vedere errori, fai un echo e vediamo che fa:
    [php]
    <?php
    // Includo la connessione al database
    require('config.php');

    // Se il modulo viene inviato...
    if(isset($_POST['login']))
    {

    // Dati Inviati dal modulo
    $user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
    $user = addslashes($user);
    $pass = addslashes($pass);
    }
    echo "$user - $pass <br>"
    // Crypto la password e la confronto con quella nel database
    $pass = md5($pass);

    // Controllo l'utente esiste
    $query = mysql_query("SELECT idusers FROM users WHERE username = '$user' AND password = '$pass' LIMIT 1") or die(mysql_error());
    echo"SELECT idusers FROM users WHERE username = '$user' AND password = '$pass' LIMIT 1";

    // Se ha trovato un record
    if(mysql_num_rows($query) == 1)
    {
    // prelevo l'id dal database
    $login = mysql_fetch_array($query);

    // Creo una variabile di sessione
    $_SESSION['login'] = $login['idusers'];

    // reindirizzo l'utente
    //header('Location: privata.php');
    exit;
    }
    // se non esiste da l'errore
    else
    die('Nome Utente o Password errati');
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ".w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns=".w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Login</title>
    </head>
    <body>
    <form action="" method="post">
    <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
    <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
    <input name="login" type="submit" value="Login" /><br />
    </form>
    </body>
    </html>
    [/php]


  • User

    Posso far notare una cosa curiosa,ho modificato il form di registrazione, ho effettuato una registrazione con successo e successivamente il login, e funziona, come mai non va se invece inserisco i dati direttamente da database?

    edit* forse ho capito, la password nel db non era codificata md5,quindi quando io facevo il login lui la cercava semplicemente così come io l'avevo inserita, giusto?


  • ModSenior

    Si, la password nel database deve essere in hash md5.


  • User

    Ehhhh è per quello che non mi effettuava il login, ne siamo usciti finalmente grazie per il supporto, altra domanda a questo punto, come inserisco direttamente una pass in md5?


  • ModSenior

    Ti fai uno scriptino in locale per restituirti la password in md5, oppure una pagina di inserimento come la registrazione per inserirli.