Sessioni con newsletter

Salve vorrei un parere.

Sto sviluppando una newsletter e vorrei che, quando l'utente inserisce il suo indirizzo per la sottoscrizione, il programma invii un messaggio con l'URL per la conferma.

Pensavo di ricorrere alle sessioni in questo modo:

  • quando l'utente si registra memorizzo i suoi dati in $_SESSION;
  • nell'URL di conferma riporto il session id in modo che, quando si ricollega, si possa riaccedere ai suoi dati per la memorizzazione definitiva e distruggere la sessione :).

Non ho idea di come si faccia di solito ma in questo modo mi parrebbe semplice ed efficace.

Resterebbe il problema della permenza del file di sessione sul server che, se non erro, dopo 1440s potrebbe essere cancellato.

Pensavo di modificare il valore di default con ini_set() (dovrei metterla prima o dopo di session_start()?) per essere sicuro che prima di un certo periodo non venga cancellato.

Che ne dite?

inviato 10 anni fa
usecram
X 0 X

Altrimenti potresti fare in un altro modo ( è solo un'idea )...

Quando l'utente si registra salvi i dati nel Db, nella tua tabella, in cui ci sarà un flag che servirà da conferma, esempio registered ('YES','NO'), che metterai di default a 'NO'..

Quando l'utente si registra, vengono inseriti i dati nel Db, con mysql_insert_id() recuperi il valore dell'utlimo inserimento, gli mandi una mail che punterà ad una pagina ex:

registrazione.php?IDutente=1

In cui farai l'update del campo registered a YES:

UPDATE tabella SET registered='YES', così viene confermato...

Così, quando invierai la newsletter, la invierai SOLO a quelli effettivamente registrati

( SELECT * FROM tabella WHERE registered='YES')

Spero di non essere stato troppo contorto

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Sei stato più che chiaro e grazie mille  O0

ma lo spazio web non ha supporto per database, forse potrei valutare di fare una cosa simile anche con i file di testo...ma vorrei sapere se la mia idea di novizio è fuori dal mondo o ha un suo perché

risposto 10 anni fa
usecram
X 0 X

Il problema del tuo metodo è la permanenza delle sessione sul server...se fai phpinfo() , puoi vedere le impostazioni di

session_maxlifetime ( mi pare si chiami così )

Se invii la mail con il session_id e un'utente clicca sulla mail di conferma quando il tempo della sessione sul server è passato, questo non avrà + validità...

CMQ prova a sentire anche cosa ti consiglia Gianni magari...

PS anche quello che ti ho postato prima non è molto corretto in termini di sicurezza in quanto facendo un link:

registrazione.php?IDutente=1 sarebbe facilemente rintracciabile, nel senso che chiunque potrebbe fare:

www.tuosito.it/registrazione?IDutente=N confermando a caso chiunque...

Quindi sarebbe meglio fare un link:

registrazione.php?login=login_utente&password=password_criptata

dove sarebbe meglio passare la login e la password criptata col metodo che usi tu ( password, md5, hash...)

Scusa per l'errore nel precedente consiglio  :angel:

ciao

risposto 10 anni fa
Lore
Lore
1
modificato 10 anni fa
X 0 X

Sono d'accordo ed infatti anch'io avevo individuato il problema.

Avevo proposto di modificare session.gc_maxlifetime con la funzione ini_set() ed avvisare l'utente che la registrazione si può concludere entro il tempo impostato.

Non so se ini_set si debba mettere prima o dopo session_start(), direi prima a logica, né se ini_set() sia affidabile (Windows Server se può essere utile).

risposto 10 anni fa
usecram
X 0 X

Sono d'accordo ed infatti anch'io avevo individuato il problema.

Avevo proposto di modificare session.gc_maxlifetime con la funzione ini_set() ed avvisare l'utente che la registrazione si può concludere entro il tempo impostato.

Penso che come dici tu sia fattibile...

Non so se ini_set si debba mettere prima o dopo session_start(), direi prima a logica, né se ini_set() sia affidabile (Windows Server se può essere utile).

Per quanto riguarda l'ini_set, dovrebbe andare prima di session_start() come dicevi tu...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Grazie Lore  :) mi sento confortato dal fatto di avere detto qualcosa di condivisibile anche se forse non sperimentato.

Se qualcuno ha da aggiungere qualcosa in merito all'affidabilità della mia idea o vuole propormi un metodo più semplice e collaudato (ricordando che uso file di testo e sviluppo una semplice newsletter) si faccia pure avanti.

 :bye:

risposto 10 anni fa
usecram
X 0 X
Grazie Lore  :) mi sento confortato dal fatto di avere detto qualcosa di condivisibile anche se forse non sperimentato.

Infatti...quanto hai detto sopra, non l'ho sperimentato, ho sempre usato l'altro metodo...

Sinceramente non avevo capito che usavi i file di testo...ma li usi come Db, giusto?

Se sì,puoi creare il file con login e password(criptata) dell'utente che si registra, avrai un file del genere:

pippo|r765rt569494bn8yunhg|NO pluto|12nb45g4b6iu7h6767h8|NO paperino|wer875gnr8t580vnt556u7|NO

