2012-03-02 79 views
1

我在表达式引擎(1.6.8)模板中发布表单。我正在使用jQuery来做,但也尝试过HTML表单 - 结果相同。发布表单后,PHP超全局$ _POST为空,即使我的模板上已启用PHP(在包含处理模板上的表单和输出的模板的输入上),并且可以在Firebug中看到POST变量。

任何人都可以提出什么可能会导致此?

<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} 
+0

不知道,好像形式是越来越提交两次,因为jquery函数中的表单标签或誓言值的任一操作属性 – 2012-03-02 10:47:31

+0

誓约值是什么? – codecowboy 2012-03-02 10:58:05

+0

其授权密钥要求进行识别,一般追加在url – 2012-03-02 10:59:08

回答

1
  • 检查,如果你想要的参数确实送出

  • 网络选项卡

    检查URL如果你使用任何类型的路由机制或URL重写它的正确

  • ,你可能要检讨它也

  • 检查您的验证和XSS规则(如果有的话),因为一旦发现XSS提示,它可能会拒绝整个数组。

发生在我前一阵子(CI),我是把它发送到错误的URL

+0

如果URL错误,我怎么能看到var_dump($ _ POST)的输出? – codecowboy 2012-03-02 11:03:49

+0

你可以发布你的服务器端代码吗? – Joseph 2012-03-02 11:12:06

+1

完成但我解决了这个问题。该URL需要一个尾部的斜线,大概是与EE或者.htaccess中的某事有关。 – codecowboy 2012-03-02 11:51:00

1

您可能要重新检查action属性,是U确保你的数据发送到正确的网址?我怀疑可以过滤任何东西。

0

好像形式得到,因为jQuery函数形式的标签或誓言值任action属性的两次提交

0

这可能是有用的

<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>` 
相关问题