Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    197

    registrazione login e verifica via email...

    In questo periodo vado alla grande con i post!!! comunque:
    Salve per fare login registrazione e email di conferma mi ero affidato a un vecchio post di html.it questo di preciso, incontro nell'esecuzione lo stesso errore di cui si parla alla fine della prima pagina ma dato che non dicono la soluzione perchè risolvono il problema in privato vi chiederi aiuto.
    Lo script lo potetevedere in azione qui e vedrete che se andate su registrazione e vi registrate vi da un errore. sapreste mica dirmi come risolverlo?
    Scusate il disturbo ma questo script è eccellente per quello che devo fare e non vorrei non risolvere grazie in anticipo.
    per quanto riguarda il codice è presente nel primo url sopra citato.
    G181

  2. #2

    posta il codice

    Puoi postare il codice della tua pagina web

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    197
    adesso lo posto ma come citato prima e uguale a quello del primo link che ho messo...
    G181

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    197
    index.php
    Codice PHP:
    <?php
    session_start
    ();
    require(
    'connessionedb.php'); //o le vostre istruzioni per il collegaamento al db

    if(!isset($_SESSION['log'])) 
    {
     
    $_SESSION['log'] = 0;
    }
    if(!isset(
    $_SESSION['username'])) 
    {
     
    $_SESSION['username'] = "Non Registrato";
    }

    // Ora controlliamo se $_SESSION['log']!=1, cioè se l'utente non è logato
    if ($_SESSION['log'] != 1)
    {
     
    // Se non lo è procediamo come segue:
     
    if(isset($_POST['pass']) && isset($_POST['user']))
     {
      
    $qry_pass mysql_real_escape_string(md5($_POST['pass']));
      
    $qry_user mysql_real_escape_string($_POST['user']);
      
    /*Da notare l'utilizzo di md5 per trasformare di nuovo il valore della
      password passata nel suo hash per poterla confrontare con quella contenuta nel db.
      Poi procediamo verificando username, password e stato registrazione */
      
    $query "SELECT * " .
                
    "FROM user " .
                
    "WHERE user_username = '$qry_user' " .
                
    "AND user_password = '$qry_pass' " .
                
    "AND user_reg = 1 ";
      
    $results mysql_query($query) or die (mysql_error());

      if(
    mysql_num_rows($results) != 0)
      { 
       
    $row mysql_fetch_array($results);
       
    $_SESSION['log'] = 1// utente logato
       
    $_SESSION['username'] = $row['user_username'];
      }
     }
    }
    echo 
    "Utente on-line: [b]" $_SESSION['username'] . "[/b]

    "
    ;
    ?>


    <html>
    <head>
    <title>Home Page</title>

    <SCRIPT LANGUAGE="JavaScript">
    function ver()
       {
       for (i=0; i<document.forms[0].elements.length; ++i)
          if(document.forms[0].elements[i].value == "")
             {
             alert("Inserire username e password!");
             document.forms[0].elements[i].focus();
             return false;
             }
       return true; 
       }
    </SCRIPT>
    </head>
    <body>



    <?php
    /*Infine notiamo come a seconda del valore contenuto in $_SESSION['log'] 0/1
    possiamo visulizzare alcune parti html piuttosto che altre.*/
    if ($_SESSION['log'] != 1)
    {
    ?>
    <form name="login" action="index.php" method="post" onSubmit="return ver();">
    Username

    <input name="user" type="text" size="15" maxlength="11">


    Password

    <input name="pass" type="password" maxlength="8">


    <input type="submit" name="submit" value="Login">
    </form>


    </p>


    Non ti sei ancora registrato?</p>


    [url="registrazione.php"]Clicca qui e registrati subito![/url]</p>
    <?php
    }else {
    ?>
    <form name="logout" action="logout.php" method="post">
    // onSubmit="return ver();" non serve
    <input type="submit" name="submit" value="Logout">
    </form>
    <?php
    }
    ?>
    </body>
    </html>
    data_insert.php
    Codice PHP:
    <?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, [b]" $row['user_username'] . "[/b] è 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, [b]" $row['user_email'] . "[/b] è 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
    [url]http://phpmailer.sourceforge.net[/url] */

    //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: [email]quellochevuoi@tuoserver.it[/email]\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 [b]" $to "[/b] 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>
    G181

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    197
    confirm_reg.php
    Codice PHP:
    <?php
    require('connessionedb.php'); //o le vostre istruzioni per il collegamento al database

    $id $_GET['id'];
    /* $id contiene il valore di $msgid di 32 caratteri alfanumerici che abbiamo inviato all'utente dalla pagina data_insert.php:
    $confirmmessage .= "<a href=\"http://localhost/percorso pagina confirm_reg.php" .
      "?id=$msgid\">Clicca qui per confermare la tua registrazione</a>";*/
    $sql "SELECT * FROM confirm WHERE confirm_validator = '$id'";
    $query mysql_query($sql) or die(mysql_error());
    $pcarray mysql_fetch_array($query); // memoriziamo i risultati nell'array $pcarray

    if (!is_array($pcarray)) 
    {
      echo 
    "Oops! Niente da confermare!";
      exit;
    }

    // Se invece l'id passato è corretto: 
    $user_id $pcarray["confirm_userid"]; 
    //Quindi aggiorniamo la tabella user
    $update "UPDATE user SET " .
              
    "user_reg = 1 " .
              
    "WHERE user_id = '$user_id'";
    $result mysql_query($update) or die(mysql_error());
    ?>
    <html>
    <head>
    <title>Iscrizione confermata!</title>
    </head>
    <body>
    <h3>Complimenti, la tua iscrizione al sito è stata confermata!</h3>



    [url="index.php"]Clicca qui per tornare alla Home Page ed effettuare il log-in[/url]</p>
    </body>
    </html>
    logout.php
    Codice PHP:
    <?php
    session_start
    (); //Inizializza i dati di sessione creando una sessione (o riprendendo quella corrente)
    //per info su session_start - rivedere l'inizio del file registrazione.php
    session_destroy(); //Distrugge la sessione corrente e tutte le variabili di sessione in essa contenute
     
    echo "

    [b]Logout Effettuato![/b]

    "
    ;
     echo 
    "<a href=\"index.php\">";
     echo 
    "<<< Clicca qui per ritornare alla Home Page";
     echo 
    "</a></p>"
    ?>
    G181

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    197
    registrazione.php
    Codice PHP:
    <?php
    session_start
    (); /* session_start - Inizializza i dati di sessione 
    creando una sessione (o riprendendo quella corrente). 
    N.B. session_start() va messo all'inizio delle pagine php e prima del codice HTML*/
    /*$_SESSION['log'] è la prima variabile di sessione che utilizzeremo.
    In questo esempio $_SESSION['log'] contiene un valore asseganto nella pagina di login,
    che vedremo più avnti, che in pratica assume due valori (da noi stabiliti): 0 se
    l'utente non ha effettuato il login e 1 se l'utente ha effettuato il login.
    Nell'esempio concreto impediamo ad un utente logato di effettuare un'altra iscrizione*/
    if ($_SESSION['log'] == 1)
    {
     echo 
    "

    [b]Sei già registrato![/b]
    Per effettuare una nuova registrazione" 
    .
          
    "ritorna alla Home Page ed effettua il Logout.

    "
    ;
     echo 
    "<a href=\"index.php\"><<< Clicca qui per ritornare alla Home Page</a></p>";
     exit();
    }
    ?>
    <html>
    <head>
    <title>Registrazione</title>
    <!-- Per comodita e completezza, nello svolgimento degli script,
    utilizzeremo 2 javascript che ci permettono di contollare le seguenti azioni:
    1. function ver() - la quale controlla che tuttti i campi del nostro form
    di inserimento siano compilati.
    2. function ControllaMail() - la quale controlla che l'email inserita sia
    solo sintatticamente corretta (e non se realmente esistente).
    Possiamo dire che il loro utilizzo in questo caso risulta
    essere più adatto, rispetto a script equivalenti in php, in quanto gli javascript
    vengono eseguiti sul lato client, mentre quelle php
    passano al server (lato server) e poi restituite all'utente sotto forma di html. -->
    <SCRIPT LANGUAGE="JavaScript">
    function ver()
       {
       for (i=0; i<document.forms[0].elements.length; ++i)
          if(document.forms[0].elements[i].value == "")
             {
             alert("Riempire tutti i campi!");
             document.forms[0].elements[i].focus();
             return false;
             }
       return true; 
       }
    </SCRIPT>
    <SCRIPT>
    function ControllaMail()
       {
       EmailAddr = document.modulo.email.value;
       Filtro = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-]{2,})+.)+([a-zA-Z0-9]{2,})+$/;
       if (Filtro.test(EmailAddr))
          return true;
       else
          {
          alert("Controlla l'indirizzo e-mail inserito!");
          document.modulo.email.focus();
          return false;
          }
       }
    </SCRIPT>
    </head>
    <body>



    <!-- Procediamo costruendo il nostro form che passerà le informazioni inserite alla pagina data_insert.php. 
    Da notare: 
    1. action="data_insert.php?action=add&type=user" - che ci permette di passare le 2 variabili action e type, 
    con i loro rispettivi valori, add e user 
    2. il richiamo delle funzioni javascript al premere del pulsante "Conferma": onSubmit="return (ver() && ControllaMail());" -->
    <form name="modulo" action="data_insert.php?action=add&type=user" method="post" onSubmit="return (ver() && ControllaMail());">
    Nome

    <input name="firstname" type="text" size="25" maxlength="30">


    Cognome

    <input name="lastname" type="text" size="25" maxlength="30">


    Username

    <input name="user" type="text" size="20" maxlength="11">

     
    Password

    <input name="pass" type="password" maxlength="8">


    E-mail

    <input name="email" type="text" size="50" maxlength="50">


    <input type="submit" name="Submit" value="Conferma">
    </form>
    </p>
    </body>
    </html>
    e il codice di creazione tabella mysql
    Codice PHP:
    <?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());
    ?>
    Lo so che sto chiedendo veramente tanto ma se potete almeno provate lo script sul mio sito al link riportato prima e se non vi viene in mente niente quandando l'errore a meno che nn vi interessi lo script lasc iate stare.
    G181

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    197
    l'errore è questo: 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 '', 'blibbox@gmail.com')' at line 11
    G181

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    197
    risolto grazie mille per tutto comunque e buon anno!!!
    G181

  9. #9
    chi fa da sè fa per tre!! Ma almeno posta l'errore

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.