Проблема отправки формы


Я понятия не имею, почему моя форма отправки работает только в том случае, если я вывожу на экран значения аргумента $form.

Если я добавлю:

echo '<pre>';
print_r($form);
echo '</pre>'

В моей функции отправки я получаю новую "страницу" с распечатанными этими данными, но когда я раскомментирую это, кажется, ничего не работает, я снова вижу страницу формы.

function gate_check_form_submit($form, &$form_state) {
    $post = $form['#post'];
//    echo '<pre>';
//    print_r($form);
//    echo '</pre>';
    echo '<pre>';
    print_r($post); //gives nothing
    echo '</pre>';

    $day = intval($post['gate_day']);
    $month = intval($post['gate_month']);
    $year = intval($post['gate_year']);
    $isRemember = isset($post['gate_remember_me']);
    if ($day && $month && $year) {
        $allowed_age = (int) variable_get('gate_minimal_age', 18);
        $min_born_time  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y") - $allowed_age);
        $born_time = mktime(0, 0, 0, $month, $day, $year);
        echo '<pre>';
        print_r($min_born_time);
        echo '</pre>';
        echo '<pre>';
        print_r($born_time);
        echo '</pre>';
        if ($min_born_time >= $born_time) {
            echo 'yes';
           sess_write(GATE_SESSION_NAME, TRUE);
           if ($isRemember) {
               set_cookie(GATE_COOKIE_NAME, sha1($born_time + srand()), time()+60*60*24*7);
           }
           drupal_goto('/');

        } 
        echo 'no';
    }
}
 2
Author: user1077, 2011-05-04

1 answers

Вы делаете это неправильно*. Вам следует прочитать краткое руководство по API форм , чтобы понять, как правильно использовать обработчики проверки и отправки.

* По нескольким причинам, самая большая из которых заключается в том, что вы используете #post, что является большим запретом. Вместо этого следует использовать очищенные значения из $form_state['values'].

 5
Author: Damien Tournoud, 2011-05-04 12:16:13