2012-03-02 4 views
1

私はexpressionengine(1.6.8)テンプレートでフォームを投稿しています。私はjqueryを使ってやっていますが、HTMLフォームも試しました - 同じ結果です。私のテンプレートにPHPが有効になっていて(フォームを含むテンプレートの入力と処理テンプレートの出力で)PHPが有効になっていて、firebugのPOST変数を見ることができますが、PHPのスーパーグローバル$ _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関数の宣誓値のいずれか –

+0

宣誓書とは何ですか? – codecowboy

+0

その認証秘密鍵は、一般的にURL –

答えて

1
  • jQueryの機能であるため、フォームタグや宣誓値のいずれかのaction属性の二回提出なっているように、それはあなたがしたいパラメータが本当に

  • を送出している場合は、ネットワークタブを確認しそうですそれはあなたが機構やURL書き換えをルーティングの任意の並べ替えを使用している場合、あなたは

  • もそれを確認したいかもしれません

  • 正しいかどう

    は、URLをご確認ください

  • XSSのヒントが見つかると、配列全体を拒否する可能性があるため、検証とXSSルール(存在する場合)を確認してください。

は、しばらく前に(CI)私に起こったと私はそれが有用である可能性が間違ったURL

+0

URLが間違っていると、どうすればvar_dump($ _ POST)からの出力を見ることができますか? – codecowboy

+0

あなたはサーバー側のコードを投稿できますか? – Joseph

+1

完了しましたが、私は問題を解決しました。 URLには末尾のスラッシュが必要でした。おそらく、.htaccessのEEまたはsthと関係がありました。 – codecowboy

1

あなたは再チェックaction属性にしたいかもしれませんが、あなたは右のURLにデータを送信しているuは確かです?私は、何かがフィルタリングされる可能性があるとは思わない。

0

フォームが

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>` 
関連する問題