• 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.


  • User

    Posso fare una domanda?

    Ho adattato i script al mio caso,in pratica una volta effettuato il login, reindirizza ad una pagina di controllo in cui tramite query ogni utente accede solo ai propri file che gli sono stati assegnati tramite db.

    Il mio problema sorge perchè mi sono accorto che avendo per esempio messo sull'host una cartella /bancadati/foto.jpg

    e avendo assegnato questo file ad un cliente è tutto ok.

    Nel momento in cui io vado sul sito e aggiungo bancadati/foto.jpg accedo comunque al file,c'è un modo di mascherare la cartella e di renderla accessibile solamente a chi effettua il login? Perchè come va adesso mi ritrovo che se qualcuno conosce il link di un file ci può accedere comunque bypassando lo script login. Grazie!


  • ModSenior

    La pagina privata.php postata nel tutorial contiene già il controllo, ti basta utilizzare quello implementando gli altri controlli che hai detto di aver messo.


  • User Attivo

    Ciao thedark! ti vorrei chiedere una cosa, io ho il tuo script di attivazione (ovviamnte lo modificato) ma come mai mai nella tabella utneti campo attivazione non vedo nessun codice? e poi perchè mi dà questo errore

    Parse error: syntax error, unexpected T_VARIABLE in /membri/zomer/attivazione.php on line 47

    SCRIPT:
    h**p://zomer.altervista.org/attivazione.txt