2010-06-25 3 views
0

Я делаю этот учебник: http://www.phpeveryday.com/articles/Zend-Framework-Database-Creating-Input-Form-P494.htmlнужна помощь понимание GetRequest() Zend Framework

Мы строим простую форму входного сигнала с помощью POST и подачи его в базу данных MySQL. Все работает нормально. Я просто пытаюсь окунуться в функцию getRequest().

В контроллере, мы имеем следующее:

public function registerAction() 
{ 
    $request = $this->getRequest(); 

    $this->view->assign('action',"process"); 
    $this->view->assign('title','Member Registration'); 
    $this->view->assign('label_fname','First Name'); 
    $this->view->assign('label_lname','Last Name'); 
    $this->view->assign('label_uname','User Name'); 
    $this->view->assign('label_pass','Password'); 
    $this->view->assign('label_submit','Register');  
    $this->view->assign('description','Please enter this form completely:');   
} 

, а затем в виду:

<form name="register" method="post" action="<?php echo $this->escape($this->action)?>"> 
    <table> 
    <tr> 
     <td><?php echo $this->escape($this->label_fname)?></td> 
     <td><input type="text" name="first_name"></td> 
    </tr> 
    <tr> 
     <td><?php echo $this->escape($this->label_lname)?></td> 
     <td><input type="text" name="last_name"></td> 
    </tr> 
    <tr> 
     <td><?php echo $this->escape($this->label_uname)?></td> 
     <td><input type="text" name="user_name"></td> 
    </tr> 
    <tr> 
     <td><?php echo $this->escape($this->label_pass)?></td> 
     <td><input type="password" name="password"></td> 
    </tr> 
    </table> 
    <input type="submit" name="submit" value="<?php echo $this->escape($this->label_submit);?>"> 
    </form> 

Так что я не понимаю, почему нам нужен GetRequest(), если я уже есть метод = "post" и набор действий? Если я прокомментирую это, скрипт не работает. Я вижу, что это необходимо, но я не понимаю, почему, особенно потому, что переменная $ request не используется?

+0

Вскоре вы должны изучить класс Zend_Db_Table_Abstract. Он имеет методы обработки SQL-запросов, поэтому вам не нужно сворачивать свои собственные. Код в учебнике созрел для атаки SQL-инъекций. –

+0

@ peter-Я считаю, что это следующий учебник, он начинает смотреть на другие способы накормить Db. – Joel

+0

Прохладный, вам, вероятно, также понравится Zend_Form, он делает заполняющие формы со значениями. –

ответ

1

В коде, который вы предоставили, $ request не используется вообще. Я не понимаю, почему комментировать это может сломаться.

Что происходит, когда вы прокомментируете это?

Функция getRequest() предназначена для получения объекта Request, который дает вам параметры и т. Д. (Т. Е. Контроллер, действие и т. Д.);

EDIT:

Я имел взгляд на учебник, и он имеет это:

12 
13 $sql = "INSERT INTO `user` 
14   (`first_name` , `last_name` ,`user_name` ,`password`) 
15   VALUES 
16   ('".$request->getParam('first_name')."', '".$request->getParam('last_name')."', '".$request->getParam('user_name')."', MD5('".$request->getParam('password')."'))"; 
17 $DB->query($sql); 

Вы заметите, что он использует переменную $ запрос, чтобы получить параметры: ' first_name ',' last_name ',' user_name ',' password '

И сохраняет их в БД.

+0

Комментируя это, я получаю сообщение об ошибке «Произошла ошибка приложения». раскомментируйте его, и он работает. – Joel

+0

@ Valorin - SQL-код, который вы только что добавили, находится в другом методе и представлении, а также содержит собственный getRequest с запросом $. – Joel

+0

Можете ли вы получить traceroute ошибки? –

Смежные вопросы