Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/09/2008, 10h58   #1
Futur Membre du Club
 
Inscription : mars 2007
Messages : 86
Détails du profil
Informations personnelles :
Âge : 25
Localisation : Belgique

Informations forums :
Inscription : mars 2007
Messages : 86
Points : 17
Points : 17
Envoyer un message via Skype™ à david2511
Par défaut Sauvegarde en texte avant suppression

Bonjour, je souhaiterai ajouter une petite fonction sur mon site pour mon administration personnelle.

Chaque membre inscrit a le droit de supprimer ses données.
Cependant, j'aimerai pour éviter tout abus, créer un fichier txt avant chaque suppression de la base de données.

En clair :

Un membre veut supprimer son profil, ...
Je voudrais introduire sur le page de suppression un code qui agirait comme ceci

1/ créer un fichier .txt avec comme nom le pseudo ou l'ID du membre
2/ introduire dans ce fichier pseudo.txt les données lui concernant que je pourrais choisir dans mes tables
3/ sauvegarder ce fichier pseudo.txt sur mon serveur dans un dossier /suppression/ par exemple

Donc pour chaque pseudo supprimé, un fichier txt.

Merci pour votre aide.
david2511 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 11h15   #2
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 140
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 140
Points : 2 885
Points : 2 885
Pourquoi ne pas créer une table users_deleted_datas ?

Parce que après ton fichier txt je vois pas trop ce que tu pourras en faire, si c'est pour remettre les infos en DB autant avoir une table de secours.

Lorsqu'un utilisateur a supprimé ses données, elles vont dans users_deleted_datas(id_user,data1,data2,data3,dataN). Tant qu'il n'a pas remplacé de données, il a toujours la possibilité de récupérer les dernieres.

Ou sinon tu ajoutes la notion de version a la table user_deleted_datas(id_versionGUID,id_user,data1,data2....etc) afin qu'il puisse toujours récupérer d'anciennes données. Tu pourras fixer une limite, les données datant de 3 mois sont supprimées par exemple.

Sinon pour ta solution bah quand le mec il supprime ses données, tu fais fwrite ou fputs comme tu veux et t'écris ca dans ton fichier.txt
Tu peux générer un fichier par utilisateur.

/suppression/user1/datas.txt
/suppression/user2/datas.txt

Du XML ca aurait été un poil plus classe
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 11h20   #3
Futur Membre du Club
 
Inscription : mars 2007
Messages : 86
Détails du profil
Informations personnelles :
Âge : 25
Localisation : Belgique

Informations forums :
Inscription : mars 2007
Messages : 86
Points : 17
Points : 17
Envoyer un message via Skype™ à david2511
Ce que je cherche réellement n'est pas une sauvegarde pour remettre par après ... juste une archive des données de l'utilisateur.

C'est un site que j'ai créé moi-même et je voudrais juste qu'après chaque suppression j'ai une trace de "qui s'est supprimé et quelles données ont été supprimées"

Donc pour moi un fichier .txt par pseudo dans un dossier est plus simple qu'une table.
david2511 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 11h21   #4
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 140
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 140
Points : 2 885
Points : 2 885
Ok, et quel est ton problème ?
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 11h42   #5
Futur Membre du Club
 
Inscription : mars 2007
Messages : 86
Détails du profil
Informations personnelles :
Âge : 25
Localisation : Belgique

Informations forums :
Inscription : mars 2007
Messages : 86
Points : 17
Points : 17
Envoyer un message via Skype™ à david2511
Mon problème c'est
Comment faire ça ?
david2511 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 12h19   #6
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 140
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 140
Points : 2 885
Points : 2 885
Bah ca dépend t'en es où, t'as fait en sorte que les utilisateurs puissent gérer leur données ? En supprimer ?

Si oui alors il faut simplement qu'avant la suppression des infos de la DB tu les écrives dans un fichier texte.
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 12h26   #7
Futur Membre du Club
 
Inscription : mars 2007
Messages : 86
Détails du profil
Informations personnelles :
Âge : 25
Localisation : Belgique

Informations forums :
Inscription : mars 2007
Messages : 86
Points : 17
Points : 17
Envoyer un message via Skype™ à david2511
Les membres qui veulent supprimer leurs données accèdent par un lien sur la page quit.php

