/ / Czy używam niewłaściwego argumentu w fopen? - php, html, ajax, json, string

Czy używam niewłaściwego argumentu w fopen? - php, html, ajax, json, string

Dołączam wartości jsona do zewnętrznego pliku. Dane formularza są przechwytywane za pomocą zmiennych ajax i post. Mam mały skrypt, który eksploduje ciąg danych json i próbuje implodować plik z powrotem wraz ze zmiennymi post w środku (lub właściwie na końcu).

<?php

$json_file = "data.json";
$json_data = $_POST["newUpload"]."]}";
//something like {"name":"foo","email":"foo@bar.com"}

$fh = fopen($json_file, "r+"); //I think this is the problem???

$data = fread($fh, filesize($json_file));
$jsonFrags = explode("]}",$data);
$new_data = implode($json_data,$jsonFrags);
fwrite($fh, $new_data);
fclose($fh);

?>

To była najłatwiejsza rzecz, jaką mogłem wymyślić, pozwalając na rozwijanie listy użytkowników na stronie z systemem XAMPP i komputerem z systemem Windows z ograniczonym dostępem do Internetu. Raz może dwa razy dziennie.

Cały JSON wygląda tak:

{"uploads": [{"name":"foo","email":"foo@bar.com","imgurl":"http://placehold.it/50x50"}]}

Ładuję dane pliku do $data i rozbij go na końcu znaku plikustrunowy "]}". W ten sposób zawsze dołącza się do końca. Ale to nie rozbija / nie powoduje problemów. Mogę użyć str_replace i uzyskać taki sam wynik. Po uruchomieniu powyższego skryptu PHP otrzymuję to w data.json:

{"uploads": [{"name":"foo","email":"foo@bar.com","imgurl":"http://placehold.it/50x50"}]}{"uploads": [{"name":"bar","email":"bar@foo.com","imgurl":"http://placehold.it/100x100"}]}

Udało mi się zmienić argument dla fopen, aby uzyskać różne wyniki, z których żaden nie był wynikiem, na który liczyłem. Jakieś pomysły?

Odpowiedzi:

1 dla odpowiedzi № 1

Cóż, nie zdefiniowałeś zmiennej $json w ogóle. dla wszystkich PHP wie, $json ma wartość null. Twój kod próbuje otworzyć plik (do odczytu), ale plik jest pusty!