Auto suppression de compte
Janyduchemin
-
Janyduchemin -
Janyduchemin -
Bonjour,
plus j'avance et encore des problèmes. je veux cette fois permettre à
l'utilisateur de suprimer son compte quand il le souhait. après avoir écri le code du fichier delete.php j'ai les erreurs suivantes:
Notice: Trying to get property 'id' of non-object in C:\wamp\www\ndameyong\delete.php on line 14
Notice: Trying to get property 'photo' of non-object in C:\wamp\www\ndameyong\delete.php on line 14
Notice: Trying to get property 'id' of non-object in C:\wamp\www\ndameyong\delete.php on line 16
Warning: unlink(.\.): Is a directory in C:\wamp\www\ndameyong\delete.php on line 20
Warning: unlink(.\..): Is a directory in C:\wamp\www\ndameyong\delete.php on line 20
Notice: Trying to get property 'photo' of non-object in C:\wamp\www\ndameyong\delete.php on line 24
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
j'aimerais avant tout comprendre ce que ça signifie.
voilà les différents code
Db.php
profil.php
delete.php
plus j'avance et encore des problèmes. je veux cette fois permettre à
l'utilisateur de suprimer son compte quand il le souhait. après avoir écri le code du fichier delete.php j'ai les erreurs suivantes:
Notice: Trying to get property 'id' of non-object in C:\wamp\www\ndameyong\delete.php on line 14
Notice: Trying to get property 'photo' of non-object in C:\wamp\www\ndameyong\delete.php on line 14
Notice: Trying to get property 'id' of non-object in C:\wamp\www\ndameyong\delete.php on line 16
Warning: unlink(.\.): Is a directory in C:\wamp\www\ndameyong\delete.php on line 20
Warning: unlink(.\..): Is a directory in C:\wamp\www\ndameyong\delete.php on line 20
Notice: Trying to get property 'photo' of non-object in C:\wamp\www\ndameyong\delete.php on line 24
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
j'aimerais avant tout comprendre ce que ça signifie.
voilà les différents code
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']; } }
profil.php
<?php require 'includes/includes.php'; if(!Auth::islog($DB)){ header('location:index.php'); exit(); } $user = $_SESSION['user']; if(!empty($_POST)){ $validate = true; // valider l'email if(empty($_POST['email'])){ $validate = false; $erreur_email = 'Le champ email est requis !'; }else if(!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)){ $validate = false; $erreur_email = "Veuillez entrer une adresse email valide."; } // VÉRIFIER LE PASSWORD if(empty($_POST['password'])){ $password = $_SESSION['user']['password']; }elseif(empty($_POST['confirm_password'])){ $erreur_password = "Confirmer votre mot de passe"; $validate =false; }elseif ($_POST['confirm_password'] != $_POST['password']){ $erreur_password = "Le mot de passe et le mot de passe confirmation sont différents."; $validate =false; }else{ $password = User::hashPassword($_POST['password']); } if(!empty($_FILES['photo']['name'])) { $photo = $_FILES['photo']; $filePath = 'photos/'.$user->id; $thumbPath = $filePath.'/thumbnail'; @mkdir($filePath, 0777, true); @mkdir($filePath.'/thumbnail', 0777, true); $allowedExt = ['jpeg', 'jpg', 'png']; $ext = strtolower(pathinfo($photo['name'], PATHINFO_EXTENSION)); if(!in_array($ext, $allowedExt)){ array_push($errors, 'Le fichier n\'est pas autorisé.'); } else{ $infos = getimagesize($photo['tmp_name']); $width = $infos[0]; $height = $infos[1]; if($width < 200 || $height < 200){ array_push($errors, 'L\'image doit faire au moins 200px de large et 200px de hauteur.'); } else{ $filename = uniqid($user->id, true).'.'.$ext; move_uploaded_file($photo['tmp_name'], $filePath.'/'.$filename); } } } if($validate){ $data = array( 'id'=>$_SESSION['user']['id'], 'nom_prenom' =>$_POST['nom_prenom'], 'ville' =>$_POST['ville'], 'email' =>$_POST['email'], 'password'=>$password, 'photo' =>$filePath.'/'.$filename ); $rep = $DB->insert('UPDATE users SET nom_prenom=:nom_prenom,ville=:ville,photo=:photo,email=:email,password=:password WHERE id=:id',$data); if(!empty($oldFilePath) && !empty($filename)){ @unlink($oldFilePath); @unlink($oldThumbFilePath); } if($rep){ $_SESSION['message'] = "Votre profil a été mis à jour avec succès ."; $_SESSION['user'] = array_merge($_SESSION['user'],$data); header('location:profil.php'); exit(); }else{ $_SESSION['erreur'] = "Un problème est survenu lors de la sauvegarde !."; } }else{ $_SESSION['erreur'] = "Veuillez corriger les érreurs indiquées ci dessous ."; } } $orders = $DB->query("SELECT * from orders WHERE user_id=:id",array('id'=>$_SESSION['user']['id'])); ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Votre Espace Profil || Ndameyong - L'Ecole des Langues Camerounaises</title> <link href="css/bootstrap.min.css" rel="stylesheet"> <!-- animate css--> <link rel="stylesheet" href="fonts/material-icon/css/material-design-iconic-font.min.css"> <!-- Main css --> <link rel="stylesheet" href="css/profil.css"> <link rel="stylesheet" href="css/admin_style.css"> <link rel="stylesheet" href="css/admin_style2.css"> <link rel="stylesheet" href="css/admin_main.css"> <link rel="icon" type="image/png" sizes="16x16" href="favicon/favicon-16x16.png"> </head> <body> <section class="wel-t-band"> <div id="top-header"> <ul class="header-links pull-left"> <li><a href="index.php"><i class="fa fa-heart"></i> Acceuil Ndameyong</a></li> <li><a href="presentation.php"><i class="fa fa-heart"></i> Présentation du site</a></li> <li><a href="http:/ndameyong/nkili/index.php"><i class="fa fa-heart"></i> La Boutique</a></li> </ul> <ul class="header-links pull-right"> <?php if (isset($_SESSION['user'])): ?> <?php if (Auth::isadmin($DB)): ?> <li><a href="admin/">Administration</a></li> <?php endif ?> <li><a href="login.php?logout">Déconnexion</a></li> <?php else: ?> <li>|| <a href="signup.php">Nouveau membre</a> ||</li> <li>|| <a href="login.php">Connexion</a> || </li> <li>|| <a href="recuperation.php">Mot de passe oublié</a> || </li> <?php endif?> </ul> </div> </section> <?php include('messages.php');?> <!-- Message dans la session --> <?php if (isset($_SESSION['message'])): ?> <div class="message"> <?php echo $_SESSION['message']; ?></div> <?php unset( $_SESSION['message']); ?> <?php endif ?> <?php if (isset($_SESSION['erreur'])): ?> <div class="errorMessage"> <?php echo $_SESSION['erreur']; ?></div> <?php unset( $_SESSION['erreur']); ?> <?php endif ?> <div class="main"> <div class="container" style="margin-top:-160px"> <h2>Modifier vos informations ici</h2> <?php include('messages.php');?> <form action ="profil.php" method="POST" id="signup-form" class="signup-form" enctype="multipart/form-data"> <h3> Votre Identité </h3> <fieldset> <div class="form-row"> <div class="form-file"> <input type="file" class="inputfile" name="your_picture" id="your_picture" onchange="readURL(this);" data-multiple-caption="{count} files selected" multiple /> <label for="your_picture"> <figure> <img src="images/your-picture.png" alt="" class="your_picture_image"> </figure> <button type="submit" class="btn btn-primary">Envoyer</button> </label> </div> <?php if(!empty($user->photo)):?> <a href="photos/<?=$user->id.'/'.$user->photo;?>"> <img src="photos/<?=$user->id.'/'.$user->photo;?>" alt="" width="200" height="200"> </a> <?php endif;?> <a style="float: right;" onclick="return confirm('Confirmez la suppresion de votre comtpe ?');" href="delete.php" class="btn btn-danger delete">Supprimer mon compte</a> <div class="form-group-flex"> <div class="form-group"> <input type="text" name="nom_prenom" value="<?php echo isset($_POST['nom_prenom'])?$_POST['nom_prenom']:$_SESSION['user']['nom_prenom']; ?>" placeholder="Nom_Prenom" /> </div> <?php if (!empty($erreur_nom_prenom)): ?> <div class="error"><?php echo $erreur_nom_prenom; ?></div> <?php endif ?> </div> </div> </fieldset> <h3> Votre Mot de Passe </h3> <fieldset> <div class="form-row"> <div class="form-group-flex"> <div class="form-group"> <input type="text" name="password" placeholder="Votre Mot de Passe" /> </div> <?php if (!empty($erreur_password)): ?> <div class="error"><?php echo $erreur_password; ?></div> <?php endif ?> <div class="form-group"> <input type="text" name="confirm_password" placeholder="Confirmez Mot de Passe" /> </div> <?php if (!empty($erreur_confirm_password)): ?> <div class="error"><?php echo $erreur_confirm_password; ?></div> <?php endif ?> </div> </div> </fieldset> <h3> Votre Adresse </h3> <fieldset> <div class="form-row"> <div class="form-file"> <input type="file" class="inputfile" name="your_picture" id="your_picture" onchange="readURL(this);" data-multiple-caption="{count} files selected" multiple /> </div> <div class="form-group-flex"> <div class="form-group"> <input type="text" name="ville" value="<?php echo isset($_POST['ville'])?$_POST['ville']:$_SESSION['user']['ville']; ?>" placeholder="Ville de Résidence" /> </div> <div class="form-group"> <input type="email" name="email" value="<?php echo isset($_POST['email'])?$_POST['email']:$_SESSION['user']['email']; ?>" id="email" placeholder="Email" /> </div> </div> </div> </fieldset> </form> <h2 style="margin-top:-100px">Mes achats : </h2 > <table> <thead> <tr> <th>N° commande</th> <th>Date</th> <th>Montant</th> <th>Txn_id</th> <th>Actions</th> </tr> </thead> <tbody> <?php foreach ($orders as $order): ?> <tr> <td><?php echo $order->id ?></td> <td><?php echo $order->created; ?></td> <td><?php echo $order->amount; ?></td> <td><?php echo $order->txn_id; ?></td> <td> <a href="editOrder.php?id=<?php echo $order->id; ?>" class="edit"></a> <a href="pdfOrder.php?id=<?php echo $order->id; ?>" class="pdf"></a> </td> </tr> <?php endforeach ?> </tbody> </table> </div> </div> <!-- JS --> <script src="vendor/jquery/jquery.min.js"></script> <script src="vendor/jquery-validation/dist/jquery.validate.min.js"></script> <script src="vendor/jquery-validation/dist/additional-methods.min.js"></script> <script src="vendor/jquery-steps/jquery.steps.min.js"></script> <script src="js/profil.js"></script> </body> </html>
delete.php
<?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');
A voir également:
- Auto suppression de compte
- Forcer suppression fichier - Guide
- Créer un compte google - Guide
- Suppression compte gmail - Guide
- Installer windows 10 sans compte microsoft - Guide
- Créer un compte gmail - Guide
11 réponses
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
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']; } }
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');
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');
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
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) ;
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); ?>
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!
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
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) ; } }
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
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