ホームページ > バックエンド開発 > PHPの問題 > PHPの隠しフィールドに配列を渡す方法

PHPの隠しフィールドに配列を渡す方法

PHPz
リリース: 2023-04-19 13:43:12
オリジナル
538 人が閲覧しました

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[&#39;name&#39;] . &#39;: &#39; . $message[&#39;message&#39;]) ?></li>
        <?php endforeach; ?>
    </ul>
</body>
</html>
ログイン後にコピー

上記のコードでは、ユーザーが次のことができるフォームを定義します。名前とメッセージの内容を入力し、「送信」ボタンをクリックしてフォームを送信します。フォームでは、実行したい操作をバックグラウンドに伝えるコマンド ライン パラメーター「アクション」を渡すための隠しフィールドを定義します。ここでは、「action」を「add」に設定し、新しいメッセージを追加することを示します。

フォームが送信された後、ユーザーが入力した名前とメッセージの内容を処理のためにサーバーに送信する必要があります。特定の処理ロジックはバックグラウンドの PHP コードに実装されます。

以下は、コメントの追加および読み取り操作を処理するバックエンド コードです:

<?php
// 连接到数据库
$conn = new mysqli(&#39;localhost&#39;, &#39;username&#39;, &#39;password&#39;, &#39;database&#39;);

// 检查连接是否成功
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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート