Utente - Periodo di prova

Nickname

Utente Attivo
18 Set 2013
122
0
0
Salve a tutti, vorrei fare una domanda un pò 'strana'.
Praticamente ho creato un sito con un sistema di registrazione, quindi con una tabella 'utenti_temp' e 'utenti'.
Ora come posso fare in modo che un utente possa fare una registrazione di prova?
Mi spiego meglio:
Un utente si registra, cliccando su Registrazione di prova, e viene registrato per, ad esempio, 30 giorni; dopo questi 30 giorni l'utente non è più registrato.
Praticamente come fanno tanti programmi con la versione trial.
C'è un modo per farlo ?
Grazie a tutti.
 

edin

Utente Attivo
7 Nov 2013
92
0
6
www.edinweb.altervista.org
Ciao,
per gli utenti di prova fai la query ogni giorno alla tabella 'utenti_temp' facendo un comtrollo sulla data di registrazione.Se il risultato è maggiora ai 30 scegli se eliminare il record oppure bloccare semplicemente laccesso.
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
Ciao,
per gli utenti di prova fai la query ogni giorno alla tabella 'utenti_temp' facendo un comtrollo sulla data di registrazione.Se il risultato è maggiora ai 30 scegli se eliminare il record oppure bloccare semplicemente laccesso.

Quindi devo fare il lavoro "manualmente" ?
Ovvero andare ogni giorno a eliminare gli utenti che superano i 30 giorni ?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Basta che fai il controllo quando l'utente si logga
 

edin

Utente Attivo
7 Nov 2013
92
0
6
www.edinweb.altervista.org
dovresti impostare una query del genere ed in base al risultato metti le condizioni:
PHP:
//dal login prendi username e password
$username="username";
$password="password"
$query=mysqli_query("SELECT * FROM utenti_temp WHERE username='".$username."' AND password='".$password."'  AND(TO_DAYS(NOW()) - TO_DAYS(post_date) >= 30)",$conn);

if(mysqli_num_rows($query)>0)
{
  //blocchi l'utente o elimini
}
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
dovresti impostare una query del genere ed in base al risultato metti le condizioni:
PHP:
//dal login prendi username e password
$username="username";
$password="password"
$query=mysqli_query("SELECT * FROM utenti_temp WHERE username='".$username."' AND password='".$password."'  AND(TO_DAYS(NOW()) - TO_DAYS(post_date) >= 30)",$conn);

if(mysqli_num_rows($query)>0)
{
  //blocchi l'utente o elimini
}

Mh ok fino a qui ci sono, però come strutturo la tabella?
Cioè come faccio a fare in modo che quando l'utente si registra sia già presente nella tabella il numero 1 (ovvero il primo giorno da registrato) e che ogni giorno aumenti fino a 30 ?
 

edin

Utente Attivo
7 Nov 2013
92
0
6
www.edinweb.altervista.org
Quando fai l'insermento dell'utente fai prima un controllo se l'username è gia' presente:
PHP:
$query=mysqli_query("SELECT username FROM utenti_temp WHERE username='$username'");
if(mysqli_num_rows($query)>0)
{
//username presente
}

Se tutto ok nell'inserimento inserisci la data di registrazione nella tabella oltre ai vari campi che ti occorrono (username,password,email,nome,etc) e ai prossimi accessi fai un cotrollo di qunati giorni sono passati dalla registrazione:
PHP:
$query=mysqli_query("SELECT * FROM utenti_temp WHERE username='".$username."' AND password='".$password."'  AND(TO_DAYS(NOW()) - TO_DAYS(data_inserimento) >= 30)",$conn);

if(mysqli_num_rows($query)>0)
{
  //blocchi l'utente o elimini
}
 
Ultima modifica:

Nickname

Utente Attivo
18 Set 2013
122
0
0
Quando fai l'insermento dell'utente fai prima un controllo se l'username è gia' presente:
PHP:
$query=mysqli_query("SELECT username FROM utenti_temp WHERE username='$username'");
if(mysqli_num_rows($query)>0)
{
//username presente
}

