Web 開発では、多くの場合、フォームを使用してユーザー入力情報を収集する必要があります。ただし、場合によっては、同時にいくつかのデータをバックグラウンド処理に渡す必要があり、これらのデータはユーザーの入力や表示を必要としません。現時点では、非表示フィールドを使用してこのデータを渡すことができます。 PHP 開発では、隠しフィールドを介して配列を渡すことができます。
隠しフィールドとは何ですか?
HTML には タグがあり、これはデータを背景に渡すがページには表示されないために使用されます。これは隠しフィールドです。
PHP では、 タグを使用して隠しフィールドを定義し、データをサーバーに渡すこともできます。
配列を渡すにはどうすればよいですか?
配列を渡したい場合は、配列をシリアル化して非表示フィールドに保存する必要があります。たとえば、次のコードは連想配列をシリアル化し、それを隠しフィールドに保存できます。
<form method="post" action="process.php"> <input type="hidden" name="data" value="<?php echo htmlspecialchars(json_encode($data)); ?>"> <input type="submit" value="Submit"> </form>
上記のコードでは、「data」という名前の隠しフィールドを定義し、$data がシリアル化された後に連想配列を保存します。 、この隠しフィールドの「value」属性に割り当てられます。隠しフィールドを保存する前に、まず PHP の組み込み json_encode() 関数を使用して連想配列を JSON 文字列にシリアル化することに注意してください。
サーバー側では、 json_decode() 関数を使用して、JSON 文字列を連想配列に逆シリアル化できます。たとえば、次のコードは、以前に連想配列に渡された隠しフィールドを解析できます。
$data = json_decode($_POST['data'], true);
上記のコードでは、$_POST['data'] を使用して、隠しフィールドに格納されているシリアル化を取得します。次に、JSON 文字列は、 json_decode() 関数を使用して連想配列に逆シリアル化されます。
結果を連想配列に変換するには、2 番目のパラメーターを true に設定する必要があることに注意してください。
デモンストレーションの例
隠しフィールド転送配列の原理と実装をよりよく理解するために、以下にデモンストレーションの例を示します。この例は単純なメッセージ ボード システムであり、ユーザーがメッセージを残すと、メッセージの内容が MySQL データベースに保存され、ページにメッセージ リストが表示されます。
まず、メッセージ フォームとメッセージ リストのレンダリングを担当するフロントエンド コードを見てみましょう。
<!DOCTYPE html> <html> <head> <title>Message Board Demo</title> </head> <body> <h1>Message Board Demo</h1> <form method="post" action="process.php"> <p><label>Your Name:</label><br><input type="text" name="name"></p> <p><label>Message:</label><br><textarea name="message"></textarea></p> <input type="hidden" name="action" value="add"> <p><input type="submit" value="Submit"></p> </form> <hr> <h2>Message List</h2> <ul> <?php foreach ($messages as $message) : ?> <li><?php echo htmlspecialchars($message['name'] . ': ' . $message['message']) ?></li> <?php endforeach; ?> </ul> </body> </html>
上記のコードでは、ユーザーが次のことができるフォームを定義します。名前とメッセージの内容を入力し、「送信」ボタンをクリックしてフォームを送信します。フォームでは、実行したい操作をバックグラウンドに伝えるコマンド ライン パラメーター「アクション」を渡すための隠しフィールドを定義します。ここでは、「action」を「add」に設定し、新しいメッセージを追加することを示します。
フォームが送信された後、ユーザーが入力した名前とメッセージの内容を処理のためにサーバーに送信する必要があります。特定の処理ロジックはバックグラウンドの PHP コードに実装されます。
以下は、コメントの追加および読み取り操作を処理するバックエンド コードです:
<?php // 连接到数据库 $conn = new mysqli('localhost', 'username', 'password', 'database'); // 检查连接是否成功 if ($conn->connect_error) { die('Connection failed: ' . $conn->connect_error); } // 处理留言添加操作 if ($_POST['action'] == 'add') { $name = $_POST['name']; $message = $_POST['message']; $sql = "INSERT INTO messages (name, message) VALUES ('$name', '$message')"; $result = $conn->query($sql); if (!$result) { die('Error: ' . $conn->error); } } // 读取留言列表 $sql = "SELECT * FROM messages ORDER BY id DESC"; $result = $conn->query($sql); if (!$result) { die('Error: ' . $conn->error); } $messages = []; while ($row = $result->fetch_assoc()) { $messages[] = $row; } $conn->close();
上記のコードでは、まず MySQL データベースに接続し、接続が成功したかどうかを確認します。 。次に、送信された「action」パラメータに基づいて、ユーザーが実行したい操作を決定します。
「action」パラメータが「add」の場合、ユーザーが新しいメッセージを追加したいことを意味します。ユーザーが入力した名前とメッセージの内容を $_POST 配列から取得し、insert ステートメントを使用してメッセージの内容を MySQL データベースに書き込みます。
「action」パラメータが「read」の場合、ユーザーがメッセージリストを読みたいことを意味します。 MySQL データベースのすべてのメッセージ レコードをクエリし、結果を連想配列 $messages に保存します。
最後に、MySQL データベースへの接続を閉じ、$messages 配列をフロントエンド コードに渡して、ユーザーがメッセージ リストを確認できるようにします。
結論
上記のデモ例を通して、隠しフィールドを使用して配列を渡す方法を確認できます。日常の Web 開発では、ユーザーの入力や表示を行わずに、同時に処理するためにいくつかのデータをバックグラウンドに渡す必要があることがよくあります。隠しフィールドを使用するとこの機能を適切に実現でき、配列を使用するとデータ転送の柔軟性が向上し、プログラムの開発と保守が容易になります。
以上がPHPの隠しフィールドに配列を渡す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。