Нужно ли вручную отправлять строки запроса на запросы POST? - PullRequest
0 голосов
/ 09 января 2012

Это CakePHP / Общий вопрос PHP.

В моем приложении я использую строку запроса, подобную /login?continue=/admin/posts Эта строка запроса используется для перенаправления пользователей на URL-адрес в запросе, но это не такработать так, как будто приложение не может видеть строку ...

Это заставляет меня задуматься, так как в основном, когда вы попадаете на страницу со строкой, это запрос GET, когда, как при входе в систему, онстановится запросом POST или XML (если используется AJAX).Нужно ли добавлять строку запроса вручную в форму, чтобы POST мог ее увидеть?

Либо в действии формы, либо в скрытом вводе?Или я лаю не на том дереве?

В настоящее время я получаю запрос примерно так:

if(isset($this->params['url']['continue']))
{
    $pathtoredirect = $this->params['url']['continue'];
}
else
{
    $pathtoredirect = $this->Auth->redirect();
}

Но это в запросе POST, поэтому, возможно, запрос потерян ... идобавление его к скрытому вводу не решило бы проблему с текущим кодом, поэтому я либо изменил бы код для просмотра скрытого поля, либо передал запрос с действием в форме?

например <form action="/login?continue=/admin/posts" method="post">

Правильно ли я считаю это?И сможет ли кто-нибудь предложить решения или плюсы и минусы двух упомянутых мною методов?

Короче, я спрашиваю, как добавить строку запроса в значение действия моей формы

В настоящее время это выглядит так:

php echo $this->Form->create('User',
    array(
        'id' => 'loginform', 
        'type' => 'post',
        'url' => array
        (
            'admin'=>false,
            'controller' => 'users', 
            'action' => 'login'
        )
    )
); 

Так как бы я добавить строку запроса в форму?

Спасибо

Ответы [ 3 ]

1 голос
/ 09 января 2012

При получении запроса POST вы можете получать переменные POST и GET через суперглобальные переменные $ _POST и $ _GET.

Вы можете отправить свой параметр в $ _GET, включив его в атрибут action формы, или отправить его в $ _POST, создав тег <input type="hidden"> в форме

0 голосов
/ 09 января 2012

Решением было сделать это:

<?php echo $this->Form->create('User',
            array('id' => 'loginform', 'type' => 'post',
            'url' => array('admin'=>false,'controller'=>'users','action'=>'login','url'=>$this->params['url']['continue']))); ?>

, поскольку у меня уже настроен маршрут для обработки дополнительного параметра URL:

Router::connect('/auth/login', array('controller'=>'users','action'=>'login'));

    Router::connect('/auth/login?continue=:url',
                    array('controller'=>'users','action'=>'login'),
                    array(
                        'url' => '[A-Za-z0-9/\._-]+',
                        'pass' => array('url')
                    ));

Если кто-либо видит какие-либо проблемы с этим способомЯ делаю это, хотя, пожалуйста, не стесняйтесь комментировать.

0 голосов
/ 09 января 2012

Косая черта (/) является зарезервированным символом.Кодируйте его с помощью %2F.

http://blooberry.com/indexdot/html/topics/urlencoding.htm#whatwhy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...