in cui avrai login|password|utente_attivo

quando fai l'inserimento(scrittura) nel file di testo, ( fwrite ), mandi la mail con il link:

registrazione.php?login=pippo&password=r765rt569494bn8yunhg

Quando l'utente clicca sul link, nella pagina farai una cosa del genere:

$fp = fopen("utenti_non_attivi.txt","rb");
$fp2 = fopen("utenti_attivi.txt","wb");
while(!feof($fp))
{
   list($login,$pass,$active) = explode("|",fgest($fp));
   if($login == $_GET['login'] && password == $_GET['password'])
    fwrite($fp2,$login."|".$password."|YES");
}

fclose($fp);
fclose($fp2);

Spiego:

nel primo file (utenti_non_attivi.txt) andrei a scrivere tutti quelli che si registrano, per comodità ho riportato solo

login|password|active , ma ci puoi mettere tutti i dati che vuoi...

Nel secondo file ( utenti_attivi.txt ) andrò a scrivere solo quelli che confermano la registrazione,

quando un utente clicca sul link che gli mandi via mail, gli fai controllare che login e password spediti via get ci sono nel file con tutte le registrazioni....

Se c'è, vai a scrivere nel file degli utenti attivi tutta la riga 'incriminata' cambiando il flag 'utente_attivo' a YES...

Quando spedirai la newsletter non dovrai neanche far nessun controllo, basta che apri il file di testo:

utenti_attivi.txt

scorri riga per riga e invii a tutti ( dato che in questo file ci saranno SOLO quelli che hanno confermato )

PS il fatto di aggiungere il campo 'utnte_attivo', con questa gestione non serve molto...l'ho fatto solo per farti capire cosa intendevo...inoltre lo script sopra non l'ho provato...ho scritto tutto d'un fiato perciò chiedo già scusa nel caso ci siano errori o sia stato poco comprensibile...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Dando una rapida scorsa a quanto hai scritto la prima cosa che ho pensato è "Si può fare!"

Mi sei stato utilissimo, mi hai dato una bella dritta, mi pare di capire che questo sia un metodo collaudato e perciò lo adotto seduta stante.

Un'ultima cosa se è possibile: mi suggeriresti qualche funzione per criptare una password (chiedendo scusa per la domanda elementare ma studio PHP da 2 mesi)?

 :bye:

risposto 10 anni fa
usecram
X 0 X

Dando una rapida scorsa a quanto hai scritto la prima cosa che ho pensato è "Si può fare!"

Mi sei stato utilissimo, mi hai dato una bella dritta, mi pare di capire che questo sia un metodo collaudato e perciò lo adotto seduta stante.

Un'ultima cosa se è possibile: mi suggeriresti qualche funzione per criptare una password (chiedendo scusa per la domanda elementare ma studio PHP da 2 mesi)?

Io uso md5:

http://it2.php.net/manual/it/function.md5.php

CMQ la mia era solo un'idea, non è detto che sia il metodo + corretto  :)...

ciao  :bye:

Lore

risposto 10 anni fa
Lore
Lore
1
modificato 10 anni fa
X 0 X

Premetto che non ho letto tutto il thread, sono inguaiato con la tesi di laurea, pertanto chiedo venia se ciò che dirò e fuori luogo.

Non è conveniente usare le sessioni poiché bisognerebbe passare il session_id nell'URL presente nella mail e bisognerebbe forzare la durata delle sessioni a tempi molto lunghi. Alcui utenti potrebbero confermare l'operazione dopo diversi giorni. Questo causerebbe un accumulo indiscriminato di dati di sessione, non solo quelli degli utenti che devono effettuare la registrazione ma anche gli utenti "di passaggio", con una conseguente eccessiva occupazione del disco del server.

Basterebbe invece creare un codice casuale al momento della registrazione, magari usando l'md5, memorizzare questo codice nel DB (o su un file) associandolo all'account da attivare ed unirlo all'URL inserito nella mail. Quando l'utente cliccherà sull'URL basterà controllare se il codice è associato ad un account ed in caso positivo attivarlo.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Basterebbe invece creare un codice casuale al momento della registrazione, magari usando l'md5, memorizzare questo codice nel DB (o su un file) associandolo all'account da attivare ed unirlo all'URL inserito nella mail. Quando l'utente cliccherà sull'URL basterà controllare se il codice è associato ad un account ed in caso positivo attivarlo.

Dato che 'usecram' utilizza i file di testo come DB perchè da quanto ho capito il suo host non supporta i Db, gli ho consigliato di passaer nella url la login e la password criptata in md5 e controllarli poi nel file di testo...

Premetto che non ho letto tutto il thread, sono inguaiato con la tesi di laurea, pertanto chiedo venia se ciò che dirò e fuori luogo.

Non si dice niente in questi casi, vero?altrimenti porta sfiga...giusto? ;D

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Non si dice niente in questi casi, vero?altrimenti porta sfiga...giusto? ;D

ciao

Lore

 :death:

 ;D

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Mi è tutto chiaro grazie O0

Beato te che stai per laurearti.

 :bye:

risposto 10 anni fa
usecram
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda