api de gestion de ticket, basé sur php-crud-api. Le but est de décorrélé les outils de gestion des données, afin
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

read.php 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. $key = preg_replace('/[^a-zA-Z0-9\-_]/','',isset($_GET["key"])?$_GET["key"]:false);
  3. $table = preg_replace('/[^a-zA-Z0-9\-_]/','',isset($_GET["table"])?$_GET["table"]:false);
  4. $callback = preg_replace('/[^a-zA-Z0-9\-_]/','',isset($_GET["callback"])?$_GET["callback"]:false);
  5. $mysqli = new mysqli($config["hostname"], $config["username"], $config["password"], $config["database"]);
  6. if ($mysqli->connect_errno) die('Connect failed: '.$mysqli->connect_error);
  7. $tables = array();
  8. if ($result = $mysqli->query("SELECT `TABLE_NAME` FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_NAME` = '$table' AND `TABLE_SCHEMA` = '$config[database]'")) {
  9. while ($row = $result->fetch_row()) $tables[] = $row[0];
  10. $result->close();
  11. }
  12. $keys = array();
  13. if ($result = $mysqli->query("SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `COLUMN_KEY` = 'PRI' AND `TABLE_NAME` = '$table' AND `TABLE_SCHEMA` = '$config[database]'")) {
  14. while ($row = $result->fetch_row()) $keys[] = $row[0];
  15. $result->close();
  16. }
  17. if ($config["read_whitelist"]!==false) $tables = array_intersect($tables, $config["read_whitelist"]);
  18. if ($config["read_blacklist"]!==false) $tables = array_diff($tables, $config["read_blacklist"]);
  19. if (empty($tables) || empty($keys)) {
  20. die(header("Content-Type:",true,404));
  21. } if ($callback) {
  22. header("Content-Type: application/javascript");
  23. echo $callback.'(';
  24. } else {
  25. header("Content-Type: application/json");
  26. }
  27. if ($result = $mysqli->query("SELECT * FROM `$tables[0]` WHERE `$keys[0]` = '$key'")) {
  28. $value = $result->fetch_assoc();
  29. if ($value) echo json_encode($value);
  30. else die(header("Content-Type:",true,404));
  31. $result->close();
  32. }
  33. if ($callback) {
  34. echo ');';
  35. }