Bonjour tous le monde;
Comme je m'autoforme sur Zend Framwork, j'ai trouvé sur la toile une application bien faite. J'arrive à l'installer et de la faire tourner sur mon localhost. J'essai maintenant à décortiquer le code mais je me trouve coincer sur le faite comment il insére les données dans la base de données je dis bien quand je fais des tests d'insertion cela marche à merveille. Il s'agit d'ajout d'un User. Alors quand je me suis rendu sur la classe Model_DbTable_Users biensur qui se trouve model\DbTable\users.php elle completement vide.
et dans UserController.php j'ai ce code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php class Model_DbTable_Users extends Zend_Db_Table_Abstract { protected $_name = "users"; } ?>
Le formulaire est composé des éléments suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 public function registerAction() { $form = new Model_Form_UserRegister ( ); $this->view->form = $form; if ($this->_request->isPost ()) { $formData = $this->_request->getPost (); if ($form->isValid ( $formData )) { $datas = $formData; unset($datas['submit']); unset($datas['password2']); unset($datas['cgv']); $datas['password'] = md5($datas['password']); $email = $datas['email']; $datas = array_map('strtolower', $datas); $datas = array_map('ucwords', $datas); $datas['email'] = $email; $Users = new Model_DbTable_Users(); $Users->insert($datas); /* $mail = new Zend_Mail(); $mail->setBodyHtml('Nous avons bien pris en compte votre inscription au site'); $mail->setFrom($email, 'TP1-Ecommerce'); $mail->addTo($email); $mail->setSubject('Bienvenue sur TP1-Ecommerce'); $mail->send();*/ $email = $form->getValue('email'); $password = $form->getValue('password'); $authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter()); $authAdapter->setTableName('users') ->setIdentityColumn('email') ->setCredentialColumn('password') ->setCredentialTreatment('MD5(?)') ->setIdentity($email) ->setCredential($password); $authAuthenticate = $authAdapter->authenticate(); $storage = Zend_Auth::getInstance()->getStorage(); $storage->write($authAdapter->getResultRowObject(null, 'password')); $session = Zend_Registry::get('session'); $session->panier = new Model_Panier_Panier(); if ($this->addToCartTemp()) { return $this->_helper->redirector('index','panier'); } $this->_helper->redirector('index','index'); } } }
UserRegister.php
Est ce que cette ligne $formData = $this->_request->getPost (); est un tableau qui contient tous les champs à inserer dans la table users ? Est ce que c'est facon pour proteger mes champs contre toutes les intrusions malveillantes?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 <?php class Model_Form_UserRegister extends Zend_Form { public function init() { $this->setName ( 'UserRegister' ); $this->setAction('../user/register'); $email = new Model_Form_EText ( 'email', 'Email : ' ); $email->addValidator ( 'EmailAddress' )->addValidator(new Zend_Validate_Db_NoRecordExists('users','email')); $password = new Zend_Form_Element_Password ( 'password' ); $password->setLabel ( 'Mot de passe : ')->addFilter ( 'StripTags' )->addFilter ( 'StringTrim' )->setRequired ( true ); $password2 = new Zend_Form_Element_Password ( 'password2' ); $password2->setLabel ( 'Vérification du mot de passe : ' )->addFilter ( 'StripTags' )->addFilter ( 'StringTrim' ); $nom = new Model_Form_EText ( 'nom', 'Nom : ' ); $prenom = new Model_Form_EText ( 'prenom', 'Prénom : ' ); $adresse = new Model_Form_EText ( 'adresse', 'Adresse : ' ); $codePostale = new Model_Form_EText ( 'codePostale', 'Code Postale : ' ); $codePostale->addValidator(new Zend_Validate_Regex('#[0-9]{2} ?[0-9]{3}#')); $ville = new Model_Form_EText ( 'ville', 'Ville : ' ); $telMobile = new Model_Form_EText ( 'telMobile', 'Numéro de téléphone mobile : ' ); $telMobile->setRequired(false)->addValidator('Digits')->addValidator(new Zend_Validate_StringLength(10)); $telFixe = new Model_Form_EText ( 'telFixe', 'Numéro de téléphone fixe : ' ); $telFixe->setRequired(false)->addValidator('Digits')->addValidator(new Zend_Validate_StringLength(10)); $newsletter = new Zend_Form_Element_Checkbox('newsletter'); $newsletter->setLabel('En cochant cette case, je m\'abonne à la newsletter'); $cgv = new Zend_Form_Element_Checkbox('cgv'); $cgv ->setLabel('En cochant cette case, j\'accepte les CGV')->setRequired(true); $submit = new Zend_Form_Element_Submit ( 'submit' ); $submit->setAttrib ( 'class', 'submitbutton' )->setLabel ( 'Continuer' )->setAttrib('class', 'submit'); $elements = array ($email, $password, $password2, $nom, $prenom, $adresse,$codePostale,$ville,$telMobile,$telFixe,$newsletter,$cgv ,$submit ); $this->addElements ( $elements ); }
Merci de m'éclairer ce qui se passe.
Partager