Visualizzazione risultati 1 fino 17 di 17

Discussione: Errore query registrazione utenti [era: script php e connessione db]

  1. #1
    Guest

    Question Errore query registrazione utenti [era: script php e connessione db]

    Salve Ragazzi,
    sull mio sito web ho messo una funzione in php che permette la registrazione con email di conferma e Login.
    Per fare connettere il sito al db ho dovuto fare questo script che si chiama connessionedb.php , che è compilato in questo modo:

    Codice PHP:
    <?php
    $host
    ="localhost"; // Host name
    $username="starsun"; // Mysql username
    $password=""; // Mysql password
    $db_name="my_starsun"; // Database name
    $tbl_name="user"; // Table name

    // Connect to server and select databse.
    mysql_connect("$host", "$username", "$password")or die("cannot connect");
    mysql_select_db("$db_name")or die("cannot select DB");

    // username and password sent from form
    $myusername=$_POST['myusername'];
    $mypassword=$_POST['mypassword'];

    // To protect MySQL injection (more detail about MySQL injection)
    $myusername = stripslashes($myusername);
    $mypassword = stripslashes($mypassword);
    $myusername = mysql_real_escape_string($myusername);
    $mypassword = mysql_real_escape_string($mypassword);

    $sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
    $result=mysql_query($sql);

    // Mysql_num_row is counting table row
    $count=mysql_num_rows($result);
    // If result matched $myusername and $mypassword, table row must be 1 row

    if($count==1){
    // Register $myusername, $mypassword and redirect to file "data_insert.php"
    session_register("myusername");
    session_register("mypassword");
    header("location:data_insert.php");
    }
    else {
    echo
    "-";

    }
    ?>
    ho fatto le tabelle dell db con questo script che si chiama creatab.php :

    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());
    ?>
    e per fare la Registarzione invece questo script che si chiama 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
    "<p><b>Sei già registrato!</b><br>Per effettuare una nuova registrazione" .
    "ritorna alla Home Page ed effettua il Logout.<br><br>";
    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>
    <p>
    <!-- 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<br>
    <input name="firstname" type="text" size="25" maxlength="30"><br><br>
    Cognome<br>
    <input name="lastname" type="text" size="25" maxlength="30"><br><br>
    Username<br>
    <input name="user" type="text" size="20" maxlength="11"><br><br>
    Password<br>
    <input name="pass" type="password" maxlength="8"><br><br>
    E-mail<br>
    <input name="email" type="text" size="50" maxlength="50"><br><br>
    <input type="submit" name="Submit" value="Conferma">
    </form>
    </p>
    </body>
    </html>

    allora dopo la registrazione dovrebbe aprirsi un pagina che si chiama data_insert.php


    Questo script dovrebbe inviare la mail di conferma all email inserita.
    dentro ci deve essere un link che porta alla pagina confirm_reg.php
    che conferma la registrazione.

    ALLORA RAGAZZI Guardiamo il problema:
    quando clicco su registrazione e mi porta alla pagina di registrazione,inserisco i dati e continuo mi arriva questo messaggio:

    - 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 '', 'user1@mail.com')' at line 11
    Non sto capendo qualè il problema,forse sto sbagliando qualcosa in questi script?
    Allora vi ringrazio per l'attenzione...

    P.S:
    Per vedere il problema dall vivo visita la homepage
    http://www.starsun.altervista.org/index.php
    Provate a registrarvi e uscira' il problema...

    Grazie
    Ultima modifica di dreadnaut : 15-11-2010 alle ore 22.23.00 Motivo: +php

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,262

    Predefinito

    Il problema è
    - 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 '', 'user1@mail.com')' at line 11
    Se avviene durante la registrazione, devi guardare il codice della pagina di registrazione (che non hai postato) e controllare quella query, probabilmente INSERT qualcosa.

    Ipostesi: forse in una delle due tabelle c'è un campo di meno, rispetto a quello che lo script e le altre query prevedevano - così mysql si lamenta perché c'è un valore di troppo nella insert.

  3. #3
    Guest

    Predefinito

    la pagina di registrazione la ho messa...
    e lÌ sopra...
    grazie lo stesso
    ma qualè lo script dove c'e questo errore,perchè ho capito l'errore ma dove trovo il punto in cui si trova?
    dice nell rigo 11 ma in quale script? quello di registrazione o quello che viene dopo?
    o non è che l'errore sta nell file connessionedb.php?
    grazie

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,262

    Predefinito

    No, la pagina che registra gli utenti non l'hai messa.

    Hai messo quella che si connette al db e controlla il login, ed il form in cui l'utente inserisce i dati. Manca lo script che riceve i dati e li scrive nel database, che dovrebbe chiamarsi data_insert.php.

  5. #5
    Guest

    Predefinito data_insert.php

    Codice PHP:
    <?php
    require ('connessionedb.php');
    /*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
    "<p>";
    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
    "<p>";
    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 "<p>";
    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;
    }
    }
    $pass = mysql_real_escape_string(md5($_POST['pass']));
    //basterebbe
    $pass = md5($_POST['pass']);
    //in quanto $pass viene hashata prima del suo inserimento nel DB
    //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]Security@STARSUN.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\">&nbsp;";
    $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\">&nbsp;";
    $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://starsun.altervista.org/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 . ",<br>";
    echo
    "Un messaggio è stato inviato all'indirizzo <b>" . $to . "</b> da te fornito.<br><br>";
    echo
    "IMPORTANTE:<br>";
    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.<br><br>";
    } else {
    echo
    "Errore durante l'invio dell'e-mail.";
    }
    ?>
    </body>
    </html>
    Ultima modifica di dreadnaut : 15-11-2010 alle ore 22.22.19 Motivo: aggiunto tag [php]

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,262

    Predefinito

    L'unica query con almeno 11 righe in quel file è questa:
    Codice PHP:
    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'] . "')";
    E se noti proprio alla riga 11 manca un apice, dovrebbe essere '$pass',

  7. #7
    Guest

    Predefinito

    Naaaa sono proprio fuori di testa!!
    adesso funziona a meraviglia!!
    grazie,ho fatto di tutto ma non sapevo che mancava il coso!
    grazie lo stesso..
    come posso ringraziarti?
    bye!

  8. #8
    Guest

    Predefinito

    non voglio essere tanto richiedente,ma sono alle prime armi con il php...
    se voglio aggiungere un campo "Conferma password" nell file registrazione.php devo aggiungere un campo nell db?
    che devo fare?

    grazie

  9. #9
    Guest

    Predefinito

    scusa in che senso conferma password

  10. #10
    Guest

    Predefinito

    nell senso di inserire una funzione con un avatar...
    quello che intendo dire nell file registrazione.php se voglio aggiungere un campo in cui devi scriver un 'a ltra volta la password...
    comunque la funzione per gli avatar si puo fare?

  11. #11
    Guest

    Predefinito

    PROva a sostituire cosi e vedi se funziona
    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
    "<p><b>Sei già registrato!</b><br>Per effettuare una nuova registrazione" .
    "ritorna alla Home Page ed effettua il Logout.<br><br>";
    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>
    <p>
    <!-- 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<br>
    <input name="firstname" type="text" size="25" maxlength="30"><br><br>
    Cognome<br>
    <input name="lastname" type="text" size="25" maxlength="30"><br><br>
    Username<br>
    <input name="user" type="text" size="20" maxlength="11"><br><br>
    Password<br>
    <input name="pass" type="password" maxlength="8"><br><br>
    Ripeti Password<br>
    <input name="ripass" type="password" maxlength="8"><br><br>
    E-mail<br>
    <input name="email" type="text" size="50" maxlength="50"><br><br>
    <input type="submit" name="Submit" value="Conferma">
    </form>
    </p>
    </body>
    </html>

  12. #12
    Guest

    Predefinito

    data_insert.php
    Codice PHP:
    <?php
    require ('connessionedb.php');
    $pass= $_POST['pass'];
    $ripass = $_POST['ripass'];
    if(
    $pass == $ripass){


    /*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
    "<p>";
    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
    "<p>";
    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 "<p>";
    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;
    }
    }
    $pass = mysql_real_escape_string(md5($_POST['pass']));
    //basterebbe
    $pass = md5($_POST['pass']);
    //in quanto $pass viene hashata prima del suo inserimento nel DB
    //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]Security@STARSUN.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\">&nbsp;";
    $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\">&nbsp;";
    $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://starsun.altervista.org/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 . ",<br>";
    echo
    "Un messaggio è stato inviato all'indirizzo <b>" . $to . "</b> da te fornito.<br><br>";
    echo
    "IMPORTANTE:<br>";
    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.<br><br>";
    } else {
    echo
    "Errore durante l'invio dell'e-mail.";
    }
    }
    else{
    echo
    'Le due password immesse non coincidono riprova cliccando <a href="Registrazione.php">qui</a>';
    }
    ?>
    </body>
    </html>

  13. #13
    Guest

    Predefinito

    scusa ancora ma cosa intendi per script con avatar

  14. #14
    Guest

    Predefinito

    dove puoi caricare un immaggine che deve essere l'immaggine dell utente...
    forse è troppo complicato perche' con il db sarebbe un casino...
    ke ne pensi?

  15. #15
    Guest

    Predefinito

    Il campo aggiunto funziona bene grazie :)
    ma per l'avatar(immaggine utente) colui che si sta registrando deve caricare tutto nell db ma poi non si riempe?
    sarebbe un gran casino...

  16. #16
    Guest

    Predefinito

    in effetti se hai molti utenti la cosa comincia a complicarsi

  17. #17
    Guest

    Predefinito

    STARSUN

    ho visto il tuo codice e sto facendo una cosa simile mi potresti visualizzare il codice di login.php e confirm_reg.php ??

    GRAZIE

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •