FHEM Forum

Verschiedenes => Off-Topic => Thema gestartet von: TomLee am 15 Februar 2022, 12:50:27

Titel: Hilfe bei einem PHP-Skript -> JSON-Datei erstellen
Beitrag von: TomLee am 15 Februar 2022, 12:50:27
Hallo,

kann mir hier ein Spezi ggfs. weiterhelfen ?

Beschäftige mich derzeit mit diesem Beispiel-Skript (https://www.php-einfach.de/experte/php-codebeispiele/besucherzaehler-mit-reload-sperre/).

Das hab ich leicht angepasst, das der Wert des Counter zusätzlich zu der Text-Datei auch in eine JSON-Datei geschrieben wird, was mir dann das zyklische einlesen mit HttpUtils_NonblockingGet iVm. json2reading ermöglicht:

<?php
        $csar 
= array();
        
$counterstand intval(file_get_contents("counter.txt"));
                             
            if(!isset(
$_SESSION['counter_ip']))
                {
                    
$counterstand++;
                    
file_put_contents("counter.txt"$counterstand);
                             
                    
$_SESSION['counter_ip'] = true;
                }
                
$csar["counter"] = "$counterstand";
                
// encode array to json
                
$json json_encode($csar);
                
file_put_contents("counter.json"$json);
                echo 
$counterstand;
?>


Jetzt wär ich ja nicht ich, wenn ich es nicht versuchen würde nur mit der JSON-Datei umzusetzen.
Das mit intval ist schon genial, das die Funktion 0 zurückgeben kann, kann man mit der JSON-Datei aber nicht verwenden.
Hab mich mit PHP noch nie beschäftigt, mit dem bisher eingelesenen komm ich bisher nur auf eine längere Variante es anzugehen und die klappt auch noch nicht wirklich.

Es geht darum beim ersten Aufruf die JSON-Datei anzulegen wenn sie noch nicht existiert, das Key/Value.Paar (counter=>0) in die Datei reinzuschreiben und den Wert 0 daraus zurückzugeben, das klappt auch, ich mein aber es ist umständlich umgesetzt, es gibt bestimmt (wie mit intval) eine ganz einfache Lösung dafür.
Hochgezählt wird jetzt auch schonmal wenn ich händisch das Skript aufrufe, bei einem Aufruf über den Browser aber noch nicht:

<?php
$csar 
= array();
$fex file_exists("counter.json");
if (!
$fex) {
$csar["counter"] = 0;
$json json_encode($csar);
file_put_contents("counter.json"$json);
$counterstand$csar["counter"];
}
elseif (
$fex) {
$json file_get_contents("counter.json");
$decoded_json json_decode($json);
$counterstand=($decoded_json->counter);
if(!isset(
$_SESSION['counter_ip']))
                {
                    
$counterstand++;
        
$csar["counter"] = $counterstand;
        
$json json_encode($csar);
        
file_put_contents("counter.json"$json);
                    
$_SESSION['counter_ip'] = true;
                }
}
echo 
$counterstand;
?>


Hier im Forum gibts doch sicherlich jemanden der mir dazu ein paar Tipps geben kann das vernünftig umzusetzen ?

Gruß

Thomas

edit:


<?php

if (!file_exists('counter.json')) {
        
$csar["counter"] = 0;
        
file_put_contents('counter.json',json_encode($csar));
        
$counterstand $csar['counter'];
    }

else {
        
$decoded_json json_decode(file_get_contents('counter.json'), true);
        
$counterstand=$decoded_json['counter'];

//if (!isset($_SESSION['counter_ip'])) {
        
$counterstand++;
        
$decoded_json['counter'] = $counterstand;
        
file_put_contents('counter.json'json_encode($decoded_json));
  
//      $_SESSION['counter_ip'] = true;
  //  }
echo $counterstand;                         
}

?>
Titel: Antw:Hilfe bei einem PHP-Skript -> JSON-Datei erstellen
Beitrag von: TomLee am 15 Februar 2022, 15:07:10
Upps,

sry, ich war bis tief in den Morgen an dem letzten gezeigten Code dran, ich hab zwei Verzeichnisse die ich zum testen nutze und hatte den Code im falschen Ordner abgelegt.  ::)

Es klappt alles wie es soll, nur bleibt die Frage ob das nicht einfacher, kürzer geht ?