Repositorio del curso CCOM4030 el semestre B91 del proyecto Trolley

receiver.php 2.8KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. //Description: This script will receive jsons from the application.
  3. // After validating a json it will store it in db.txt.
  4. // When activated this script will also activate dbcleaner.php.
  5. include 'dbcleaner.php'; //Will activate dbcleaner.php script everyday.
  6. function read_and_delete_first_line($filename) //This function will delete the first line of db.txt.
  7. {
  8. $file = file($filename); //Makes the contents of db.txt into an array.
  9. array_shift($file); //Removes the first element of the array.
  10. file_put_contents($filename, $file); //Rewrites db.txt with the contents of the array.
  11. }
  12. date_default_timezone_set('America/Puerto_Rico'); //Changes the default time of this PHP script to Puerto Rico.
  13. $decoded_location = json_decode(file_get_contents('php://input')); //Receives input from app and decodes the json recived.
  14. //$f = file("unused/testinput.txt");//For testing purposes.
  15. //$decoded_location = json_decode($f[0]); //For testing purposes.
  16. if(isset($decoded_location->latitude) && isset($decoded_location->longitude)) //Checks if the decoded json contains latitude and longitude keys. If false the json will be discarted.
  17. {
  18. if(is_float($decoded_location->latitude) && is_float($decoded_location->longitude))//Checks if the values of latitudes and longitudes are floating numbers. If false the json will be discarted.
  19. {
  20. if(($decoded_location->latitude >= -90 && $decoded_location->latitude <= 90) && ($decoded_location->longitude >= -180 && $decoded_location->longitude <= 180)) //Checks if the latitude and longitude values are in the range of real latitudes and longitudes. A latitude cannot exceed from the range (-90,90); A longitude cannot exceed from the range (-180,180). If false the json will be discarted.
  21. {
  22. $decoded_location->inTime = date('h:i:s a',time()); //Adds a new property to the object we get after decoding the json and stores the current time.
  23. $encoded_location = json_encode($decoded_location); //Reencodes the object back into a json with the new inTime property.
  24. $file = 'db.txt';
  25. $totalLines = intval(exec("wc -l '$file'")); //Counts how many lines db.txt has.
  26. //echo $totalLines. "\n"; //For testing purposes
  27. if($totalLines > 24) //If db.txt has more than a specified amount of lines, it will delete the first line of db.txt.
  28. {
  29. read_and_delete_first_line($file);
  30. }
  31. $db = fopen("db.txt","a") or die("FAILED TO ACCESS DATABASE"); //Opens db.txt in append mode. If it somehow fails to open the database, an error message will be displayed.
  32. fwrite($db,$encoded_location. "\n"); //Writes the newly encoded json into db.txt.
  33. fclose($db); //Closes db.txt
  34. //$totalLines = intval(exec("wc -l '$file'")); //For testing purposes
  35. //echo $totalLines; //For testing purposes
  36. }
  37. }
  38. }
  39. ?>