2012-03-02 62 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>` 
相關問題