Se tutto ok nell'inserimento inserisci la data di registrazione nella tabella oltre ai vari campi che ti occorrono (username,password,email,nome,etc) e ai prossimi accessi fai un cotrollo di qunati giorni sono passati dalla registrazione:
PHP:
$query=mysqli_query("SELECT * FROM utenti_temp WHERE username='".$username."' AND password='".$password."'  AND(TO_DAYS(NOW()) - TO_DAYS(data_inserimento) >= 30)",$conn);

if(mysqli_num_rows($query)>0)
{
  //blocchi l'utente o elimini
}

Mh mi puoi fare un esempio pratico di come fare la registrazione della data? Per tutto il resto non c'è problema.
Grazie mille comunque
 

edin

Utente Attivo
7 Nov 2013
92
0
6
www.edinweb.altervista.org
Crea tra i vari campi che ti occorrono un campo "data_inserimento" di tipo DATE e fai la query di INSERT in questo modo
PHP:
 $querymysqli_query("INSERT INTO utenti_temp (username,password,data_inserimento) VALUES ('$username','$password',CURDATE()))";

CURDATE è è una funzione che ritorna la data in formato yyyy-mm-dd.

Ciao.
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
Crea tra i vari campi che ti occorrono un campo "data_inserimento" di tipo DATE e fai la query di INSERT in questo modo
PHP:
 $querymysqli_query("INSERT INTO utenti_temp (username,password,data_inserimento) VALUES ('$username','$password',CURDATE()))";

CURDATE è è una funzione che ritorna la data in formato yyyy-mm-dd.

Ciao.

Mh capito; però il campo data_inserimento dovrà inserirsi "da solo" perché ovviamente l'utente non può scegliere il giorno, ma deve essere il giorno attuale.
Come posso fare questo ?
 

edin

Utente Attivo
7 Nov 2013
92
0
6
www.edinweb.altervista.org
appunto ,usando la funzione CURDATE() di mysql, che ritorna la data del giorno in cui si scrive il record nel db.

oppure puoi ricavare la data da php
PHP:
$data_inserimento=date("Y-m-d");
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
appunto ,usando la funzione CURDATE() di mysql, che ritorna la data del giorno in cui si scrive il record nel db.

oppure puoi ricavare la data da php
PHP:
$data_inserimento=date("Y-m-d");

Aah scusa non avevo capito bene; perfetto.

Quindi, ricapitolando, faccio il form con tutti i campi ecc. e uno per la data che dovrà essere di tipo DATE.
Poi nell'INSERT inserirò i soliti campi, solo che per la data dovrà esserci CURDATE() come valore.

Sbaglio in qualcosa?

Un'altra cosa, mi ricordo, se non sbaglio, che ci sono altri due tipi di insert oltre a date: datetime e datetime-local, quale pensi sia più adatto per il mio scopo ?
Grazie mille mi stai aiutando molto :D
 

edin

Utente Attivo
7 Nov 2013
92
0
6
www.edinweb.altervista.org
Quindi, ricapitolando, faccio il form con tutti i campi ecc. e uno per la data che dovrà essere di tipo DATE.

Nel form il campo data non ti serve, sara' mysql ad inserirlo nel momento dell'inserimento dei dati tramite curdate()

Un'altra cosa, mi ricordo, se non sbaglio, che ci sono altri due tipi di insert oltre a date: datetime e datetime-local, quale pensi sia più adatto per il mio scopo ?

datetime ti permette anche di inserire ore,minuti e secondi del tipo:

2013-11-28 17:30:34

pero' se decidi di usare un campo di tipo datetime al posto di date, devi sostituire CURDATE() con NOW().
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
Nel form il campo data non ti serve, sara' mysql ad inserirlo nel momento dell'inserimento dei dati tramite curdate()



datetime ti permette anche di inserire ore,minuti e secondi del tipo:

2013-11-28 17:30:34

pero' se decidi di usare un campo di tipo datetime al posto di date, devi sostituire CURDATE() con NOW().

Cioè NON devo fare tipo così nel form?

HTML:
<form>
<input type="text" name="nome" id="nome" />
<input type="text" name="cognome" id="cognome" />
...

<input type="date" name="data" id="data" />
...


</form>
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
Quando fai:

INSERT INTO ....., dai il valore al campo data_inserimento con CURDATE.

Aallora, ho provato il tutto e va bene però c'è un problema.
Ovvero, quando un utente si registra va a finire inizialmente nella tabella 'utenti_temp' e gli arriva un'email di conferma all'indirizzo di posta, dopo che l'utente clicca sul codice nell'email va a finire nella tabella 'utenti' e il suo profilo è attivato (come in quasi tutti i siti insomma).
Il problema è che, quando l'utente si trova ancora nella tabella 'utenti_temp' la data è presente, quando invece dopo va a cliccare nell'email e attiva il suo account nella tabella non c'è più la data, non so perché, questo è lo script della pagina:

PHP:
<html>
<head>
<?php

	ob_start();
	include 'config.php';
	connect();
	session_start();
	
?>
</head>
<body>

<?php 

if(!isset($_GET['passkey'])){
		
if(!isset($_POST['invia'])){ ?>

			
            
<!-- QUI CI SONO TUTTI CAMPI DEL FORM -->


           
<?php	} else {

$codiceconferma = md5(uniqid(rand()));

$username = mysql_real_escape_string($_POST['username']);
$password1 = mysql_real_escape_string($_POST['password1']);
$password2 = mysql_real_escape_string($_POST['password2']);
$data = mysql_real_escape_string($_POST['data2']);
$email = mysql_real_escape_string($_POST['email']);
$nome = mysql_real_escape_string($_POST['nome']);
$cognome = mysql_real_escape_string($_POST['cognome']);
			

if($username == "" || $email == "" || $nome == "" || $cognome == ""){
echo "Devi riempire tutti i campi contrassegnati con *";
}elseif($password1 == "" || $password2 == ""){
echo "Devi riempire tutti i campi contrassegnati con *";
}elseif($password2 != $password1){
echo "Le password devono coincidere";
}else{

$recuperauseremail = mysql_query("SELECT id FROM utenti WHERE username='$username' OR email='$email'");	
$contausermail = mysql_num_rows($recuperauseremail);

if($contausermail > 0){

echo "Nome utente o email già disponibili";

} else {

$inviautentitemp = mysql_query("INSERT INTO utenti_temp (codiceconferma, username, password, data, email, nome, cognome) VALUES ('$codiceconferma', '$username', '$password2', CURDATE(), '$email', '$nome', '$cognome')");

if($inviautentitemp){

$to=$email;
$subject="Benvenuto";
$header = ini_set ("sendmail_from", "[email protected]");
$header .="From: MIO SITO <[email protected]> \r\n";
$headers .= "Reply-To: [email protected] \r\n";
$headers .= "Return-Path: [email protected] \r\n";
$thisphpversion = phpversion();
$header .= "X-Mailer: PHP/".$thisphpversion."\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n";
$header .= "Content-Transfer-Encoding: 7bit\n\n";

$message ="Benvenuto nel mio sito. \r\n";
$message.="Grazie per esserti registrato \r\n";
$message.="Clicca sul link qui sotto per confermare la registrazione di prova\r\n";
$message.="(Oppure copia il link e incollalo nella barra degli indirizzi del tuo browser. \r\n";
$message.="http://www.MIOSITO.it/attivazione.php?passkey=$codiceconferma";

$sentmail=mail($to,$subject,$message,$header, $headers);

if($sentmail){


echo "Per completare la registrazione di prova controlla la tua casella di posta elettronica (anche tra gli spam) e clicca sul link di attivazione.";

}else{

echo "Errore, link di attivazione non inviato.";

}
}
}
}

}
		
} else {
			
$passkey = $_GET['passkey'];
			
$sqlrecuperauser = "SELECT * FROM utenti_temp WHERE codiceconferma = '$passkey'";
$risultatouser = mysql_query($sqlrecuperauser);
			
if($risultatouser) {
			
$contauser = mysql_num_rows($risultatouser);

if($contauser == 1){

$rows = mysql_fetch_array($risultatouser);
$username = $rows['username'];
$email = $rows['email'];
$password = $rows ['password'];
$data = $rows ['data'];
$nome = $rows ['nome'];
$cognome = $rows ['cognome'];


$passwordcript = md5($password);

$sqlconfermauser = mysql_query("INSERT INTO utenti (username, password, data, email, nome, cognome) VALUES ('$username', '$passwordcript', '$data', '$email', '$nome', '$cognome')");

if ($sqlconfermauser) {

echo "<br>Il tuo account è stato attivato con successo";
$sqleliminadati = mysql_query("DELETE FROM utenti_temp WHERE codiceconferma = '$passkey'");

} else {

echo "Errore!";

}

}
			
			}
			
		}

	?>

</body>
</html>
 
Discussioni simili
Autore Titolo Forum Risposte Data
I nome utente non esiste nel database PHP 1
I carica foto profilo sessione utente PHP 2
I sessione utente elimina chat PHP 12
I invia inserisci nome utente invia messaggio PHP 0
I cartella privata utente PHP 4
I caricamento file in sottocartella nome utente PHP 3
felino [Wordpress] Gallery con foto selezionabili dall'utente WordPress 0
M Mostrare testo (o parte di esso) in base a utente PHP 0
G Bentrovati da un nuovo utente Presentati al Forum 1
C Rinominare file in base all'id dell'utente loggato PHP 0
E Gestione profilo utente tramite Form PHP 3
I visualizza profilo utente utente in chat PHP 0
F Nuovo utente Presentati al Forum 0
R Plugin per Registrazione Utente e Pagamento prodotto WordPress 2
A Dare l'accesso ad una pagina solo ad un utente specifico PHP 0
G Registrazione utente su pagina asp Classic ASP 14
M Lanciare alert se il codice fiscale è già presente nel db e lasciare la scelta di inserire all'utente PHP 42
W Nuovo utente Presentati al Forum 0
J Nuovo utente Presentati al Forum 1
G Nuovo utente Presentati al Forum 1
R Obbligare all'utente un pagamento al momento della registrazione PHP 3
F [PHP] Verifica utente presente nel DB PHP 13
A [PHP] Bloccare utente tramite indirizzo IP PHP 3
A [PHP] registrazione utente in un database sql con confronto PHP 1
R [WordPress] Calendario Personale per ogni Utente WordPress 0
R [PHP] Estrarre id utente loggato.? PHP 4
KOMODO_JOE [WordPress] Area privata per ogni utente su altervista WordPress 1
L Nuovo utente Presentati al Forum 0
L [PHP] Visualizzare utente dopo login PHP 0
M Nuovo Utente Presentati al Forum 0
Robpagna Nuovo utente Presentati al Forum 2
U [PHP] Differenza tra amministratore e utente PHP 2
svtmaster Salve , un saluto a tutti voi sono un nuovo utente . Grazie Presentati al Forum 0
G Sono un nuovo utente questo sito Presentati al Forum 0
R [PHP] creare pagina profilo per ogni utente PHP 4
M [PHP] Eliminazione utente e tutti i suoi file caricati in una cartella PHP 8
A [PHP] Controllo nome utente form di registrazione PHP 4
M [MySQL] Come associare stats ad ogni utente. MySQL 0
joomeph Cambiare Nome Utente Supporto Mr.Webmaster 3
A [PHP] Cancellare riga database a scelta dell'utente PHP 2
A [PHP] Modificare campo database in base alla scelta dell'utente PHP 2
A Cambio password utente DB Database 0
J [PHP] Estrapolare utente dominio da pc PHP 2
B [PHP] hp script creare un utente diminuendo -1 e cosi via PHP 1
P [PHP] Limitare login ad un solo utente per volta PHP 12
A Un saluto da un nuovo utente Presentati al Forum 2
giancadeejay [PHP] Pagina profilo UTENTE modificabile PHP 2
D [Javascript] [HTML] Countdown su Mobirise di 24 ore relative per ogni utente. Javascript 4
A [PHP] Riconoscimento Utente Loggato PHP 7
Shyson [Javascript] Nascondere avviso se utente può registrarsi Javascript 0

Discussioni simili