ホームページ >バックエンド開発 >PHPチュートリアル >PHP で同じ名前で値が異なる複数のフォーム データ インスタンスを受け取る方法、namevalue_PHP チュートリアル
最近、問い合わせメッセージ管理システムに問題が発生し、メッセージ フロント デスク フォームに同じ名前の値が多数入力されていました。これらのボックスは、ユーザーによって異なる値で入力されていました。 PHPプラットフォームであり、フロントデスクのフォームは変更できないことが要求されます(このフォームを使用しているWebサイトが多すぎるため、転送の互換性を考慮する必要があります。フォームの送信アドレスさえ変更できません)。 ASP ページに送信する必要があります)。フォーム送信アドレスの問題は、擬似静的メソッドまたはその他のメソッドを使用して直接解決できます。以前のシステムはASPで作られていたため、ASPでは同じ名前の値を持つフォームを処理する際、フロントから提出された値をカンマで直接繋いでいましたが、PHPでは同じ名前の入力を受け取った場合にそれを処理します。最後の値は前の値を上書きします。では、フロントエンドを書き換えずに、同じ名前を持つすべての入力の値を受け入れるにはどうすればよいでしょうか?そのとき 2 つのアイデアが思い浮かびました。1 つ目は、入力の名前を配列の形式でバックエンドに渡して処理するというものでしたが、これを許可するにはフロントエンドのコードも変更する必要があるため、すぐに却下されました。
は に変更されます。 2 番目のアイデアは、PHP 設定で、PHP が ASP と同じ名前値を持つフォームを処理できるようにする同様の設定はあるのでしょうか。長い間情報を確認しましたが、見つかりませんでした。
最終的には、フロントデスクを少し変更し、名前を配列に置き換えるという次善の策で解決するしかないことがわかりました。幸いなことに、この方法を使用している Web サイトはあまりありません。次に、バックグラウンドでデータを処理します。このとき、PHP は送信されたフォームが文字列であるか配列であるかがわかりません。どうすればいいでしょうか? 解決策は関数を書くことです:
input_treat() 関数を使用して、GET または POST からの値を処理します。それが文字列の場合は、文字列を処理して返します。配列の各要素をスペースで接続します。そして、連結された文字列全体を返します。
このようにして、要件全体が実現されます。欠点は、同じ名前のフォームを使用する一部の Web サイトでデータを変更する必要があることです。もっと良い方法がある場合は、メッセージを残してください。
。