Blogial

« Post precedente

Post successivo »


Semplice User Manager con il Model View Controller - Conferma della registrazione -

Metti al top

L'utente dopo la registrazione riceve una email, dove dopo il formale benvenuto nella comunity, vi è un link per la conferma della registrazione con il valore dell'uid che abbiamo messo nel database al momento della registrazione.

E' superfluo dire che se il valore non è presente nel database la registrazione non viene confermata.

Nel file config-settings-inc.php sono definite una serie di costanti tra cui FROM_MAIL (email di riferimento del vs. sito), WEB_SITE_NAME (il nome del vs. sito) e WEB_SITE_URL (base name dell'url del vs. sito) che vanno settate con i giusti valori per un corretto funzionamento dello script.

Al momento della conferma della registrazione lo script aggiornerà, per sicurezza l'uid dell'utente appena registrato.

UserConfirmData
Codice php:
class UserConfirmData extends UserDataSetter { 
    public function __construct($uid) { 
       $this->uid= $uid; 
    } 
} 

La classe UserConfirmData setta concretamente i dati necessari per la registrazione estentendo UserDataSetter.

UserConfirmValidator
Codice php:
class UserConfirmValidator extends UserValidator{
	public function __construct(UserConfirmData $data){
		parent::__construct($data);
		$this->validation();
	} 
	public function validation(){
		$this->add(new isEmpty('uid',$this->data->uid));
		$this->add(new isValidMd5('uid',$this->data->uid));
	}
}

La classe UserConfirmValidator verifica che il valore passato via get sia una stringa md5.

UserConfirmModel
Codice php:
class UserConfirmModel extends UserModel{
	private $validator= null;
	public function __construct($db){
		parent::__construct($db);
		$this->setData();
	} 
    /* Istanzio le classi necessarie */
	protected function setData(){
		$this->data= new UserConfirmData(getGetValue('u'));
		$this->validator= new UserConfirmValidator($this->data);
		$this->newUid= getUid();
	}
	/* Restituisco la giusta view al controller */
	public function getView(){
		if($this->validator->isValid()){
			if($this->execute()){
				refresh('login.php');
				return new  UserConfirmView(REG_CONFIRM);
			}
			else{
				refresh('register.php');
				return new  GenericErrorView(NOT_REGISTER_YET);
			}
		}
		else{
			refresh('register.php');
			return new  GenericErrorView(NOT_REGISTER_YET);
		}
	}
	public function execute(){
		$sql= "UPDATE users SET user_confirm= '1',";
		$sql.= "user_uid=".$this->db->quote(getUid());
		$sql.= " WHERE user_uid=";
		$sql.= $this->db->quote($this->data->uid)." LIMIT 1";
		return (bool)$this->db->exec($sql);
	}
}

Da notare l'uso di exec per conoscere se l'uid ha una corrispondenza nel Db.

UserConfirmView
Codice php:
class UserConfirmView extends UserView{
	private $message= '';
	public function __construct($msg){
		$this->setMessage($msg);
		$this->setView();
	}
    protected function setView(){
		$this->xhtml = "<div id=\"msg\">\n";
		$this->xhtml.='<p id="user-confirm-msg">'.$this->message."</p>\n";
		$this->xhtml.="</div>\n";
	}
	private function setMessage($msg){
		if(!is_string($msg)){
           throw new InvalidArgException('Invalid parameter. I neeed a string in class <b>['.__CLASS__.']</b>');
        }
		$this->message= $msg;
	}
}
UserConfirmController
Codice php:
class UserConfirmController extends UserController{
	public function __construct($db){
		parent::__construct($db);
		$this->run();
	}
	protected function run(){
		$userConfirmModel= new UserConfirmModel($this->db);
		$this->page= new UserPage(CONFIRM,$userConfirmModel->getView());
		exit($this->getPage());
	}
}
Conclusioni

Il modulo per la conferma della registrazione è il più semplice dello script. Puoi scaricare il nuovo modulo qui.Nel prossimo articolo parlerò del login.

Inserisci il tuo commento

Inserisci il codice che leggi nell'immagine

antispam

Nb.
Devi avere i cookie abilitati per commentare l'articolo.
I commenti saranno soggetti ad approvazione da parte dell'administrator.

Gli articoli in evidenza

Php Trouble Tickets

Metti al top

Script opensource php mysql per la gestione delle richieste degli utenti tramite ticket.

Si tratta di un software gratuito che gira su piattaforme Linux, Windows (Apache).

Permette la completa gestione dei rapporti commerciali, tra voi e i vostri clienti, attraverso il sistema basato sui trouble tickets.

Distribuito sotto licenza MIT ha le seguenti caratteristiche:

  • - Valid css e xhtml strict;
  • - unobtrusive javascript utilizzando il framework jQuery;
  • - multilanguages;
  • - aggiungi/edita/cancella/chiudi/assegna trouble tickets e risposte;
  • - nessuna limitazione sul numero di utenti, amministratori e staff di supporto;
  • - permessi agli operatori, accesso separato utenti;
  • - gruppi di operatori con gestione permessi (CRUD);
  • - illimitate e nested categories;
  • - paging;
  • - moduli di ricerca;
  • - tables sortable;
  • - nessun limite sul numero di TT creabili.

Potete visionare una demo qui.