У меня возникают проблемы с чтением данных JSON (с использованием PHP), поступающих из веб-перехватчика (Typeform).
Я пробовал решение, предоставленное Здесь, но я все еще получаю нулевой массив. Мой код точно такой же, как в примере, показанном в ссылке (хотя я не обращаюсь к конкретным массивам, я просто хочу прочитать данные). Все мои тестовые поставки возвращают 200, поэтому я немного застрял.
$data = json_decode(file_get_contents('php://input'));
var_dump($data);
TypeForm запускает страницу, они получают ответ var_dump...
Когда вы запускаете страницу, вы ничего не публикуете, поэтому $data пуста, поэтому null
Попробуйте сохранить $data в файл, а затем, когда TypeForm ОТПРАВИТ его, вы сможете увидеть, какое содержимое POST было в этом файле.
file_put_contents("webhookData.txt",$data, FILE_APPEND);
Да, текстовый файл должен содержать все, что Typeform отправил на сервер. С технической точки зрения, если Typeform отправляет данные JSON, вы можете просто указать $_POST в качестве источника данных файла вместо $data. Попробуйте это и посмотрите, какие данные вы получаете
Я заменил $data на $_POST, и текстовый файл по-прежнему пуст после тестовой доставки и отправки формы.
Вы уверены, что страница получает просмотры? дважды проверьте, что файл получает данные со стороны Typeform
URL-адрес для веб-перехватчика правильный (тесты вернули 200, а также отправку формы), но в chrome dev нет сетевой активности при отправке тестовой доставки или отправке формы.
Я понимаю, что мой ответ отправляется обратно в Typeform, я просто не понимаю, почему данные запроса не записываются в текстовый файл, как вы предложили. Я не могу сохранить запрос Typeform к переменной SESSION, так как он вызывает ошибку 500 при запуске страницы. Это похоже на довольно незначительную ошибку, о которой я просто не знаю, поэтому любая помощь очень ценится :)
Когда вы добавили переменную сеанса, она перестала работать? Оххххххх. 2 вещи. 1. Убедитесь, что первым в коде является session_start(); и убедитесь, что разрешения для папки html (корневой общедоступный каталог, где находится скрипт) установлены на 775. Возможно, он пытается писать, но не может, потому что у него нет разрешений
Если ничего из этого не поможет, мы могли бы провести сеанс демонстрации экрана, и я мог бы взглянуть на него.
У меня было session_start(); вверху, прежде чем использовать переменную сеанса, но каким-то образом удалось испортить разрешения для моего «домашнего» каталога в winscp, поэтому я пытаюсь понять это. Спасибо за ваш быстрый ответ!
Я попытался изменить public_html на 775, но рассматриваемые страницы выдавали ошибку 500 при попытке их подтянуть. Сколько вы берете?
Спасибо за ваш быстрый ответ. Я добавил код, который вы упомянули, под строкой file_get_contents, и хотя я все еще получаю код 200 от Typeform, в txt-файл ничего не записывается. Я вижу полезную нагрузку из тестовой доставки Typeform, поэтому ее нужно правильно записать в txt-файл?