Visualizzazione dei risultati da 1 a 10 su 10

Discussione: registrazione e login

  1. #1

    registrazione e login

    ho seguito questa guida http://forum.html.it/forum/showthrea...readid=1009266 , quando un utante inserisce i propri dati per registrarsi esce scritto Unknown column 'user_username' in 'where clause' dove sbaglio ?
    grazie in anticipo per la risposta

  2. #2
    mi aiutate x piacere....

  3. #3
    Posta il codice che hai scritto, altrimenti così più che dirti che non trova la colonna user_username non possiamo...

  4. #4
    <?php
    require('connessionedb.php'); //o le vostre istruzioni per il collegamento al database
    /*La prima cosa da notere è l'utilizzo di mysql_real_escape_string():
    - questa funzione ci permette di inserire nel db (se utiliziamo mysql)
    il contenuto della variabile post esattamnete così com'è,
    senza creare problemi di sintassi durante l'inserimento.Si veda l'esempio sotto*/
    $user = mysql_real_escape_string($_POST['user']); /* Se il valore contenuto in $_POST['user'] è: D'amico questo viene trasformato in: D'amico*/
    $user_mail = $_POST['user']; // Viceversa se usiamo il metodo tradizionale di assegnazione
    //rimane il valore originale assegnato: D'amico
    //quello che in questo esempio ci serve per inviare una mail all'utente,
    //contenente l'username originale (non trasformato).
    $pass = mysql_real_escape_string(md5($_POST['pass']));
    //La funzione md5 ci permette di trasformare il contenuto di una stringa
    //in una sequenza di 32 simboli alfa nimerici detta hash.
    //Noi utiliziamo questa funzione per memorizzare nel db NON il valore originale della password,
    //ma il suo hash.
    //N.B. Questo significa che una volta persa (dimenticata) la password non è più possibile
    //risalire al suo valore originale.
    $pass_mail = $_POST['pass'];
    $firstname = mysql_real_escape_string($_POST['firstname']);
    $lastname = mysql_real_escape_string($_POST['lastname']);
    //Poi verifichiamo che l'username e l'email non siano gia presenti nel db
    $query = "SELECT * FROM user " .
    "WHERE user_username = '$user' " .
    "OR user_email = '$pass' ";
    $result = mysql_query($query) or die (mysql_error());
    if (mysql_num_rows($result) != 0)
    {
    while ($row = mysql_fetch_array($result))
    {
    //username già presente nel db
    if ($row['user_username'] == $user)
    {
    echo "

    ";
    echo "L'username, " . $row['user_username'] . " è già in uso da un altro utente, scegliere uno diverso";
    echo "</p>";
    }
    //email già presente nel db
    if ($row['user_email'] == $_POST['email'])
    {
    echo "

    ";
    echo "La casella E-mail, " . $row['user_email'] . " è già presente nel Data Base, scegliere una diversa";
    echo "</p>";
    }
    }
    //rimandiamo l'utente alla pagina precedente
    echo "

    ";
    echo "<a href=\"registrazione.php\">";
    echo "<<< Clicca qui per ritornare alla pagina precedente";
    echo "</a>";
    echo "</p>";
    exit();
    }
    //Se invece username e email non sono presenti nel db procediamo con l'inserimanto
    else
    {
    switch ($_GET['action'])
    {
    case "add":
    switch ($_GET['type'])
    {
    case "user":
    $sql = "INSERT INTO user
    (user_firstname,
    user_lastname,
    user_username,
    user_password,
    user_email)
    VALUES
    ('$firstname',
    '$lastname',
    '$user',
    $pass',
    '" . $_POST['email'] . "')";
    $users = mysql_query($sql) or die(mysql_error());
    $id = mysql_insert_id(); // recuperiamo l'id (contenuto nel campo user_id) dell'utente appena inserito
    break;
    }
    break;
    }
    }

    //Andiamo avanti assegnando un valore casuale alla variabile $msgid:
    //un valore identificativo che verrà inserito nella tabella confirm e permetterà la conclusione dell'iscirzione.
    //Anche in questo caso utilizziamo la funzione md5, generando però un hash casuale, perchè l'hash generato sia diverso per ogni iscrizione.
    $temp = gettimeofday();
    $msec = (int) $temp["usec"];
    $msgid = md5(time() . $msec);
    $ins = "INSERT INTO confirm
    (confirm_validator,
    confirm_userid)
    VALUES
    ('$msgid',
    '$id')";
    $res = mysql_query($ins) or die(mysql_error());
    ?>
    <html>
    <head>
    <title>Inserimento dati</title>
    </head>
    <body>
    <?php
    /*Arrivati a questo punto non ci resta che spedire un'email all'utente (all'indirizzo fornito
    in fase di registrazione) che contiene:la sua password in chiaro,il suo username ed un link
    alla pagina confirm_reg.php.*/
    //Vediamo come funziona
    $to = $_POST["email"];
    $toname = $_POST["firstname"];
    $subject = "Completa la tua registrazione";

    /* Prima di continuare apriamo una piccola parentesi, chiarendo un concetto molto semplice:
    - Se vogliamo inviare un email che contiene formattazioni html, bisogna ricorrere all'utilizzo di una classe.
    - Se si vuol mandare un'email semplice che non contiene formattazioni html, non è necessario usare una classe
    Nel nostro esempio, abbiamo scelto di inviare un'eamil, utlizzando una classe che definisce
    il corpo del messaggio e le intestazione del messaggio.
    Forniamo un link ad una classe mail completa e performante
    http://phpmailer.sourceforge.net */

    //Definiamo la classe che definisce il corpo del messaggio ($message) e le intestazione del messaggio ($headers)
    $boundary = "==MP_Bound_xyccr948x==";
    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: multipart/alternative; boundary=\"$boundary\"\r\n";
    $headers .= "From: quellochevuoi@tuoserver.it\r\n"; //inseriamo l'indirizzo email del mittente, cioè il nostro
    $html_msg = "<center>";
    $html_msg .= "<table width=\"500\" border=0 cellpadding=\"4\">";
    $html_msg .= "<tr><td align=\"center\">";
    $html_msg .= "</td></tr>";
    $html_msg .= "<tr><td>Questi sono i dati della tua registrazione:";
    $html_msg .= "</td></tr><tr><td>Username: <font color=\"red\">" . $user_mail . "</font>";
    $html_msg .= "</td></tr><tr><td>Password: <font color=\"red\">" . $pass_mail . "</font>";
    $html_msg .= "</td></tr><tr><td align=\"center\">";
    $html_msg .= "</td></tr></table></center>";
    $confirmmessage = "Salve " . $toname . ",\n\n";
    $confirmmessage .= "per completare la tua registrazione devi cliccare sul link sottostante:\n\n";
    $confirmmessage .= $html_msg . "\n\n";
    // Attenzione! Qui sotto dobbiamo inserire il percorso esatto che porta alla nostra pagina confirm_reg.php
    $confirmmessage .= "<a href=\"http://localhost/percorso pagina confirm_reg.php" .
    "?id=$msgid\">Clicca qui per confermare la tua registrazione</a>";
    $message = "This is a Multipart Message in MIME format\n";
    $message .= "--$boundary\n";
    $message .= "Content-type: text/html; charset=iso-8859-1\n";
    $message .= "Content-Transfer-Encoding: 7bit\n\n";
    $message .= $confirmmessage . "\n";
    $message .= "--$boundary--";
    $mailsent = mail($to, $subject, $message, $headers);
    if ($mailsent)
    {
    echo "Salve" . $toname . ",
    ";
    echo "Un messaggio è stato inviato all'indirizzo " . $to . " da te fornito.

    ";
    echo "IMPORTANTE:
    ";
    echo "Per completare la registrazione al sito devi aprire la tua casella e-mail, leggere il messaggio di conferma e cliccare sul link che troverai all'interno.

    ";
    } else {
    echo "Errore durante l'invio dell'e-mail.";
    }
    ?>
    </body>
    </html>

  5. #5
    questo è il codice che faccio?

  6. #6
    Domanda banalissima, hai creato la tabella su mysql? Hai controllato che esista realmente il campo user_username nella tabella?

  7. #7
    no la tabella non me la fa creare dovrebbe essere secondo le istruzioni questa
    <?php
    require('connessionedb.php'); //o le vostre istruzioni per il collegaamento al db

    $query = "CREATE TABLE user (
    user_id INT(11) NOT NULL AUTO_INCREMENT,
    user_firstname VARCHAR (50) NOT NULL,
    user_lastname VARCHAR (50) NOT NULL,
    user_username VARCHAR (11) NOT NULL,
    user_password VARCHAR (32) NOT NULL,
    user_email VARCHAR (50) NOT NULL,
    user_reg TINYINT (1) NOT NULL default 0,
    PRIMARY KEY (user_id))";
    $users = mysql_query($query) or die(mysql_error());

    $qry = "CREATE TABLE confirm (
    confirm_id INT(11) NOT NULL AUTO_INCREMENT,
    confirm_validator VARCHAR (32) NOT NULL,
    confirm_userid INT (11) NOT NULL default 0,
    PRIMARY KEY (confirm_id))";
    $confirm = mysql_query($qry) or die(mysql_error());
    ?>

  8. #8
    sono riuscito a creare le tabelle ora mi da un altro errore durante la registrazione : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '', 'tony1616@hotmail.it')' at line 11

  9. #9
    Codice PHP:
    case "user":
    $sql "INSERT INTO user
    (user_firstname,
    user_lastname,
    user_username,
    user_password,
    user_email)
    VALUES
    ('
    $firstname',
    '
    $lastname',
    '
    $user',
    $pass',
    '" 
    $_POST['email'] . "')"
    Manca un'apostrofo subito dopo '$user', e prima di $pass.


  10. #10
    graziee mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.