Visualizzazione risultati 1 fino 10 di 10

Discussione: salvare ip in registrazione

  1. #1
    Guest

    Exclamation salvare ip in registrazione

    Salve,
    quando un utente si iscrive nel mio sito, voglio che salvi l'ip e la data da quando si è iscritto, come posso fare?

  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Dipende, che sistema usi per l'iscrizione?

  3. #3
    Guest

    Predefinito

    PHP

    da 2 giorni che cerco qualcosa, ma scarsi risultati, ho solo trovato come salvare gli ip dei visitatori e basta.

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Citazione Originalmente inviato da AmOrEaMiCiZa Visualizza messaggio
    ho solo trovato come salvare gli ip dei visitatori e basta.
    Beh, è identico. Devi sempre utilizzare $_SERVER['REMOTE_ADDR']. Con cloudflare però mi sembra che dovevi leggere un altro parametro, dovresti trovarlo nel pannello di cloudflare penso.
    La data, solitamente faccio un parametro che imposta in default il timestamp attuale (DEFAULT CURRENT_TIMESTAMP).

    Ah, per gli ip, sono molto utili le funzioni long2ip() e ip2long() per convertire gli ip in numeri interi, e non in stringhe.

    Ciao!

  5. #5
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Poi servirebbe anche sapere dove vuoi salvare questi dati, e se magari pubblicassi il codice che attualmente stai usando il tutto sarebbe ancora più chiaro.

  6. #6
    Guest

    Predefinito

    si, mi ero dimenticato il codice da mettere

    file register.php
    Codice PHP:
    <?php

    // includo il file con la lista delle funzioni di utilitˆ
    require_once 'inc/utils.php';

    // Qui inseriremo gli errori avvenuti durante la validazione
    // dei dati inseriti dall'utente nel form di login
    $formErrors = array();

    // Questi sono i dati inviati dall'utente
    $userName = $_POST['user-name'];
    $userUrl = $_POST['user-url'];
    $userSesso = $_POST['user-sesso'];
    $userEmail = $_POST['user-email'];
    $userEmailRepeat = $_POST['user-email-repeat'];
    $userPassword = $_POST['user-password'];
    $userPasswordRepeat = $_POST['user-password-repeat'];

    /* Controllo sul campo nome utente
    *
    * Se la lunghezza 0 allora il campo vuoto
    * altrimenti controllo che il campo nome abbia una lunghezza di almeno 4 caratteri
    */
    if (strlen($userUrl) == 0)
    {
    $formErrors[] = '<span class="message">Il campo nome utente &egrave; obbligatorio</span>';
    }
    else if (
    strlen($userUrl) < 4)
    {
    $formErrors[] = '<span class="message">Il nome utente inserito &egrave; troppo corto</span>';
    }

    /* Controllo sul campo nome e cognome
    *
    * Se la lunghezza 0 allora il campo vuoto
    * altrimenti controllo che il campo nome abbia una lunghezza di almeno 3 caratteri
    */
    if (strlen($userName) == 0)
    {
    $formErrors[] = '<span class="message">Il campo nome e cognome &egrave; obbligatorio</span>';
    }
    else if (
    strlen($userName) < 3)
    {
    $formErrors[] = '<span class="message">Il nome e cognome inserito &egrave; troppo corto</span>';
    }

    /* Controllo sulla password inserita
    *
    * Se la lunghezza 0 allora il campo vuoto
    * altrimenti controllo che la password abbia una lunghezza di almeno 6 caratteri
    * altrimenti controllo che il campo password ed il campo ripeti password siano uguali
    */
    if (strlen($userPassword) == 0)
    {
    $formErrors[] = '<span class="message">Il campo password &egrave; obbligatorio</span>';
    }
    else if (
    strlen($userPassword) < 6)
    {
    $formErrors[] = '<span class="message">La password inserita &egrave; troppo corta</span>';
    }
    else if (
    $userPassword != $userPasswordRepeat)
    {
    $formErrors[] = '<span class="message">Il campo password ed il campo ripeti password non sono uguali</span>';
    }


    /* Controllo sull'indirizzo email
    *
    * Se la lunghezza 0 allora il campo vuoto
    * altrimenti controllo che l'indirizzo email sia valido
    * altrimenti controllo che l'indirizzo email sia uguale
    * all'indirizzo email ripetuto
    */
    if (strlen($userEmail) == 0)
    {
    $formErrors[] = '<span class="message">Il campo email &egrave; obbligatorio.</span>';
    }
    else if (
    false == emailIsValid($userEmail))
    {
    $formErrors[] = '<span class="message">L’indirizzo email inserito non &egrave; corretto</span>';
    }
    else if (
    $userEmail != $userEmailRepeat)
    {
    $formErrors[] = '<span class="message">L’indirizzo email e L’indirizzo ripeti email non sono uguali</span>';
    }


    /* Controllo sul campo Sesso
    *
    * Se la lunghezza 0 allora il campo vuoto
    */
    if (strlen($userSesso) == 0)
    {
    $formErrors[] = '<span class="message">Il campo sesso &egrave; obbligatorio</span>';
    }



    // Se il conteggio degli errori 0 allora i dati inviati dall'utente
    // sono validi, procedo con la registrazione del nuovo utente
    if (count($formErrors) == 0)
    {
    // includo ora la lista di funzioni che servono per gestire l'utente
    require_once 'inc/user.php';

    // Per prima cosa mi assicuro che l'indirizzo email del nuovo utente
    // non sia giˆ registrato nel database
    if (true == userEmailExists($userEmail))
    {
    $formErrors[] = '<span class="message">L’indirizzo email inserito &egrave; gi&agrave; stato registrato</span>';
    }
    else
    {
    // La password inserita viene ora criptata tramite la funzione md5()
    // criptare la password un buon modo per alzare il livello di sicurezza
    // del nostro sistema di login
    $userPassword = md5($userPassword);

    // Questo il codice alfanumerico di 32 caratteri che verrˆ utilizzato
    // nel link di attivazione account
    $activationToken = md5(time().'_'.$userEmail);

    /* Tento di registrare il nuovo utente sul database
    *
    * Se non riesco avverto il nuovo utente che non ho potuto registrarlo
    * altrimenti gli invio una email contenente un link con cui confermare
    * la registrazione
    */
    $userData = array(
    'email' => $userEmail,
    'password' => $userPassword,
    'name' => $userName,
    'url' => $userUrl,
    'sesso' => $userSesso ,
    'token' => $activationToken
    );

    $userId = registerNewUser($userData);

    if (
    false == $userId)
    {
    $formErrors[] = '<span class="message">Si &egrave; verificato un errore durante la registrazione</span>';
    }
    else
    {
    // Questo il link di attivazione che serve all'utente per confermare
    // la propria registrazione
    $activationLink = 'http://'.$_SERVER['HTTP_HOST'];
    $activationLink .= str_replace('register.php', 'confirm.php', $_SERVER['REQUEST_URI']);
    $activationLink .= '?token='.$activationToken;

    // Invio la mail in formato HTML
    $headers = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";

    // Oggetto e testo dell'email da inviare
    $subject = 'Attivazione account';
    $emailText = "<p>Gentile {$userName}, la tua registrazione &egrave; avvenuta correttamente.</p>"
    . "<p>Per attivare il tuo account, clicca sul link sottostante</p>"
    . "<p><a href=\"{$activationLink}\">Clicca qui per attivare il tuo account</p>";

    // Provo ora ad inviare l'email all'indirizzo del nuovo utente
    // Redirigo poi il nuovo utente alla pagina di conferma invio email
    if (false == mail($userEmail, $subject, $emailText, $headers))
    {
    $formErrors[] = '<span class="message">Si &egrave; verificato un errore durante il tentativo di invio dell’email di conferma</span>';
    }
    else
    {
    header('Location: confirm_sendmail.php');
    }
    }

    }

    }

    // Stampo a video la lista degli errori, se presenti
    echo showFormErrors($formErrors);

  7. #7
    Guest

    Predefinito

    ho provato anche con $_SERVER['REMOTE_ADDR'] ma non capisco perchè non me lo mette nel database :(

  8. #8
    Guest

    Predefinito

    file user.php
    Codice PHP:
    <?php

    /*
    * In questo file sono contenute le funzioni utili
    * alla gestione degli utenti
    */

    // Includo la lista delle funzioni per dialogare con il database
    require_once 'database.php';

    // Questa funzione si occupa di autenticare un utente
    // nel sistema
    function authenticateUser($userEmail, $userPassword)
    {
    // Apro una connessione con il database
    $connection = getConnection();

    // Cerco nel database un utente attivo
    // con la coppia email:password specificata
    $sql = "SELECT user_id
    FROM user
    WHERE
    email = '%s'
    AND
    password = '%s'
    AND
    active = 1"
    ;

    // Assegno alla query i parametri da cercare
    $sql = sprintf($sql, $userEmail, $userPassword);

    // Eseguo la query sul database
    $result = mysql_query($sql, $connection);

    // Se si verificato un errore oppure non ho trovato nessun risultato
    if (false == $result || mysql_num_rows($result) == 0)
    return
    false;

    // Questa riga contiene le informazioni dell'utente, se trovato nel database
    $row = mysql_fetch_assoc($result);

    // Ritorno lo user_id dell'utente
    return $row['user_id'];
    }

    // Questa funzione permette di registrare un nuovo utente nel sistema
    function registerNewUser($userData)
    {
    // Apro una connessione con il database
    $connection = getConnection();

    // Questi sono i dati da inserire nel database
    $userEmail = $userData['email'];
    $userPassword = $userData['password'];
    $userName = $userData['name'];
    $userUrl = $userData['url'];
    $userSesso = $userData['sesso'];
    $token = $userData['token'];

    // Query per inserire i nuovi dati nel database
    $sql = "INSERT INTO user
    (email, password, url, sesso, name, token)
    VALUES
    ('%s', '%s', '%s', '%s', '%s', '%s') "
    ;

    // Assegno alla query i parametri da cercare
    $sql = sprintf($sql,
    $userEmail,
    $userPassword,
    $userUrl,
    $userSesso,
    mysql_real_escape_string($userName),
    $token);

    // Provo ad inserire i dati
    if (false == mysql_query($sql, $connection))
    {
    return
    false;
    }
    // se sono riuscito ad inserire i dati,
    // ritorno l'ultimo user_id inserito
    else
    {
    return
    mysql_insert_id($connection);
    }
    }

    // Questa funzione controlla l'esistenza
    // nel database di un utente con uno specifico indirizzo email
    function userEmailExists($userEmail)
    {
    // Apro una connessione con il database
    $connection = getConnection();

    // Conto il numero di utenti registrati con
    // l'indirizzo email specificato
    $sql = "SELECT user_id
    FROM user
    WHERE
    email = '%s' "
    ;

    // Assegno alla query i parametri da cercare
    $sql = sprintf($sql, $userEmail);

    // Eseguo la query sul database
    $result = mysql_query($sql, $connection);

    // Se non ho trovato utenti oppure se si
    // verificato un errore
    if (false == $result || mysql_num_rows($result) == 0)
    {
    return
    false;
    }
    // Altrimenti vuol dire che ho trovato un utente
    // con l'indirizzo email specificato
    else
    {
    return
    true;
    }
    }

    // Questa funzione cerca i dati di un utente
    // in base al token specificato
    function userFindByToken($token)
    {
    // Apro una connessione con il database
    $connection = getConnection();

    // Cerco un utente con un certo token
    $sql = "SELECT *
    FROM user
    WHERE
    token = '%s'"
    ;

    // Assegno alla query i parametri da cercare
    $sql = sprintf($sql, $token);

    // Eseguo la query sul database
    $result = mysql_query($sql, $connection);

    // Se si verificato un errore oppure non
    // ho trovato nessun utente
    if (false == $result || mysql_num_rows($result) == 0)
    {
    return
    false;
    }

    // Ritorno i dati dell'utente trovato
    return mysql_fetch_assoc($result);
    }

    // Questa funzione cerca i dati di un utente
    // in base all'indirizzo email specificato
    function userFindByEmail($userEmail)
    {
    // Apro una connessione con il database
    $connection = getConnection();

    // Cerco un utente con un certo indirizzo email
    $sql = "SELECT *
    FROM user
    WHERE
    email = '%s'"
    ;

    // Assegno alla query i parametri da cercare
    $sql = sprintf($sql, $userEmail);

    // Eseguo la query sul database
    $result = mysql_query($sql, $connection);

    // Se si verificato un errore oppure non
    // ho trovato nessun utente
    if (false == $result || mysql_num_rows($result) == 0)
    {
    return
    false;
    }

    // Ritorno i dati dell'utente trovato
    return mysql_fetch_assoc($result);
    }

    // Questa funzione cerca i dati di un utente
    // in base ad un userId specificato
    function userFindById($userId)
    {
    // Apro una connessione con il database
    $connection = getConnection();

    // Cerco un utente con un certo userId
    $sql = "SELECT *
    FROM user
    WHERE
    user_id = %d"
    ;

    // Assegno alla query i parametri da cercare
    $sql = sprintf($sql, $userId);

    // Eseguo la query sul database
    $result = mysql_query($sql, $connection);

    // Se si verificato un errore oppure non
    // ho trovato nessun utente
    if (false == $result || mysql_num_rows($result) == 0)
    {
    return
    false;
    }

    // Ritorno i dati dell'utente trovato
    return mysql_fetch_assoc($result);
    }

    // Questa funzione serve per attivare l'account
    // di un utente con un certo userId
    function userActivate($userId)
    {
    // Apro una connessione con il database
    $connection = getConnection();

    // Attivo l'utente impostando il campo
    // active a 1
    $sql = "UPDATE user
    SET active = 1, token = NULL
    WHERE
    user_id = %d"
    ;

    // Assegno alla query i parametri da cercare
    $sql = sprintf($sql, $userId);

    // Eseguo la query sul database
    $result = mysql_query($sql, $connection);

    // Se si verificato un errore oppure nessun utente
    // Ž stato attivato
    if (false == $result || mysql_affected_rows($connection) == 0)
    {
    return
    false;
    }
    // Altrimenti l'utente stato attivato
    else
    {
    return
    true;
    }
    }

    // Questa funzione permette di settare il token
    // di uno specifico utente, identificato dal suo userId
    function userSetToken($token, $userId)
    {
    // Apro la connessione al database
    $connection = getConnection();

    // Questa la query di aggornamento
    $sql = "UPDATE user
    SET token = '%s'
    WHERE user_id = %d"
    ;

    // Assegno alla query i parametri da cercare
    $sql = sprintf($sql, $token, $userId);

    // Eseguo la query
    $result = mysql_query($sql, $connection);

    // Se si verificato un errore oppure nessun token stato settato
    // ritorno false
    if (false == $result || mysql_affected_rows($connection) == 0)
    {
    return
    false;
    }
    // altrimenti ritorno true
    else
    {
    return
    true;
    }
    }
    Vorrei mettere anche la data da quando si è registrato nel sito, grazie mille ragazzi.

  9. #9
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Per la data di registrazione, come ti ho detto, puoi lasciar fare tutto a mysql: crei un campo TIMESTAMP e di default gli fai mettere il timestamp corrente. Quando da PHP fai una INSERT, non specificare quel campo, e di default avrà il valore della data corrente (solitamente io faccio così).

    Per l'ip è strano che non te lo salvi: se usi direttamente $_SERVER['REMOTE_ADDR'] dovresti salvarlo come stringa perché contiene i punti. Invece ip2long($_SERVER['remote_addr']) è semplicemente un numero intero.

    Come mai ancora usi le funzioni mysql_* che sono obsolete?

    Ciao!

  10. #10
    Guest

    Predefinito

    Mi aveva aiutato un mio amico a fare questo script, se così si può chiamare.


    quello che non ho capito è come lasciar fare tutto a mysql e in quale parte mettere $_SERVER['REMOTE_ADDR']

    avrei anche un altro problema, non mi salva la data di nascita sul database

    Codice HTML:
    <select class="Form_select Form_select-group-xSmall" id="user_born_at_day" name="user-nascita" tabindex="6">
    <option value="">Giorno</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>
    <option value="18">18</option>
    <option value="19">19</option>
    <option value="20">20</option>
    <option value="21">21</option>
    <option value="22">22</option>
    <option value="23">23</option>
    <option value="24">24</option>
    <option value="25">25</option>
    <option value="26">26</option>
    <option value="27">27</option>
    <option value="28">28</option>
    <option value="29">29</option>
    <option value="30">30</option>
    <option value="31">31</option>
    </select>
    
                    <select class="Form_select Form_select-group-Medium" id="user_born_at_month" name="user-nascita" tabindex="7">
    <option value="">Mese</option>
    <option value="1">Gennaio</option>
    <option value="2">Febbraio</option>
    <option value="3">Marzo</option>
    <option value="4">Aprile</option>
    <option value="5">Maggio</option>
    <option value="6">Giugno</option>
    <option value="7">Luglio</option>
    <option value="8">Agosto</option>
    <option value="9">Settembre</option>
    <option value="10">Ottobre</option>
    <option value="11">Novembre</option>
    <option value="12">Dicembre</option>
    </select>
    
                    <select class="Form_select Form_select-group-Small" id="user_born_at_year" name="user-nascita" tabindex="8">
    <option value="">Anno</option>
    <option value="2015">2015</option>
    <option value="2014">2014</option>
    <option value="2013">2013</option>
    <option value="2012">2012</option>
    <option value="2011">2011</option>
    <option value="2010">2010</option>
    <option value="2009">2009</option>
    <option value="2008">2008</option>
    <option value="2007">2007</option>
    <option value="2006">2006</option>
    <option value="2005">2005</option>
    <option value="2004">2004</option>
    <option value="2003">2003</option>
    <option value="2002">2002</option>
    <option value="2001">2001</option>
    <option value="2000">2000</option>
    <option value="1999">1999</option>
    <option value="1998">1998</option>
    <option value="1997">1997</option>
    <option value="1996">1996</option>
    <option value="1995">1995</option>
    <option value="1994">1994</option>
    <option value="1993">1993</option>
    <option value="1992">1992</option>
    <option value="1991">1991</option>
    <option value="1990">1990</option>
    <option value="1989">1989</option>
    <option value="1988">1988</option>
    <option value="1987">1987</option>
    <option value="1986">1986</option>
    <option value="1985">1985</option>
    <option value="1984">1984</option>
    <option value="1983">1983</option>
    <option value="1982">1982</option>
    <option value="1981">1981</option>
    <option value="1980">1980</option>
    <option value="1979">1979</option>
    <option value="1978">1978</option>
    <option value="1977">1977</option>
    <option value="1976">1976</option>
    <option value="1975">1975</option>
    <option value="1974">1974</option>
    <option value="1973">1973</option>
    <option value="1972">1972</option>
    <option value="1971">1971</option>
    <option value="1970">1970</option>
    <option value="1969">1969</option>
    <option value="1968">1968</option>
    <option value="1967">1967</option>
    <option value="1966">1966</option>
    <option value="1965">1965</option>
    <option value="1964">1964</option>
    <option value="1963">1963</option>
    <option value="1962">1962</option>
    <option value="1961">1961</option>
    <option value="1960">1960</option>
    <option value="1959">1959</option>
    <option value="1958">1958</option>
    <option value="1957">1957</option>
    <option value="1956">1956</option>
    <option value="1955">1955</option>
    <option value="1954">1954</option>
    <option value="1953">1953</option>
    <option value="1952">1952</option>
    <option value="1951">1951</option>
    <option value="1950">1950</option>
    <option value="1949">1949</option>
    <option value="1948">1948</option>
    <option value="1947">1947</option>
    <option value="1946">1946</option>
    <option value="1945">1945</option>
    <option value="1944">1944</option>
    <option value="1943">1943</option>
    <option value="1942">1942</option>
    <option value="1941">1941</option>
    <option value="1940">1940</option>
    <option value="1939">1939</option>
    <option value="1938">1938</option>
    <option value="1937">1937</option>
    <option value="1936">1936</option>
    <option value="1935">1935</option>
    <option value="1934">1934</option>
    <option value="1933">1933</option>
    <option value="1932">1932</option>
    <option value="1931">1931</option>
    <option value="1930">1930</option>
    <option value="1929">1929</option>
    <option value="1928">1928</option>
    <option value="1927">1927</option>
    <option value="1926">1926</option>
    <option value="1925">1925</option>
    <option value="1924">1924</option>
    <option value="1923">1923</option>
    <option value="1922">1922</option>
    <option value="1921">1921</option>
    <option value="1920">1920</option>
    <option value="1919">1919</option>
    <option value="1918">1918</option>
    <option value="1917">1917</option>
    <option value="1916">1916</option>
    <option value="1915">1915</option>
    </select>
    Ultima modifica di AmOrEaMiCiZa : 07-04-2015 alle ore 00.06.56

Regole di scrittura

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