Salve,
quando un utente si iscrive nel mio sito, voglio che salvi l'ip e la data da quando si è iscritto, come posso fare?
Salve,
quando un utente si iscrive nel mio sito, voglio che salvi l'ip e la data da quando si è iscritto, come posso fare?
Dipende, che sistema usi per l'iscrizione?
PHP
da 2 giorni che cerco qualcosa, ma scarsi risultati, 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!
regolamento altervista_______________ regolamento forum
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.
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 è obbligatorio</span>';
}
else if (strlen($userUrl) < 4)
{
$formErrors[] = '<span class="message">Il nome utente inserito è 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 è obbligatorio</span>';
}
else if (strlen($userName) < 3)
{
$formErrors[] = '<span class="message">Il nome e cognome inserito è 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 è obbligatorio</span>';
}
else if (strlen($userPassword) < 6)
{
$formErrors[] = '<span class="message">La password inserita è 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 è obbligatorio.</span>';
}
else if (false == emailIsValid($userEmail))
{
$formErrors[] = '<span class="message">L’indirizzo email inserito non è 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 è 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 è già 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 è 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 è 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 è 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);
ho provato anche con $_SERVER['REMOTE_ADDR'] ma non capisco perchè non me lo mette nel database :(
file user.php
Vorrei mettere anche la data da quando si è registrato nel sito, grazie mille ragazzi.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;
}
}
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!
regolamento altervista_______________ regolamento forum
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