Aiuto: non capisco dove sbaglio.

Salve, sto scrivendo il mio primo progetto utilizzando lo ZF.

Sto realizzando la parte di iscrizione/login, e mi trovo in questa situazione: lo Zend mi carica l'Error Controller quando cerco di iscrivere un nuovo utente, ce non riesco a capire per quale motivo.

public function registerAction()
    {
      $this->view->title='Registrati a '.SN;
      $form = $this->getRegisterForm();
      if ($form->isValid($_POST)) {
         $values = $form->getValues($_POST);
         if (($values["password"]==$values["rpassword"])&&(!$this->mh->userExist($values["username"]))&&(!$this->mh->mailExist($values["email"]))) {
            $res = $this->mh->addUser($values["username"],$values["password"],$values["email"]);
            if ($res) {
               $this->_fm->addMessage('Registrazione avvenuta con successo.');
               $id = $this->mh->getID($username); // L'errore temo sia da qui..
               $act = $this->mh->getActCode($id); 
               $mail = $this->mh->getEmail($id); 
               $messaggio = "Per attivare il tuo account visita questo indirizzo:\n".BASEURL."/log/activate/code/".$act;
               $res = mail($mail, "Codice di attivazione ".SN, $messaggio, "From: ".AM); 
               if ($res) $this->_fm->addMessage('Email di attivazione spedita correttamente. A breve riceverai via email il codice per attivare il tuo account.');
               else $this->_fm->addMessage('Si è verificato un errore. Riprovare in seguito e, se il problema persiste, contattare l\'amministratore.'); // ... A qui, perché senza questo mi pare vada.
            }
            else $this->_fm->addMessage('Errore sconosciuto.');
            $this->_redirect(BASEURL.'log/register');
         }
         else {
            if ($values["password"]!=$values["rpassword"]) $this->_fm->addMessage('Le password non corrispondono.');
            if ($this->mh->userExist($values["username"])) $this->_fm->addMessage('Username già in uso.');
            if ($this->mh->mailExist($values["email"])) $this->_fm->addMessage('Esiste già un account uiscritto con questa email.');
            $this->_redirect(BASEURL.'log/register');
         }
      }
      else {
         $values = $form->getValues($_POST);
         if ($values["username"]!='') { 
            $this->_fm->addMessage('Dati non validi.'); 
            $this->_redirect(BASEURL.'log/register');
            }
         $this->view->form = $this->getRegisterForm();
      }
    }

Ecco parte del model:

public function filter($string) {
      return mysql_real_escape_string(strip_tags(trim($string)));
   }
   public function getActCode($id)
   {
      $db = Zend_Registry::get('db');
      $where = 'WHERE id = '.(int)$id;
      $result = $db->fetchOne('SELECT actcode FROM sl_users '.$where);
      return $result;
   }
   public function getID($nick)
   {
      $db = Zend_Registry::get('db');
      $where = 'WHERE nick = '.$db->quote($this->filter($nick));
      $result = $db->fetchOne('SELECT id FROM sl_users '.$where);
      return $result;
   }
   public function getEmail($id)
   {
      $db = Zend_Registry::get('db');
      $where = 'WHERE id = '.(int)$id;
      $result = $db->fetchOne('SELECT email FROM sl_users '.$where);
      return $result;
   }
   public function addUser($username, $password, $email)
   {
      $db = Zend_Registry::get('db');
      $data = array(
      'nick' => $this->filter($username),
      'password' => md5($this->filter($password)),
      'email' => $this->filter($email),
      'joindate' => time(),
      'lastvisit' => time(),
      'actcode' => md5(uniqid(rand(), true)));
      $res = $db->insert('sl_users',$data);
      return $res;
   }

Sapete aiutarmi?  :-[

inviato 8 anni fa
sydarex
modificato 8 anni fa
X 0 X

nella "action" del form cosa hai messo?

risposto 8 anni fa
Gianni Tomasicchio
X 0 X
$form->setAction(BASEURL.'log/register')
           ->setMethod('post');
risposto 8 anni fa
sydarex
X 0 X

invece di usare l'error controller prova a far lanciare le eccezioni al front controller, così dal messaggio di errore che riceverai potrai capire quale controller e quale action non viene trovata

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Incredibile, adesso l'errore lo lancia da un'altra parte xDinvece di usare l'error controller prova a far lanciare le eccezioni al front controller, così dal messaggio di errore che riceverai potrai capire quale controller e quale action non viene trovata

 :bye:Ci proverò, anche se ho lasciato perdere lo ZD per questo progetto, mi sta portando via un mare di tempo invece di velocizzarmi il lavoro.

Devo studiarmelo per bene quando avrò tempo.

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