requete SQL avec effacement du fichier concerné ?

requete SQL avec effacement du fichier concerné ? - PHP - Programmation

Marsh Posté le 06-11-2009 à 16:28:52    

Hello,
 
après php, me revoilà avec SQL... je récupere mon ID, ce qui me permet de n'éffacer que le fichier voulu contenu de la table. Mais je ne sais pas effacé le fichier correspondant.
 

Code :
  1. $id = $_GET["id"];
  2. mysql_connect($dbhost,$dblogin,$dbpassword);
  3. mysql_selectdb($dbname);
  4. $result=mysql_query("DELETE FROM produits WHERE id='$id'" );
  5. mysql_close();
  6. ?>


 
Je bloque encore une fois ...

Reply

Marsh Posté le 06-11-2009 à 16:28:52   

Reply

Marsh Posté le 06-11-2009 à 16:49:50    

il manque beaucoup d'infos pour pouvoir te répondre convenablement...  
Donc au pif je dirais avant de faire ton delete, fais un select, récupère le "chemin" de ton fichier, fais un suppression de celui-ci(unlink) puis ton delete.


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 06-11-2009 à 17:03:51    

oki, je vais regarder UNLINK, je ne connaissais pas, ma variable est $aFile .
 
Sinon, le chemin des images est fixe, donc déja, de ce côté, je suis tranquille.


Message édité par fscalda le 06-11-2009 à 17:04:31
Reply

Marsh Posté le 06-11-2009 à 18:06:10    

teste bien le chemin du unlink ...
car si tu fais un unlink($dossier.$fichier) et que $fichier est vide, alors tu risques d'avoir des bugs ... (ou de vider le contenu d'un dossier p-ê)


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 09-11-2009 à 12:18:38    

Bon ben j'aurais tenter mais non, rien à faire, je comprends pas bien. Je vais relire et relite le tutaux mais j'ai du mal à l'adapter. Déja que j'arrive pas pour un fichier... alors j'image sur 7 ...
 

Code :
  1. $dbhost     = "xxxxxxx";
  2. $dblogin    = "xxxxxx";
  3. $dbpassword = "xxxxxx";
  4. $dbname     = "xxxxxxxxx";
  5. $id = $_GET["id"];
  6. mysql_connect($dbhost,$dblogin,$dbpassword);
  7. mysql_selectdb($dbname);
  8. //
  9. $chemin2= "../societe/"; //chemin pour acceder au dossier
  10. $chemin = "../societe/,$aFile,"; //chemin contenant le nom de fichier à supprimer.
  11. $ouverture= opendir("$chemin2" ); //on ouvre le dossier
  12. chmod ($chemin, 0777); //onpasse le fichier en niveau de sécu 777
  13. unlink($chemin); //on efface
  14. closedir($ouverture); //on ferme le dossier
  15. $suppression = "DELETE FROM societe WHERE id = $suppr";
  16. $suppr1 = mysql_query($suppression) or die(mysql_error());
  17. //
  18. mysql_close();
  19. ?>


Message édité par fscalda le 09-11-2009 à 12:18:53
Reply

Marsh Posté le 09-11-2009 à 13:52:58    

ton code est une passoire... tu n'envisages pas de le mettre en ligne, rassure moi ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 09-11-2009 à 14:04:51    

Harkonnen a écrit :

ton code est une passoire... tu n'envisages pas de le mettre en ligne, rassure moi ?


 
+1
 
PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO, PDO.
 
Ou autre juste prepare statment

Reply

Marsh Posté le 09-11-2009 à 16:32:09    

Il est situé dans une zone vérouillé par un htaccess. Bah, de toute façon, marche pas, je reprends tout depuis le début.

Reply

Marsh Posté le 09-11-2009 à 16:45:21    

fscalda a écrit :

Il est situé dans une zone vérouillé par un htaccess.


ça n'a rien à voir avec le htaccess, c'est la façon dont tu construis tes requêtes SQL qui n'est pas du tout fiable. tu récupères les paramètres en GET, que tu concatènes directement dans la requête. c'est la porte ouverte à toutes les injections SQL possibles.
comme te le dit Stealth35, regarde donc du coté des requête paramétrées


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 09-11-2009 à 16:54:07    

Harkonnen a écrit :


ça n'a rien à voir avec le htaccess, c'est la façon dont tu construis tes requêtes SQL qui n'est pas du tout fiable. tu récupères les paramètres en GET, que tu concatènes directement dans la requête. c'est la porte ouverte à toutes les injections SQL possibles.
comme te le dit Stealth35, regarde donc du coté des requête paramétrées


