2014-10-08 189 views
0

我正在使用zend中的忘記密碼模塊。我想要將'memcode'用戶發送到控制器,以便我可以傳遞查詢以重置密碼。在zend中將數據從視圖傳遞到控制器

ForgotController.php

public function changepasswordAction() 
    { 
    $post = $this->request->getPost(); 
    $dbAdapter=$this->getServiceLocator()->get('Zend\Db\Adapter\Adapter'); 
    $form = new ForgotForm($dbAdapter); 
    $project = new Projects(); 
    $id=$this->params()->fromQuery('id'); 
    $viewModel = new ViewModel(array('form' =>$form)); 
    return $viewModel; 

    } 



     public function resetAction() 
     { 
     $pswd = $this->getRequest()->getPost('password'); 
     $id=$this->params()->fromRoute('id',0); 
     echo $id; 
     $sql="UPDATE projects set password = '".$pswd."' where memcode = '".$id."'"; 
     $statement = $dbAdapter->query($sql); 
     $result = $statement->execute(); 
     } 

視圖代碼:changepassword.phtml

echo $_GET['id']; 
$form = $this->form; 
$form->setAttribute('action', $this->url(NULL,array('controller'=>'Forgot', 'action' =>'reset','id'=>$_GET['id']))); 
$form->setAttribute('method', 'post'); 
$form->prepare(); 
echo $this->form()->openTag($form);?> 
<h4>Set new password</h4> 
<p> Welcome! <?php //echo $this->user_email; ?> </p> 
<table> 
<tr> 
<td><dt><?php echo $this->formLabel($form->get('password')); ?></dt> 
<dd><?php 
echo $this->formElement($form->get('password')); 
echo $this->formElementErrors($form->get('password')); 
?></dd></td></tr> 

<tr> 
<td><dt><?php echo $this->formLabel($form->get('confirm_password')); ?></dt> 
<dd><?php 
echo $this->formElement($form->get('confirm_password')); 
echo $this->formElementErrors($form->get('confirm_password')); 
?></dd></td></tr> 

<tr> 
<td><dt><?php echo $this->formElement($form->get('submit')); 
echo $this->formElementErrors($form->get('submit')); 
?></dd></td></tr> 

</table> 
</dd> 
</section> 

如何通過我通過「$ _GET [ '身份證']到控制器resetAction function.Now獲得ID我得到O作爲它的值?

+0

$ _GET不是你應該在ZF2中使用過的東西。更新密碼的方式非常危險,因此我建議您檢查一下密碼安全性。現在的情況是,你會受到SQL注入的危害。 – Sam 2014-10-08 06:20:11

回答

0

不要直接使用$ _GET當使用ZF2時,您可以在您的changePasswordAction中執行此操作:

$viewModel = new ViewModel(array('form' => $form, 'id' => $id)); 

,然後在changepassword.phtml就可以直接使用這個變量作爲$this->id

另外要注意您的代碼:你要小心這樣的SQL這可能是受到SQL注入攻擊...

+0

但是如何在resetAction()中獲取此id,以便我可以觸發查詢來重置密碼 – prachi 2014-10-08 06:29:18

+0

您必須替換行中的$ _GET ['id']'$ form-> setAttribute('action',$ this-> url(NULL,array('controller'=>'Forgot','action'=>'reset','id'=> $ this-> id)));'然後'$ id = $ this - > params() - > fromRoute('id',0);'會正常工作... – 2014-10-08 13:05:34

+0

仍然我將id的值作爲0 – prachi 2014-10-09 10:17:42

相關問題