태그가 있습니다. 숨겨진 필드입니다. P에서"/> 태그가 있습니다. 숨겨진 필드입니다. P에서">

 >  기사  >  백엔드 개발  >  PHP의 숨겨진 필드를 통해 배열을 전달하는 방법

PHP의 숨겨진 필드를 통해 배열을 전달하는 방법

PHPz
PHPz원래의
2023-04-19 11:40:44469검색

웹 개발에서는 사용자 입력 정보를 수집하기 위해 양식을 사용해야 하는 경우가 많습니다. 그러나 어떤 경우에는 일부 데이터를 동시에 백그라운드 처리에 전달해야 하며 이러한 데이터에는 사용자 입력이나 표시가 필요하지 않습니다. 이때 숨겨진 필드를 사용하여 이 데이터를 전달할 수 있습니다. 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를 직렬화합니다. 그런 다음 값은 이 숨겨진 필드의 "값" 속성입니다. 숨겨진 필드를 저장하기 전에 먼저 PHP에 내장된 json_encode() 함수를 사용하여 연관 배열을 JSON 문자열로 직렬화합니다.

서버 측에서는 json_decode() 함수를 사용하여 JSON 문자열을 연관 배열로 역직렬화할 수 있습니다. 예를 들어, 다음 코드는 이전에 연관 배열로 전달된 숨겨진 필드를 구문 분석할 수 있습니다.

$data = json_decode($_POST['data'], true);

위 코드에서는 $_POST['data']를 사용하여 숨겨진 필드 문자열에 저장된 직렬화된 JSON 문자를 얻은 다음 json_decode() 함수를 사용하여 연관 배열로 역직렬화합니다.

결과를 연관 배열로 변환하려면 두 번째 매개변수를 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"을 전달하는 숨겨진 필드를 정의합니다. 여기서는 "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" 매개변수가 "add"인 경우 사용자가 새 메시지를 추가하기를 원한다는 의미입니다. $_POST 배열에서 사용자가 입력한 이름과 메시지 내용을 가져온 다음 insert 문을 사용하여 메시지 내용을 MySQL 데이터베이스에 씁니다.

"action" 매개변수가 "read"인 경우 사용자가 메시지 목록을 읽고 싶어한다는 의미입니다. 우리는 MySQL 데이터베이스의 모든 메시지 레코드를 쿼리하고 결과를 연관 배열 $messages에 저장합니다.

마지막으로 MySQL 데이터베이스에 대한 연결을 닫고 사용자가 메시지 목록을 볼 수 있도록 $messages 배열을 프런트엔드 코드에 전달합니다.

결론

위의 예제 데모를 통해 숨겨진 필드를 사용하여 배열을 전달하는 방법을 확인할 수 있습니다. 일상적인 웹 개발에서는 사용자 입력이나 표시 없이 동시에 처리하기 위해 일부 데이터를 백그라운드로 전달해야 하는 경우가 많습니다. 숨겨진 필드를 사용하면 이 기능을 효과적으로 수행할 수 있으며 배열을 사용하면 데이터 전송의 유연성이 향상되어 프로그램을 더 쉽게 개발하고 유지 관리할 수 있습니다.

위 내용은 PHP의 숨겨진 필드를 통해 배열을 전달하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.