2011-01-08 10 views
1

を私は次のような形式になります。何もクリックされなかった - PHP

ユーザーで
<form method="post" action="user/?action=reply"> 
    <!--blah --> 
    <input type="submit" name="action" value="Reply"> 

</form> 

/index.phpファイルは、私が持っている:

switch ($_GET['action']) 
{ 

    case 'reply': 
     if (isset($_POST['action']) && $_POST['action'] == 'Reply') 
     { 
      require_once USER_ROOT . 'thread_reply.php'; 
     } 
     else 
     { 
      echo "Nothing was clicked"; 
     } 
... 

出力は何もクリックされなかったです。

error_reporting(E_ALL);何も返さない。

編集:

ますprint_r($ _ GET)を返します:配列([アクション] =>返事を)

ますprint_r($ _ POST)空の配列

+2

試してみてください。このよう

'ますprint_r($ _ POST)を;'と 'ますprint_r($ _ GET)'あなた '前switch 'ステートメントを実行し、出力を質問に追加します。 –

+0

'action'という名前の2つのリクエストパラメータがあります。 1つは 'POST'、1つは' GET'です。それらの名前を変更するだけです。 –

答えて

2

を返すあなたは内$_GETをチェックしていますswitchステートメントが、フォームはpostに設定されています。代わりにmethod="get"に変更するか、代わりに$_POSTを使用してください。

HTTPサーバーは1種類の要求(GETまたはPOST)しか送信できないため、フォームはPOST要求を送信します。ブラウザとPHPの設定によっては、POSTリクエストを使用するときにGET変数が無視されることがあります。

隠しフォームフィールドを代わりに使用することを検討してください。

また、GET要求を使用して取得する必要があり、作成にPOST要求を使用する必要があることに注意してください。あなたの場合は、POSTがより適切であると思われます(返信)。

+0

フォームデータは投稿経由で送信されます...私はアクションのために取得します – eddienotizzard

+0

しかし、送信ボタンの名前は 'action'で、値は' Reply'です。代わりにそれを使用してGET部分をスクラップできませんか? – netcoder

1

私はあなたが二つの値が、.. :)

を使用しているなぜあなたはフォームアクションからパラメータを削除し、フォーム内の隠しフィールドに変換する必要があります見当がつかない。私は、あなたがリクエストを行うときにpostパラメータを取得することができるとは確信していません。

<form method="post" action="user"> 
    <!--blah --> 
    <input type="hidden" name="target_action" value="reply" /> 
    <input type="submit" name="action" value="Reply" /> 
</form> 

そして、このようなPHPファイルを変更します:追加

switch ($_POST['target_action']) 
{ 

    case 'reply': 
     if (isset($_POST['action']) && $_POST['action'] == 'Reply') 
     { 
      require_once USER_ROOT . 'thread_reply.php'; 
     } 
     else 
     { 
      echo "Nothing was clicked"; 
     } 
関連する問題