5

それは私が直面している非常に奇妙なエラーです.私はいくつかのhtmlを持っています.

<input type="checkbox"  name="om[1]" value="10">
<input type="checkbox"  name="om[2]" value="20">
<input type="checkbox"  name="om[3]" value="30">

このフォームを投稿して実行すると

print_r($_POST['om'])
it gives just prints 'Array' as string
and if i do print_r($_POST['om'][0]) it gives A
and if i do print_r($_POST['om'][1]) it gives r 

しかし、私がそうするなら

print_r($_REQUEST['om'])
it display a proper array

Array
   (
    [1] => 10
    [2] => 20
    [3] => 30
  )

問題は、表示されていない配列値を取得するために$_POSTを使用しているときです。投稿された値が配列にない場合は正常に機能します。しかし、配列であっても$_REQUEST['om']で必要な結果をすべて取得できます。

そして、それはserverでのみ発生しており、localhost では正常に動作しています。サーバーで何が問題なのか誰にもわかりますか??

4

11 に答える 11

2

サーバーで何が問題なのか誰にもわかりますか?

あなたはそれにアクセスでき、トラブルシューティングができるので、おそらくあなた自身がそうすることができます。

あなたが説明したことから、あなたのサーバー$_POST['om']には文字列があります "Array"。限目。

質問に投稿したコードからは見えないのは、それがどのようになったかだけです。

ところで、文字列"Array"はサーバー上に (おそらく偶然に) 配列を文字列にキャストするコードと構成を配置したことを示しています ( http://php.net/language.types.type-juggling )。

最新の PHP バージョンでは、そのようなことに気付くでしょう。したがって、最初に行うべきことは、サーバーでエラー ログを有効にし、冗長性を最高レベルに設定して、PHP エラー ログで警告、通知、厳密な警告を確認できるようにすることです。次に、エラー ログをたどって、配列変換通知を探します。

それでも問題が解決しない場合は、ステップデバッガーを手に入れ、リモートデバッグを行って、期待が満たされ、どこが壊れているかを確認する必要があります。実行中にプログラムを検査できるため、通常はこれが何が起こるかを知る最も速い方法です。

于 2013-08-12T05:04:40.863 に答える
0

チェックボックス、それらをチェックすると、値が取得されます

<input type="checkbox"  name="om[1]" value="10" checked="true">
<input type="checkbox"  name="om[2]" value="20" checked="true">
<input type="checkbox"  name="om[3]" value="30" checked="true">

フォームが送信されると、「オン」のチェックボックス コントロールのみが成功します。仕様から (4.01)

于 2013-08-16T09:17:51.557 に答える
0

こんにちは、あなたのコードを確認しました。それは正常に動作します。フォーム送信メソッドが欠落していると思います

method="post"を使用してください

om[1]、om[2]、om[3] のようなインデックス配列を使用できますが、問題ありません。

コードは次のとおりです。

<form method="post">
 <input type="checkbox"  name="om[1]" value="10">
 <input type="checkbox"  name="om[2]" value="20">
 <input type="checkbox"  name="om[3]" value="30">
 <input type="submit" name="submit" value="Submit">
</form>

<?php
if(isset($_POST['submit'])){
  //print_r($_REQUEST['om']);
  print_r($_POST['om']);
}
?>

このコードを確認してください。

于 2013-08-14T09:14:48.173 に答える
0

$_POST['om']誤って文字列に変換されたようです。print_r($_POST['om'] . "")デバッグステートメントがありませんか?

問題は、ここに表示されていないコードのどこかにあると思います。ただし、変数を分析するには、 var_dumpをより頻繁に使用する必要があります。

于 2013-08-13T14:00:18.033 に答える
0

name="om[]" - キーを削除して試してみてください。

    <pre>
    <form method="post">
    <input type="checkbox"  name="om[]" value="10">
    <input type="checkbox"  name="om[]" value="20">
    <input type="checkbox"  name="om[]" value="30">
    <input type="submit">
    </form>
    <?php
    print_r($_POST['om']);
    print_r($_REQUEST['om']);
    ?>

出力:

    Array
     (
        [0] => 10
        [1] => 20
        [2] => 30
     )

    Array
     (
        [0] => 10
        [1] => 20
        [2] => 30
     )
于 2013-08-13T06:15:51.587 に答える
0

私はかなり確信しています

<input type="checkbox"  name="om[1]" value="10">

と同じではありません

$_POST['om'][1]

フォーム内のものは文字列型のインデックス「1」を持つ配列ですが、$_POST 変数では $_POST['om'] の最初の要素にアクセスしています。

したがって、HTML フォームで整数以外のものを使用するか、 を使用して値にアクセスする必要があります$_POST['om']['1']

于 2013-07-30T10:51:03.297 に答える