you@localhost:~$ telnet the-nounours-land-of.nounours.fr 22 Trying 151.12.401.5... Connected to the-nounours-land-of.nounours.fr
█████╗ ██████╗ ██╗ ██████╗ ██████╗ ██████╗
██╔══██╗██╔══██╗██║ ██╔══██╗██╔══██╗██╔══██╗
███████║██████╔╝██║ ██████╔╝██║ ██║██║ ██║
██╔══██║██╔═══╝ ██║ ██╔══██╗██║ ██║██║ ██║
██║ ██║██║ ██║ ██████╔╝██████╔╝██████╔╝
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═════╝
I've created this API to link the database of the server to a mobile application.
This API receive HTTP query and gives data with the json format to the application.
Of course the code below isn't the entire API.
$whitelist = ['ACTUALITE', 'CONCERNE', 'CONTIENT', 'DETIENT', 'JEU', 'PERMISSION', 'ROLE', 'TAG', 'UTILISATEUR', 'MODIFICATION'];
if (!in_array($table, $whitelist)) {
echo json_encode(['error' => 'Table non autorisée']);
exit;
}
if ($table && $action) {
switch ($action) {
case 'insert':
$data = json_decode(file_get_contents('php://input'), true);
$columns = implode(', ', array_keys($data));
$placeholders = ':' . implode(', :', array_keys($data));
$stmt = $pdo->prepare("INSERT INTO $table ($columns) VALUES ($placeholders)");
$stmt->execute($data);
echo json_encode(['status' => 'success']);
break;
case 'update':
$data = json_decode(file_get_contents('php://input'), true);
$idColumn = array_key_first($data); // Supposons que la première clé est l'identifiant
$setClause = implode(', ', array_map(fn($col) => "$col = :$col", array_keys($data)));
$stmt = $pdo->prepare("UPDATE $table SET $setClause WHERE $idColumn = :$idColumn");
$stmt->execute($data);
echo json_encode(['status' => 'success']);
break;
case 'getAll':
$stmt = $pdo->query("SELECT * FROM $table");
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($result);
break;
case 'getAllById':
$idColumn = array_key_first($data);
$stmt = $pdo->query("SELECT * FROM $table WHERE $id = :$idColumn");
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($result);
break;
case 'delete':
$data = json_decode(file_get_contents('php://input'), true);
$idColumn = array_key_first($data); // Supposons que la première clé est l'identifiant
$stmt = $pdo->prepare("DELETE FROM $table WHERE $idColumn = :$idColumn");
$stmt->execute($data);
echo json_encode(['status' => 'success']);
break;
default:
echo json_encode(['error' => 'Action non supportée']);
break;
}
} else {
echo json_encode(['error' => 'Paramètres manquants']);
}