#php
#php
Вопрос:
У меня есть несколько примеров в Google, но, похоже, ни один из них не работает, что я пытаюсь сделать:
if(isset($_POST)) {
// json parse
$json = file_get_contents('php://input');
// save the json files for later
// make sure they contain data
if(filesize($json) < 16 amp;amp; empty(trim(file_get_contents($json))) )
{
$file = 'links-'.rand(10000000,99999999).".txt";
file_put_contents('Links/' . trim($file), $json);
}
}
?>
Если размер файла пуст, не создавайте файл, но приведенный выше код все еще работает (это последний код, который я пробовал), я упускаю что-то очевидное здесь?
Комментарии:
1.
file_get_contents('php://input')
это не файл, это тело post (в вашем случае сам json)2. Как упоминал @chumkiu, $file — это строковая переменная, которая хранит фактический json. Итак, вы можете использовать Object.keys($json). длина, позволяющая определить, является ли json пустым или в нем есть содержимое. Надеюсь, это поможет.
Ответ №1:
Функция file_get_contents() считывает содержимое в строку. Как только он окажется в памяти, вам не нужно пытаться прочитать его снова.
if (isset($_POST)) {
// populate the json variable
$json = file_get_contents('php://input');
// if the variable is not empty
// save the content for later
if (!empty($json))
{
$file = 'links-'.rand(10000000,99999999).".txt";
file_put_contents('Links/' . trim($file), $json);
}
}
?>
Ответ №2:
очень простым решением является декодирование json, и теперь вы можете проверить, является ли декодированный json пустым массивом.
$json = file_get_contents('php://input');
$json = json_decode($json);// decode json`
if (empty($json)) {
// json is empty
}