j'pense qu'il voulait dire qu'il est le seul à y avoir accès (mauvaise excuse inside)

Reply

Marsh Posté le 09-11-2009 à 16:54:07   

Reply

Marsh Posté le 09-11-2009 à 16:59:48    

ouai, et puis c'est facil de faire un petit control type ACL

 

$type = 'delete';
$user = $_SERVER['REMOTE_USER'];

 

if(is_auth($user, $type))
{
    //tout le blabla
}
else
{
    //redirection ou mùessage d'erreur
}

 

apres definir la fonction is_auth, avec un xml ou base sql, fichier ini....


Message édité par stealth35 le 09-11-2009 à 17:00:13
Reply

Marsh Posté le 09-11-2009 à 17:06:46    

et puis elle sort d'ou la variable '$aFile' ?

Reply

Marsh Posté le 09-11-2009 à 17:15:37    

pataluc a écrit :


j'pense qu'il voulait dire qu'il est le seul à y avoir accès (mauvaise excuse inside)


ptet ben, mais comme tu dis, c'est une mauvaise excuse :o


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 09-11-2009 à 17:51:29    

Harkonnen a écrit :


ptet ben, mais comme tu dis, c'est une mauvaise excuse :o


 
Vous avez raison, c'est une très mauvaise excuse, et puis on sait jamais, il suffit que j'oublie et que je laisse un accès et pam, dans les dents.  
stealth35, j'ai regardé pdo depuis le temps que tu m'en parles, mais pfiou, j'ai l'impression que c'est énorme à apprendre  :(  déja que j'en suis juste au base du php que je ne maitrise pas encore.

Reply

Marsh Posté le 09-11-2009 à 18:10:51    

fscalda a écrit :


 
Vous avez raison, c'est une très mauvaise excuse, et puis on sait jamais, il suffit que j'oublie et que je laisse un accès et pam, dans les dents.  
stealth35, j'ai regardé pdo depuis le temps que tu m'en parles, mais pfiou, j'ai l'impression que c'est énorme à apprendre  :(  déja que j'en suis juste au base du php que je ne maitrise pas encore.


 
 
héhé, mais non tu va voir c'est meme encore plus simple
 
pour ta connexion  c'est pareil (meme 1 ligne suffirais, mais on ajoute la gestion d'erreur comme si tu faisais le 'or die')
 

try{
    $dbh = new PDO('mysql:host=localhost;dbname=cafdes','root', 'uapm_dissertation');
}catch(PDOException $e){
    echo $e->getMessage();  
}


 
pour faire une requete simple (ex: recuperer un user avec son id)
 

$user = $dhb->query("SELECT * FROM user WHERE id=$id" )->fetch();
print_r($user);


 
recuperer tout les utilisateur d'un coup (fini les while et compagnie)
 

$users = $dhb->query("SELECT * FROM user" )->fetchAll();
print_r($users);


 
 
voila pour query (en vite fait)
 
tu vois bien que encore un fois on peu faire de l'injection, on utilise les requetes préparer, en gros c'est pareil, mais plus pratique apres tu verras
 
pareil pour l'user
 

$req  = $dbh->prepare("SELECT * FROM user WHERE id=?" );
$req->execute(array($id));
 
$user = $req->fetch();


 
et idem pour le fetchAll
 
 
maintenant image que t'as 15000 lignes a inserer dans ta base de donner, avant t'aurai ouvert et ferme 15000 fois ta connexion et refais ta requete a chaque fois
 
la tu feras
 

$users = array // une liste type nom, prenom, email
 
$req = $dbh->prepare("INSERT INTO user (nom, prenom, email) VALUES ('?', '?', '?')" );
 
foreach($users as $user)
{
   $req->execute($user);
}


 
et voila tout le monde est inseré
bon c'est hyper survolé, et faudais que je t'explique le coup des '?', un petit tour ici et ca roule
 
http://www.siteduzero.com/tutoriel [...] x-bdd.html
http://php.net/manual/fr/book.pdo.php


Message édité par stealth35 le 09-11-2009 à 18:11:24
Reply

Marsh Posté le 13-11-2009 à 16:29:42    

Merci stealth35, si je n'ai pas encore répondu, c'est parce ce que je suis sur le site du zero.... et j'en ai pour un moment. lol

Reply

Marsh Posté le 13-11-2009 à 16:31:09    

ca marche bon courage ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed