Chaque système de base de données est livré avec un programme permettant de vider son contenu.
Vous pouvez simplement appeler ce programme à partir de PHP en utilisant system()
ou shell_exec()
.
Par exemple, si vous utilisez PostgreSQL avec permis Ident authentication et que vous voulez vider la base de données test
directement sous forme de texte SQL au navigateur, il est aussi simple que:
<?php
header('Content-type: text/plain');
system('pg_dump test');
?>
Lorsque vous utilisez MySQL avec l'utilisateur de base de données et le mot de passe stockés dans ~/.my.cnf
, il est également très simple:
<?php
header('Content-type: text/plain');
system('mysqldump test');
?>
Cependant, ne le faites pas:
<?php
header('Content-type: text/plain');
system('mysqldump -utestuser -ptestpassword test');
?>
parce que la transmission d'un mot de passe en ligne de commande l'argument est
very insecure.
Ai-je raison de penser que vous pourriez aussi l'exécuter via une requête SQL? Certains fournisseurs d'hébergement partagé n'autorisent pas les appels système. – Ross
Si vous avez un fournisseur d'hébergement qui n'autorise pas system() ou shell_exec(), vous devriez passer à un fournisseur sérieux. Une telle restriction n'ajoute pas vraiment de sécurité. C'est juste ennuyant les clients. – vog