A voir également:
- Auto suppression de compte
- Forcer suppression fichier - Guide
- Créer un compte gmail - Guide
- Créer un compte google - Guide
- Supprimer compte instagram - Guide
- Créer un compte instagram sur google - Guide
11 réponses
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
6 mai 2021 à 07:42
6 mai 2021 à 07:42
Bonjour
$user est un array.. pas un objet.... d'où le message d'erreur...
$user est un array.. pas un objet.... d'où le message d'erreur...
Bonsoir,
Encore merci, je comprends mieux la difference entre un objet et un tableau. Je me disais qu'on pouvait utiliser les méthodes simultanément mais non...j'ai utiliser les tableaux comme tu me l'as fait remarqué...mais il reste trois erreur et je voudrais encore des explications:
Warning: unlink(photos\.): Is a directory in C:\wamp\www\ndameyong\delete.php on line 20
Warning: unlink(photos\..): Is a directory in C:\wamp\www\ndameyong\delete.php on line 20
Fatal error: Uncaught Error: Call to undefined method Db::prepare() in C:\wamp\www\ndameyong\delete.php:29 Stack trace: #0 {main} thrown in C:\wamp\www\ndameyong\delete.php on line 29
Bien de choses à vous
Encore merci, je comprends mieux la difference entre un objet et un tableau. Je me disais qu'on pouvait utiliser les méthodes simultanément mais non...j'ai utiliser les tableaux comme tu me l'as fait remarqué...mais il reste trois erreur et je voudrais encore des explications:
Warning: unlink(photos\.): Is a directory in C:\wamp\www\ndameyong\delete.php on line 20
Warning: unlink(photos\..): Is a directory in C:\wamp\www\ndameyong\delete.php on line 20
Fatal error: Uncaught Error: Call to undefined method Db::prepare() in C:\wamp\www\ndameyong\delete.php:29 Stack trace: #0 {main} thrown in C:\wamp\www\ndameyong\delete.php on line 29
Bien de choses à vous
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
7 mai 2021 à 01:03
7 mai 2021 à 01:03
Ligne 19
Je pense que tu as oublié le ! dans le if.
Les dossiers . Ou .. ne peuvent pas être supprimés.
Pour l'autre erreur... Sans voir ton code modifié impossible de te répondre
if($fileinfo->isDot()){
Je pense que tu as oublié le ! dans le if.
Les dossiers . Ou .. ne peuvent pas être supprimés.
Pour l'autre erreur... Sans voir ton code modifié impossible de te répondre
Janyduchemin
>
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
7 mai 2021 à 02:41
7 mai 2021 à 02:41
Bonjour,
Voilà le code connexion à la bdd
Db.php
Voilà le code connexion à la bdd
Db.php
<?php /** * Gestion de la base de données */ class Db{ private $host=HOST; private $name=DBNAME; private $user=USER; private $pass=PWD; private $connexion; function __construct($host=null,$name=null,$user=null,$pass=null){ if($host != null){ $this->host = $host; $this->name = $name; $this->user = $user; $this->pass = $pass; } try{ $this->connexion = new PDO('mysql:host='.$this->host.';dbname='.$this->name, $this->user,$this->pass,array( 1002 =>'SET NAMES UTF8', PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING )); $this->connexion->exec('SET NAMES utf8'); //PDO::MYSQL_ATTR_INIT_COMMAND }catch (PDOException $e){ //echo 'Erreur : Impossible de se connecter à la BD !';die(); echo $e->getMessage(); } } /* requete */ public function query($sql , $data=array()){ $req = $this->connexion->prepare($sql); $req->execute($data); return $req->fetchAll(PDO::FETCH_OBJ); } public function tquery($sql , $data=array()){ $req = $this->connexion->prepare($sql); $req->execute($data); return $req->fetchAll(PDO::FETCH_ASSOC); } public function insert($sql , $data=array()){ $req = $this->connexion->prepare($sql); $nb=$req->execute($data); return $nb; } public function uniqueEmail($email){ $req = $this->connexion->prepare('SELECT count(*) as nbre from users WHERE email=:email limit 1'); $req->execute(array('email'=>$email)); $reponse = $req->fetchAll(PDO::FETCH_ASSOC); return $reponse[0]['nbre']; } }
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
>
Janyduchemin
7 mai 2021 à 07:45
7 mai 2021 à 07:45
C'est le fichier delete qui nous intéresse.
Bonjour monsieur Jordane,
voila mon fichier delete.php
comme erreur:
Fatal error: Uncaught Error: Call to undefined method Db::prepare() in C:\wamp\www\ndameyong\delete.php:29 Stack trace: #0 {main} thrown in C:\wamp\www\ndameyong\delete.php on line 29
voila mon fichier delete.php
comme erreur:
Fatal error: Uncaught Error: Call to undefined method Db::prepare() in C:\wamp\www\ndameyong\delete.php:29 Stack trace: #0 {main} thrown in C:\wamp\www\ndameyong\delete.php on line 29
<?php require 'includes/includes.php'; if(!Auth::islog($DB)){ header('location:index.php'); exit(); } if(empty($_SESSION['user'])){ header('Location: login.php'); } $user = $_SESSION['user']; $filePath = 'photos/'.$user["id"].'/'.$user['photo']; $dir = new DirectoryIterator(dirname('photos/'.$user['id'])); foreach($dir as $fileinfo){ if(!$fileinfo->isDot()){ unlink($fileinfo->getPathname()); } } if($user['photo'] && file_exists($filePath) && is_file($filePath)){ unlink($filePath); rmdir('photos/'.$user->id); } $req = $DB->prepare('DELETE FROM users WHERE id=:id'); $req->bindValue(':id', $user->id, PDO::PARAM_INT); $req->execute(); unset($_SESSION['user']); session_destroy(); header('Location: index.php');
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
7 mai 2021 à 10:55
7 mai 2021 à 10:55
Ben oui.
Il faut que tu utilises la classe db et non pas que tu écrives ta requête directement dans le fichier...
Il faut que tu utilises la classe db et non pas que tu écrives ta requête directement dans le fichier...
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
>
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
7 mai 2021 à 11:27
7 mai 2021 à 11:27
Dans ta classe Db
Dans le fichier delete.php
Bien entendu, il faut que tu aies instancié la classe DB au début de ton script si ce n'est pas déjà fait...
/** Pour les requêtes de type DELETE ou UPDATE */ public function exec($sql , $data=array()){ try{ $req = $this->connexion->prepare($sql); $req->execute($data); return $req->rowCount(); // Retourne le nombre de lignes impactées par la reuqête }catch(Exception $e){ echo 'Erreur : ' . $e->getMessage(); // en cas d'erreur dans la requête ! } }
Dans le fichier delete.php
$sql = 'DELETE FROM users WHERE id=:id'; $data = [':id'=>$id]; $del = $DB->exec($sql , $data) ;
Bien entendu, il faut que tu aies instancié la classe DB au début de ton script si ce n'est pas déjà fait...
Salut,
Ma classe Db se trouve le fichier Db.php
il vient de subir de légères modifications. c'est ce que j'inclue dans toutes mes pages pour les connexion et les classes...je ne comprends pas comment l'instancier de nouveau.
Après avoir modifier delete.php j'ai eu ces erreurs:
Notice: Undefined variable: id in C:\wamp\www\ndameyong\delete.php on line 30
Fatal error: Uncaught Error: Call to undefined method Db::execute() in C:\wamp\www\ndameyong\delete.php:31 Stack trace: #0 {main} thrown in C:\wamp\www\ndameyong\delete.php on line 31
en ligne 30 j'ai changé $id en $user car j'ai pas travaillé avec $id; et il ne reste que cette erreur
le delete.php modifié
Ma classe Db se trouve le fichier Db.php
<?php /** * Gestion de la base de données */ class Db{ private $host=HOST; private $name=DBNAME; private $user=USER; private $pass=PWD; private $connexion; function __construct($host=null,$name=null,$user=null,$pass=null){ if($host != null){ $this->host = $host; $this->name = $name; $this->user = $user; $this->pass = $pass; } try{ $this->connexion = new PDO('mysql:host='.$this->host.';dbname='.$this->name, $this->user,$this->pass,array( 1002 =>'SET NAMES UTF8', PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING )); $this->connexion->exec('SET NAMES utf8'); //PDO::MYSQL_ATTR_INIT_COMMAND }catch (PDOException $e){ //echo 'Erreur : Impossible de se connecter à la BD !';die(); echo $e->getMessage(); } } /* requete */ public function query($sql , $data=array()){ $req = $this->connexion->prepare($sql); $req->execute($data); return $req->fetchAll(PDO::FETCH_OBJ); } public function tquery($sql , $data=array()){ $req = $this->connexion->prepare($sql); $req->execute($data); return $req->fetchAll(PDO::FETCH_ASSOC); } public function insert($sql , $data=array()){ $req = $this->connexion->prepare($sql); $nb=$req->execute($data); return $nb; } public function uniqueEmail($email){ $req = $this->connexion->prepare('SELECT count(*) as nbre from users WHERE email=:email limit 1'); $req->execute(array('email'=>$email)); $reponse = $req->fetchAll(PDO::FETCH_ASSOC); return $reponse[0]['nbre']; } public function exec($sql , $data=array()){ try{ $req = $this->connexion->prepare($sql); $req->execute($data); return $req->rowCount(); // Retourne le nombre de lignes impactées par la reuqête }catch(Exception $e){ echo 'Erreur : ' . $e->getMessage(); // en cas d'erreur dans la requête ! } } }
il vient de subir de légères modifications. c'est ce que j'inclue dans toutes mes pages pour les connexion et les classes...je ne comprends pas comment l'instancier de nouveau.
Après avoir modifier delete.php j'ai eu ces erreurs:
Notice: Undefined variable: id in C:\wamp\www\ndameyong\delete.php on line 30
Fatal error: Uncaught Error: Call to undefined method Db::execute() in C:\wamp\www\ndameyong\delete.php:31 Stack trace: #0 {main} thrown in C:\wamp\www\ndameyong\delete.php on line 31
en ligne 30 j'ai changé $id en $user car j'ai pas travaillé avec $id; et il ne reste que cette erreur
le delete.php modifié
<?php require 'includes/includes.php'; if(!Auth::islog($DB)){ header('location:index.php'); exit(); } if(empty($_SESSION['user'])){ header('Location: login.php'); } $user = $_SESSION['user']; $filePath = 'photos/'.$user["id"].'/'.$user['photo']; $dir = new DirectoryIterator(dirname('photos/'.$user['id'])); foreach($dir as $fileinfo){ if(!$fileinfo->isDot()){ unlink($fileinfo->getPathname()); } } if($user['photo'] && file_exists($filePath) && is_file($filePath)){ unlink($filePath); rmdir('photos/'.$user->id); } $sql = 'DELETE FROM users WHERE id=:id'; $data = [':id'=>$user]; $del = $DB->execute($sql , $data) ; unset($_SESSION['user']); session_destroy(); header('Location: index.php');
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
Modifié le 7 mai 2021 à 12:39
Modifié le 7 mai 2021 à 12:39
$data = [':id'=>$user['id']];
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
c'est sans changement...
Fatal error: Uncaught Error: Call to undefined method Db::execute() in C:\wamp\www\ndameyong\delete.php:31 Stack trace: #0 {main} thrown in C:\wamp\www\ndameyong\delete.php on line 31
Fatal error: Uncaught Error: Call to undefined method Db::execute() in C:\wamp\www\ndameyong\delete.php:31 Stack trace: #0 {main} thrown in C:\wamp\www\ndameyong\delete.php on line 31
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
7 mai 2021 à 13:25
7 mai 2021 à 13:25
Ah oui, la fonction c'est exec et non execute. désolé
Bsr
l'erreur est toujours la même (
Fatal error: Uncaught Error: Call to undefined method Db::execute() in C:\wamp\www\ndameyong\delete.php:31 Stack trace: #0 {main} thrown in C:\wamp\www\ndameyong\delete.php on line 31
)
Db.php (public function exec())
delete.php
l'erreur est toujours la même (
Fatal error: Uncaught Error: Call to undefined method Db::execute() in C:\wamp\www\ndameyong\delete.php:31 Stack trace: #0 {main} thrown in C:\wamp\www\ndameyong\delete.php on line 31
)
Db.php (public function exec())
public function exec($sql , $data=array()){ try{ $req = $this->connexion->prepare($sql); $req->execute($data); return $req->rowCount(); // Retourne le nombre de lignes impactées par la reuqête }catch(Exception $e){ echo 'Erreur : ' . $e->getMessage(); // en cas d'erreur dans la requête ! } }
delete.php
$sql = 'DELETE FROM users WHERE id=:id'; $data = [':id'=>$user['id']]; $del = $DB->execute($sql , $data) ;
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
8 mai 2021 à 07:57
8 mai 2021 à 07:57
Tu peux nous montrer ce que tu as dans ton fichier 'includes/includes.php' ?
Car visiblement, ta class DB n'est pas instanciée... ou alors sous un autre nom...
Car visiblement, ta class DB n'est pas instanciée... ou alors sous un autre nom...
bjr
voilà mon fichier includes.php
voilà mon fichier includes.php
<?php require 'config.php'; require_once 'Classes/Db.php'; require_once 'Classes/panier.php'; require_once 'Classes/auth.php'; $DB = new Db(); $panier = new Panier($DB); // cacher les erreurs pour la production ini_set('error_reporting',E_ALL); // afficher les érreurs lors du developpement //ini_set('error_reporting', E_ALL); ?>
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
8 mai 2021 à 12:41
8 mai 2021 à 12:41
Ah oui.. mais je t'ai indiqué qu'il fallait changer execute en exec dans le fichier delete.php
$sql = 'DELETE FROM users WHERE id=:id'; $data = [':id'=>$user['id']]; $del = $DB->exec($sql , $data) ;
Problème résolu....merci infiniment
je vais maintenant mettre en place un système de mot de passe oublié
Merci!
je vais maintenant mettre en place un système de mot de passe oublié
Merci!
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
8 mai 2021 à 13:19
8 mai 2021 à 13:19
Par contre, vu que tu sembles avoir prévu de coder des CLASS
pourquoi ne pas mettre le code de suppression dans la class 'Classes/auth.php'; ?
Il semble que cette classe serve à gérer ton user non ?
Et ta fonction uniqueEmail qui se trouve dans ta class Db n'a rien à faire là.
Elle aussi devrait se trouver dans la class auth ..
pourquoi ne pas mettre le code de suppression dans la class 'Classes/auth.php'; ?
Il semble que cette classe serve à gérer ton user non ?
Et ta fonction uniqueEmail qui se trouve dans ta class Db n'a rien à faire là.
Elle aussi devrait se trouver dans la class auth ..
oui la class auth gère les utilisateurs mais je n'ai vraiment pas penser à ça...et je viens de déplacer la fonction uniqueEmail vers la class auth
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
8 mai 2021 à 13:45
8 mai 2021 à 13:45
Et la le code pour delete aussi ? que tu placeras dans une fonction deleteuser()
du genre
et que tu appelleras depuis ton fichier delete php comme ceci
du genre
public function deleteuser($id){ $sql = 'DELETE FROM users WHERE id=:id'; $data = [':id'=>$id]; return $DB->exec($sql , $data) ; }
et que tu appelleras depuis ton fichier delete php comme ceci
$oAuth->deleteuser($user['id']); // $oAuth .. étant à remplacer par l'objet faisant référence à ton instance de ta class oAuth bien entendu...
j'ai deux erreus....
Notice: Undefined variable: oAuth in C:\wamp\www\ndameyong\delete.php on line 29
Fatal error: Uncaught Error: Call to a member function deleteuser() on null in C:\wamp\www\ndameyong\delete.php:29 Stack trace: #0 {main} thrown in C:\wamp\www\ndameyong\delete.php on line 29
voila dete.php modifié
auth.php modifié
Notice: Undefined variable: oAuth in C:\wamp\www\ndameyong\delete.php on line 29
Fatal error: Uncaught Error: Call to a member function deleteuser() on null in C:\wamp\www\ndameyong\delete.php:29 Stack trace: #0 {main} thrown in C:\wamp\www\ndameyong\delete.php on line 29
voila dete.php modifié
<?php require 'includes/includes.php'; if(!Auth::islog($DB)){ header('location:index.php'); exit(); } if(empty($_SESSION['user'])){ header('Location: login.php'); } $user = $_SESSION['user']; $filePath = 'photos/'.$user["id"].'/'.$user['photo']; $dir = new DirectoryIterator(dirname('photos/'.$user['id'])); foreach($dir as $fileinfo){ if(!$fileinfo->isDot()){ unlink($fileinfo->getPathname()); } } if($user['photo'] && file_exists($filePath) && is_file($filePath)){ unlink($filePath); rmdir('photos/'.$user->id); } $oAuth->deleteuser($user['id']); // $oAuth .. étant à remplacer par l'objet faisant référence à ton instance de ta class oAuth bien entendu... $sql = 'DELETE FROM users WHERE id=:id'; $data = [':id'=>$user['id']]; $del = $DB->exec($sql , $data) ; unset($_SESSION['user']); session_destroy(); header('Location: index.php');
auth.php modifié
<?php /** * Auth */ class Auth{ public static function islog($db){ if(isset($_SESSION['user']) && isset($_SESSION['user']['email']) && isset($_SESSION['user']['password'])){ $data =array( 'email'=>$_SESSION['user']['email'], 'password'=>$_SESSION['user']['password'] ); $sql = 'SELECT * FROM users WHERE email=:email AND password=:password limit 1'; $req = $db->tquery($sql,$data); if(!empty($req)){ return true; } } return false; } public static function hashPassword($pass){ return sha1(SALT.md5($pass.SALT).sha1(SALT)); } public static function isadmin($db){ if(isset($_SESSION['user']['role']) && (Auth::hashPassword('admin') == $_SESSION['user']['role'])){ return true; } return false; } public function uniqueEmail($email){ $req = $this->connexion->prepare('SELECT count(*) as nbre from users WHERE email=:email limit 1'); $req->execute(array('email'=>$email)); $reponse = $req->fetchAll(PDO::FETCH_ASSOC); return $reponse[0]['nbre']; } public function deleteuser($id){ $sql = 'DELETE FROM users WHERE id=:id'; $data = [':id'=>$id]; return $DB->exec($sql , $data) ; } }
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
8 mai 2021 à 15:45
8 mai 2021 à 15:45
Et bien il faut faire comme pour les autres méthodes de ta classe les rendre static... Il fait rappelle comme pour tes autres fonctions...
Tu comprends un minimum le code que tu écris ou tu ne fais que le copier-coller bêtement ce que tu trouves sur internet ?????
Tu comprends un minimum le code que tu écris ou tu ne fais que le copier-coller bêtement ce que tu trouves sur internet ?????
Janyduchemin
>
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
8 mai 2021 à 17:27
8 mai 2021 à 17:27
Bon après
Copier le code sur internet ?? Non...j'ai suivi une formation en PHP/MySQL j'avoue jsuis pas encore un Expert et cette formation n'a pas fait l'objet d'un approfondissement...j'ai monter moi même mon code superviser par un encadreur...désirant me perfectionner j'ai décidé d'ajouter certaines fonctionnalités que j'ai suivi en formation... voilà je me perd de temps à autre....du moins je reconnais votre apport à mon apprentissage... Merci
Copier le code sur internet ?? Non...j'ai suivi une formation en PHP/MySQL j'avoue jsuis pas encore un Expert et cette formation n'a pas fait l'objet d'un approfondissement...j'ai monter moi même mon code superviser par un encadreur...désirant me perfectionner j'ai décidé d'ajouter certaines fonctionnalités que j'ai suivi en formation... voilà je me perd de temps à autre....du moins je reconnais votre apport à mon apprentissage... Merci
6 mai 2021 à 14:03
J'ai utilisé $user avec un array [] dans profil.php
mais je ne sais pas comment redeclarer ce tableau dans le fichier delete.php voilà pourquoi j'ai utilisé cette écriture en croyant que ça allait fonctionner...mais rien du coup je suis buté
Du moins je vais essayer de suivre votre conseil.
Je vous tiendrai informé. Merci
6 mai 2021 à 14:41