Почему $ _POST пусто, когда я вижу переменные POST в firebug? - PullRequest
1 голос
/ 02 марта 2012

Я публикую форму в шаблоне expressionengine (1.6.8).Я делаю это с помощью jquery, но пробовал также HTML-форму - тот же результат.После отправки формы суперглобальный $ _POST в PHP пуст, хотя я включил PHP в своих шаблонах (при вводе для шаблона, содержащего форму, и в выходной файл шаблона обработки) и могу видеть переменные POST в firebug.1002 * Кто-нибудь может подсказать, что может вызвать это?

<html>
<head>
    <script type="text/javascript" src="/_scripts/jquery-1.6.1.min.js"></script>

    </head>
    <body>
        <form action="/select-locale/processing" method="POST">
            <input type="text" name="test"/>
            <input type="submit" name="submit" value="submit">
        </form>
        <a id="test" href="">link</a>

            <script type="text/javascript">
                $(function(){
                    $('#test').bind('click', function(e){
                        e.preventDefault();
                        var path = "/select-locale/processing"
                        var form = $('<form/>');
                        form.attr("method", "post");
                        form.attr("action", path);
                         var field = $('<input></input>');

                        field.attr("type", "hidden");
                        field.attr("name", 'locale');
                        field.attr("value", 'NZ');

                        form.append(field);
                        $('body').append(form);

                        form.submit();
                    });
                });


            </script>
    </body>
</html>

код на стороне сервера (наследуется, а не мой):

<?php
var_dump($_POST);
var_dump($_GET);exit;
if ( ! isset($_POST['locale']))
{
    $locale = FALSE;

    $returnPage = "/";
}
else
{
    $locale = $_POST['locale'];

    $returnPage = $_POST['returnPage'];


}

if (isset($_GET['locale'])) {

    $locale = $_GET['locale'];
    $returnPage = "/"; 
?>
{exp:cookie_plus:set name="cklocale" value="<?php echo $locale;?>" seconds="2678400"}

{exp:session_variables:set name="userLocale" value="<?php echo $locale;?>"}  <?php
}
?>
{exp:cookie_plus:set name="cklocale" value="<?php echo $locale;?>" seconds="2678400"}

{exp:session_variables:set name="userLocale" value="<?php echo $locale;?>"}  


{exp:session_variables:get name="testSession"} 

{if  '{exp:session_variables:get name="testSession"}'=='yes' }
    {redirect="<?php echo $returnPage;?>"}
{if:else}
    {redirect="/nocookies/"}
{/if}

Ответы [ 4 ]

1 голос
/ 02 марта 2012
  • проверьте вкладку сети, если нужные параметры действительно отправлены

  • проверьте URL, если он правильный

  • если вы используете какой-либо механизм маршрутизации или перезаписи URL, вы можете также просмотреть его

  • проверьте правильность и правила XSS (если таковые имеются), так как он может отклонить весь массив после обнаружения подсказок XSS.

случилось со мной некоторое время назад (CI), и я отправил его не по адресу URL

1 голос
/ 02 марта 2012

Возможно, вы захотите еще раз проверить атрибут действия, вы уверены, что отправляете данные по нужному URL? Я сомневаюсь, что все может быть отфильтровано.

0 голосов
/ 02 марта 2012

Может быть полезно

 <html>
     <head>
      <script type="text/javascript" src="js/jquery.js"></script>
     </head>
     <body name="test">
        <form action="/select-locale/processing" method="POST">
            <input type="text" name="test"/>
            <input type="submit" name="submit" value="submit">
        </form>
        <a id="test" href="">link</a>
    </body>
    </html>
    <script type="text/javascript">
    $(function(){
    $('#test').bind('click', function(){
    var form ='<form action="/select-locale/processing" name="newform" method="POST"><input type="hidden1" name="locale" value="NZ"></form>';
    $('body').append(form);
    alert('added');
    document.newform.submit();
    });
});
</script>`
0 голосов
/ 02 марта 2012

кажется, что форма отправляется дважды из-за атрибута действия тега формы или значения присяги в функции jquery

...