@supercapocc said:
Un database deve essere ottimizzato, quindi ogni tabella deve avere la sua funzione. Il codice di attivazione una volta utilizzato non servirà più, quindi facciamo una tabella apposita.
No, $_GET si deve usare nella pagina di arrivo. $_GET , in inglese afferrare, prendere. Non significa trasmettere.
Nella pagina di partenza strutturi il link della pagina di arrivo, passandogli una coppia chiave-valore che sarà recuperata in seguito.
[PHP]
tuosito.com/activation.php?code='.$code;
[/PHP]
Ciao e buon PHP.
A cosa serve una tabella apposita totalmente inutile ?
Quando registri un utente nel tabella utenti, user, users o vatteloapesc devi mettere due campi che sono: SIDREGISTRATION e ACTIVATION. Quando l'utente si registra il primo contiene l'id di sessione e l'altro uno 0. Al momento in cui la mail viene autenticata il primo contiene uno 0 e il secondo un 1; attivazione fatta fine del discorso.
Una tabella relazionale come dici tu è improponibile.
Pensa a questo scenario: Ho un database dove in una tabella registro gli utenti, un'altra se sono attivi o no, un'altra per i permessi e una per le relazioni con i contenuti che immettono e una per i contenuti. Vuoi forse dirmi che ogni volta che devo andare a guardare chi ha immesso cosa devo anche controllare se si è autenticato ? Giammai. Se non si è autenticato non immette un bel niente quindi non ho niente da controllare.
L'ottimizzazione delle tabelle come dici tu, nei database relazionali, non riguarda certamente un campo com il SID di autenticazione. Si usa dividere i dati degli utenti su più tabelle per non stressare i database in base a quelli che possono variare nel tempo e quelli che non verieranno mai o quelli che possono aggiungersi (post, ordini evasi in un ecommerce, articoli inviati in un cms, altre forme di archivio).
Tra le altre cose usando una tabella come dici tu ogni volta che un utente si autentica dovresti prima fare una query sulla tabella utenti poi se la coppia username=>password è corretta una seconda query sulla tabella dei codici di attivazione. E' semplicemente una scemenza enorme.
[php]
$strQuery = "SELECT username, password, activation FROM users WHERE userID = $userID";
[/php]
Semplice, chiara e concisa