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.