De la, en cliquant sur confirmer, toutes les données dans les tables contenant l'ID du membre ou le pseudo sont supprimées.

Je voudrais donc qu'il y ai une trace dans un fichier txt qui porte le nom du membre
david2511 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 12h31   #8
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 140
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 140
Points : 2 885
Points : 2 885
Euhhh, tu lis ce que j'écris un peu ?
Avant d'effectuer le DELETE dans ta base de données (la suppression des données du membre).

Tu fais un SELECT * FROM donnees_membres WHERE membre_id='.$m_id;
Et pour chacune de ces données tu l'écris dans un fichier /donnees/$m_id/datas.txt

Tu trouveras ton bonheur dans le lien posté précedemment.
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 12h41   #9
Futur Membre du Club
 
Inscription : mars 2007
Messages : 86
Détails du profil
Informations personnelles :
Âge : 25
Localisation : Belgique

Informations forums :
Inscription : mars 2007
Messages : 86
Points : 17
Points : 17
Envoyer un message via Skype™ à david2511
oui oui j'ai imprimé le cours ... je vais y jeter un oeil mais je nettoie un peu le quit.php pour voir plus clair ..
david2511 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 13h06   #10
Futur Membre du Club
 
Inscription : mars 2007
Messages : 86
Détails du profil
Informations personnelles :
Âge : 25
Localisation : Belgique

Informations forums :
Inscription : mars 2007
Messages : 86
Points : 17
Points : 17
Envoyer un message via Skype™ à david2511
avant la suppression, j'ajoute ceci dans ma page quit.php :

$sql = 'SELECT * FROM gaydate_user WHERE id = $userid';
$userid = $_SESSION['UserId'];
$fp = fopen("/suppression/$userid/datas.txt", "w+");
fwrite($fp, $sql);
fclose($fp);

Le compte est bien supprimé mais aucun fichier .txt n'est créé dans /suppression sur mon serveur
david2511 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 15h06   #11
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 140
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 140
Points : 2 885
Points : 2 885
Code :
1
2
3
4
5
 
$sql = 'SELECT * FROM gaydate_user WHERE id='. $_SESSION['UserId'];
$fp = fopen('/suppression/'.$_SESSION['UserId'].'/datas.txt', 'w+');
fwrite($fp, $sql);
fclose($fp);
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 17h40   #12
Futur Membre du Club
 
Inscription : mars 2007
Messages : 86
Détails du profil
Informations personnelles :
Âge : 25
Localisation : Belgique

Informations forums :
Inscription : mars 2007
Messages : 86
Points : 17
Points : 17
Envoyer un message via Skype™ à david2511
Non toujours aucun fichier dans /suppression
david2511 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 18h28   #13
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 140
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 140
Points : 2 885
Points : 2 885
?
Code :
1
2
3
4
5
6
$sql = 'SELECT * FROM gaydate_user WHERE id='. $_SESSION['UserId'];
$dir = '/suppression/'.$_SESSION['UserId'].'/';
if(!is_dir($dir)) mkdir($dir,0777);
$fp = fopen($dir.'datas.txt', 'w+');
fwrite($fp, $sql);
fclose($fp);
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 20h33   #14
Futur Membre du Club
 
Inscription : mars 2007
Messages : 86
Détails du profil
Informations personnelles :
Âge : 25
Localisation : Belgique

Informations forums :
Inscription : mars 2007
Messages : 86
Points : 17
Points : 17
Envoyer un message via Skype™ à david2511
et non toujours pas
tant pis
merci
david2511 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 21h21   #15
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 140
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 140
Points : 2 885
Points : 2 885
Est ce que tu as un message d'erreur ?
Sinon ca peut venir du fait qu'il trouve pas le dossier "/suppression/".
Si tu es en local écrit plutot 'suppression/'.$_SESSION[...]... (sans le '/' en fait car ca représente la racine du site et sur apache il faut le configurer pour chaque site)
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 21h23   #16
Futur Membre du Club
 
Inscription : mars 2007
Messages : 86
Détails du profil
Informations personnelles :
Âge : 25
Localisation : Belgique

