Формируем JSON-массив
Файл getdata.php использует подключение mysqli с utf8mb4. Пример предназначен для PHP 8.2+; он возвращает не более 10 ID истории заказов. В рабочем приложении закройте этот endpoint авторизацией и выдавайте только необходимые пользователю данные.
<?php
require __DIR__ . '/db.php';
header('Content-Type: application/json; charset=UTF-8');
$data = [];
$res = $mysqli->query(
'SELECT order_history_id FROM oc_order_history ORDER BY order_history_id LIMIT 10'
);
while ($row = $res->fetch_assoc()) {
$data[] = ['id' => (int)$row['order_history_id']];
}
$res->free();
echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR);
При отсутствии строк получится [], а не неинициализированная переменная. Не снимайте ограничение времени для короткой выборки.
Получаем JSON и выводим значения
Файл index.php:
<?php
$url = 'https://example.com/getdata.php'; // ваш фиксированный доверенный endpoint
$context = stream_context_create(['http' => ['timeout' => 5]]);
$json = file_get_contents($url, false, $context);
if ($json === false) throw new RuntimeException('Не удалось получить JSON');
$array = json_decode($json, true, 512, JSON_THROW_ON_ERROR);
if (!is_array($array)) throw new RuntimeException('Ожидался массив');
foreach ($array as $value) {
if (!is_array($value) || !isset($value['id']) || !is_scalar($value['id'])) continue;
echo 'id=' . htmlspecialchars((string)$value['id'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') . '<br>';
}
Не принимайте URL загрузки из запроса посетителя. JSON_THROW_ON_ERROR вызывает JsonException для некорректного JSON; перехватите исключение в общей обработке ошибок приложения. Для больших данных используйте пагинацию и ограничение размера ответа.
Проверенные источники
www.php.net, www.php.net, www.php.net. Проверено 10 октября 2026 года.