Ses derniers messages sur les forums
Il manque quelques isset et mysql_escape_string, mais a priori, rien ne permettant d'écrire dans des fichiers.
Concernant PHPBB, recherche si des failles sont connues et non comblées.
Sinon, ben regarde tes logs et recherche des trucs suspects.
Comment as tu fais ?
Cela pourrait aider d'autres personnes.
Difficile de répondre sans avoir vu le code.
En tout cas, une chose est sure, les cibles privilégiées des hackers sont les livres d'or et les formulaires de contact.
Dans la plupart des cas, ce sont des scripts "a priori" simples à faire, mais qui peuvent très vite contenir de nombreuses failles de sécurité.
Pour blacklister des ip, tu peux le faire directement sur le serveur via iptables. C'est aussi faisable en PHP, mais c'est moche quoi :)
Mais bon, une adresse ip, cela se change. A moins de supprimer carrement un range d'ip, blacklister juste une ip ne sert pas à grand chose.
Pour un petit hack de ce genre, le mieux, c'est de corriger ta faille de code.
PS : d'après google, tu es loin d'être le seul dans ce cas. Es tu sur de n'avoir que du PHP perso. sur ton site ? Ou bien t'as repris des scripts quelque part ?
Bon, j'ai un peu mieux lu ton code.
A priori, tu as le nom de la table à gérer dans $resultat.
Donc quand tu fais tes delete, fais un truc du genre :
<?php
$sql = "DELETE FROM ".$resultat." WHERE ...";
?>
ATTENTION !!!
Ce que tu vas faire est risqué. Il te faut impérativement tester (tester que la table du même nom existe, tester qu'il ne s'agit pas d'une table où rien ne doit être supprimé, etc.) cette variable $resultat avant de l'exploiter dans une requete SQL.
Ben déjà, il y'a un problème, car tu dis vouloir supprimer des entrées de n'importe quelle table SQL.
Or dans ton code, je vois le nom des tables SQL en dur et non dans une variable.
Je pense que je dois faire ce que tu m'as dit plus haut pour les messages d'erreur.
Je pense aussi que c'est une bonne idée.
Tu dis ne pas savoir le faire, mais je t'ai expliqué comment le faire, avec la fonction
ini_set.
Si tu as fais un espace membre, en affichant une page, tu dois etre capable de savoir si oui ou non le membre est logué.
A partir la, c'est un simple if :
<?php
if ($membre_en_ligne == true) {
// tu affiches un menu spécial
}
else {
// un menu différent pour les non logués
}
?>
Qu as tu mis exactement dans ton fichier ?
<?php 1. <?php
2. echo 'pom';
3. exit;
4. ?>
?>
Ca ?
<?php
echo 'pom';
exit;
?>
Ou ca ?
Seule la seconde version fonctionne.
En fait, je suis presque sur que tu as tout copier coller comme un bourrin et que les numéros de ligne sont restés dans tes fichiers PHP, ce qui crée des erreurs de syntaxe.
PHP doit claquer une erreur, et comme par défaut elles ne s'affichent pas chez ton hebergeur, et bien tu as une page blanche (ce comportement peut se modifier en faisant un
init_set de la propriété display_errors et en la passant à On, tu peux aussi modifier la propriété error_reporting en lui donnant la valeur E_ALL pendant la phase de développement. Parce que sans rapport d'erreur, c'est impossible de développer).
oui.
Je te demande juste de refaire la boucle que tu as déjà fais dans ton code.
Si tu ne la vois pas, cela veut dire que tu ne comprends pas ce que tu fais.
Dans ce cas, demande nous de t'expliquer ce que tu ne comprends pas dans ton code.
Le but de ce site, c'est de comprendre ce que l'on fait, pas de copier coller betement en esperant que cela fonctionne.
Oui, mais en terme de perf, cela revient quasiement au même, surtout sur du MyISAM.
Sur de l'innoDB, MySQL fera une transaction sur ce genre d'insert : ca peut aider, tout comme ca peu pénaliser.
Attention aussi, si on fait énormement d'insert de ce genre et que l'on dépasse la valeur du max_allowed_packet, la requete ne se fera pas.
lolero, la boucle en question, tu la fais dans ton code, plus haut.
Si tu ne la vois pas, je te suggère de relire ton code et d'essayer de le comprendre.