Informations forums :
Inscription : mars 2007
Messages : 86
Points : 17
Points : 17
Envoyer un message via Skype™ à david2511
oui j'y ai pensé et je l'ai testé mais ça ne fonctionne pas
Le compte s'efface correctement de la BDD
mais aucun fichier .txt n'est créé dans le dossier suppression sur le serveur

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
if ($_POST['action'] == '' or !$_POST['action']) {
 
    $t->assign('step','1');
 
} else {
 
    if ($_POST['action'] == get_lang('quit_opt01')) {
    /* Supprimer le compte */
 
$sql = 'SELECT * FROM gaydate_user WHERE id='. $_SESSION['UserId'];
$dir = '/suppression/'.$_SESSION['UserId'].'/';
if(!is_dir($dir)) mkdir($dir,0777);
$fp = fopen($dir.'datas.txt', 'w+');
fwrite($fp, $sql);
fclose($fp);
 
 
        $username = $db->getOne('select username from ! where id = ?',array( USER_TABLE, $_SESSION['UserId'] ) ) ;
 
        // Profil de base        
        $sql = 'DELETE FROM ! WHERE id = ?';
        // $sql = 'update ! set status=?, active=?, regdate = ? where id = ?';
        $db->query($sql, array( USER_TABLE, $_SESSION['UserId'] ) );
 
     ETC POUR TOUTES LES TABLES

le dossier suppression est à la racine du site, la page quit.php contenant le code aussi.
david2511 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 21h53   #17
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 140
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 140
Points : 2 885
Points : 2 885
Je sais pas ce qui fait que ca marche pas mais une autre question me trotte dans la tete, tu veux juste écrire la requête SQL dans le fichier ?
Si non, il faut utiliser la fonction mysql_query('SELECT * FROM ...); et lire les résultats qu'elle renvoie dans une boucle while(condition).
Exemple :
Code :
1
2
3
4
5
6
7
8
 
// FOPEN ETC..
$sql = mysql_query('SELECT * FROM ...');
while($res = mysql_fetch_assoc($sql))
    {
    // FWRITE ETC..
    }
// FCLOSE ETC..
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2008, 20h36   #18
Futur Membre du Club
 
Inscription : mars 2007
Messages : 86
Détails du profil
Informations personnelles :
Âge : 25
Localisation : Belgique

Informations forums :
Inscription : mars 2007
Messages : 86
Points : 17
Points : 17
Envoyer un message via Skype™ à david2511
Merci pour ton aide,
en fait il y avait beaucoup trop de requêtes je les ai donc numérotées :

Code :
1
2
3
4
5
6
7
 
$sql1 = 'SELECT * FROM gaydate_user WHERE id='. $_SESSION['UserId'];
$dir = 'suppression/'.$_SESSION['UserId'].'/';
if(!is_dir($dir)) mkdir($dir,0777);
$fp = fopen($dir.'datas.txt', 'w+');
fwrite($fp, $sql1, $res);
fclose($fp);
Ca fonctionne, le fichier datas est créé mais il ne contient pas ce que j'ai besoin.

Au lieu des éléments contenus dans la table, que je veux reprendre, je retrouve ceci :

SELECT * FROM gaydate_user WHERE id=2447


2447 étant l'ID de l'utilisateur supprimé.
mais aucune autre données.

Je suis nul et j'en suis désolé ;-)
david2511 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2008, 20h44   #19
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 140
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 140
Points : 2 885
Points : 2 885
Lis le message que j'ai écris ci-dessus ca répond exactement à ta question.
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2008, 20h46   #20
Futur Membre du Club
 
Inscription : mars 2007
Messages : 86
Détails du profil
Informations personnelles :
Âge : 25
Localisation : Belgique

Informations forums :
Inscription : mars 2007
Messages : 86
Points : 17
Points : 17
Envoyer un message via Skype™ à david2511
Oui j'ai lu et j'ai essayé mais le problème est qu'il me met une erreur

Fatal error: Call to undefined method DB_mysqlc::fetch_array() in /home/gaydatec/www/quit.php on line 19

comme quoi il ne connait pas cette commande.
J'essaie de trouver en quoi est convertie la commande sur mon site car mysql_query par exemple équivaut à $db->query chez moi...

Je cherche mais merci pour le temps passé à m'aider.
david2511 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h21.


 
 
 
 
Partenaires

Hébergement Web