Чтение JSON из HTTP POST с использованием PHP (Typeform)

У меня возникают проблемы с чтением данных JSON (с использованием PHP), поступающих из веб-перехватчика (Typeform).

Я пробовал решение, предоставленное Здесь, но я все еще получаю нулевой массив. Мой код точно такой же, как в примере, показанном в ссылке (хотя я не обращаюсь к конкретным массивам, я просто хочу прочитать данные). Все мои тестовые поставки возвращают 200, поэтому я немного застрял.

$data = json_decode(file_get_contents('php://input'));

var_dump($data);
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
300
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

TypeForm запускает страницу, они получают ответ var_dump...

Когда вы запускаете страницу, вы ничего не публикуете, поэтому $data пуста, поэтому null

Попробуйте сохранить $data в файл, а затем, когда TypeForm ОТПРАВИТ его, вы сможете увидеть, какое содержимое POST было в этом файле.

file_put_contents("webhookData.txt",$data, FILE_APPEND);

Спасибо за ваш быстрый ответ. Я добавил код, который вы упомянули, под строкой file_get_contents, и хотя я все еще получаю код 200 от Typeform, в txt-файл ничего не записывается. Я вижу полезную нагрузку из тестовой доставки Typeform, поэтому ее нужно правильно записать в txt-файл?

jmath412 30.05.2019 00:19

Да, текстовый файл должен содержать все, что Typeform отправил на сервер. С технической точки зрения, если Typeform отправляет данные JSON, вы можете просто указать $_POST в качестве источника данных файла вместо $data. Попробуйте это и посмотрите, какие данные вы получаете

CodeJunkie 30.05.2019 00:27

Я заменил $data на $_POST, и текстовый файл по-прежнему пуст после тестовой доставки и отправки формы.

jmath412 30.05.2019 00:36

Вы уверены, что страница получает просмотры? дважды проверьте, что файл получает данные со стороны Typeform

CodeJunkie 30.05.2019 00:54

URL-адрес для веб-перехватчика правильный (тесты вернули 200, а также отправку формы), но в chrome dev нет сетевой активности при отправке тестовой доставки или отправке формы.

jmath412 30.05.2019 03:29

Я понимаю, что мой ответ отправляется обратно в Typeform, я просто не понимаю, почему данные запроса не записываются в текстовый файл, как вы предложили. Я не могу сохранить запрос Typeform к переменной SESSION, так как он вызывает ошибку 500 при запуске страницы. Это похоже на довольно незначительную ошибку, о которой я просто не знаю, поэтому любая помощь очень ценится :)

jmath412 31.05.2019 18:24

Когда вы добавили переменную сеанса, она перестала работать? Оххххххх. 2 вещи. 1. Убедитесь, что первым в коде является session_start(); и убедитесь, что разрешения для папки html (корневой общедоступный каталог, где находится скрипт) установлены на 775. Возможно, он пытается писать, но не может, потому что у него нет разрешений

CodeJunkie 31.05.2019 18:30

Если ничего из этого не поможет, мы могли бы провести сеанс демонстрации экрана, и я мог бы взглянуть на него.

CodeJunkie 31.05.2019 18:30

У меня было session_start(); вверху, прежде чем использовать переменную сеанса, но каким-то образом удалось испортить разрешения для моего «домашнего» каталога в winscp, поэтому я пытаюсь понять это. Спасибо за ваш быстрый ответ!

jmath412 31.05.2019 18:53

Я попытался изменить public_html на 775, но рассматриваемые страницы выдавали ошибку 500 при попытке их подтянуть. Сколько вы берете?

jmath412 31.05.2019 22:42

Другие вопросы по теме