IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

update qui ne marche pas


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut update qui ne marche pas
    Bonjour,je suis un nouveau sur le forum,je connais pas encore toute les règles donc soyez pas trop méchants

    mon code ne renvoie aucune erreurs,quand je mets le mdp reçu via un mot de passe aléatoire ,le nouveau mdp et sa confirmation et que je clique sur envoyer j'ai bien le message qui dit que le mdp a bien été changé mais quand je regarde sur ma bdd en local (je le précise) rien ne change

    voila mon code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
     <?php
    	Session_start();
    	include('../tests/cookie.php');
    	?>
    	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    	<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    	<head>
    	<title>Aux milles trésors du dragon</title>
    	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    	<link rel="stylesheet" media="screen" type="text/css" title= "site" href="site.css" /> 
    	<script  type="text/javascript" src="../js/horloge.js"></script>
    	</head>
     
    	<?php 
     
    	include("pseudo.php"); 
    	include("../includes/functions.php");
    	include("../includes/constants.php");
    	include("../includes/identifiants.php");
    	$id=(isset($_SESSION['id']))?(int) $_SESSION['id']:0;
     
     
     
     
     
     
        $mdp_erreur = NULL;
    	$mdp_erreur1 = NULL;
    	$mdp_erreur2 = NULL;
    	$mdp_erreur3 = NULL;
     
     
     
    	$i = 0;
     
    	$pass_recu = htmlspecialchars(addslashes($_POST['pass_recu']));
    	$nouveau_pass = htmlspecialchars(addslashes($_POST['nouveau_pass']));
    	$confirmer_pass = htmlspecialchars(addslashes($_POST['confirmer_pass']));
    print_r($_POST);
     
    	//on verifie les deux mot de passe//
     
     
     
    	if ($nouveau_pass != $confirmer_pass || empty($confirmer_pass) || empty($nouveau_pass))
     
    			{
    				$mdp_erreur = "Votre nouveau  mot de passe et votre confirmation diffèrent, ou sont vides";
    				$i++;
    			}
     
     
    	//on verifie si le mot de passe comporte des chiffres et des lettres//
     
     
     
    	if (!preg_match("/^(.){4,8}$/",$nouveau_pass))
     
     
    			{ 
    				$mdp_erreur1 = " -Le mot de passe doit comporter entre 4 et 8 caractères chiffres et lettres<br/>"; 
    				$i++;
    			} 
     
     
    	//On vérifie en suite qu'il y a des chiffres et des lettres 
     
     
     
    	else if (!preg_match("/[A-Z][0-9]|[a-z][0-9] /",$nouveau_pass))  
     
     
    			{   
    				$mdp_erreur2 = " -Le mot de passe doit comporter des lettres et des chiffres.<br/>";  
    				$i++;
    			}
     
     
    print_r($nouveau_pass);
     
    	//on verifie que le mot de passe est le meme que la bdd//																
     $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_id=:id');
        $query->bindValue(':id',$id, PDO::PARAM_INT);
      $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $query->execute()  ;
    	$data=$query->fetch();
     
        $query->CloseCursor();
     
     
    	if (!empty($data['pass_recu']) == sha1($pass_recu))
     
     
     
    			{
    				$mdp_erreur3 = "votre mot de passe ne correspond pas avec celui rentré";
    				$i++;
    			}							
     
    Else
    {
     
    	//on hash le nouveau mot de passe//
     
     
     
    	$nouveau_pass = sha1($nouveau_pass);                                               
     
     
     
     
    	//on update le nouveau mot de passe//
     
    	$query=$db->prepare('UPDATE forum_membres SET membre_mdp =:nouveau_pass
    	WHERE membre_id=:id');
     
    	$query->bindValue(':nouveau_pass', $nouveau_pass, PDO::PARAM_STR);
    	$query->bindValue(':id', $id, PDO::PARAM_INT);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    	$query->execute();
    	}
    	//si pas d'erreur on affiche un echo//
    	if ($i==0)
    	{                              
     
     
    		echo'<h1>nouveau mot de passe</h1>';
    		echo'<p>votre nouveau mot de passe a bien été changé</p>
    	         <p>Cliquez <a href="./connexion.php">ici</a> pour vous connectez <p>';
     
     
     
     
    		//on affiche les erreurs //
     
     
     
     
    	}
    	else
    	{
    		echo'<h1>changement du mot de passe non fait</h1>';
    		echo'<p>Une ou plusieurs erreurs se sont produites pendant le changement</p>';
    		echo'<p>'.$i.' erreur(s)</p>';
     
     
     
    		echo'<p>'.$mdp_erreur.'</p>';		
    		echo'<p>'.$mdp_erreur1.'</p>';
    		echo'<p>'.$mdp_erreur2.'</p>';
    		echo'<p>'.$mdp_erreur3.'</p>';
    		echo'<p>Cliquez <a href="changement_de_mot_de_passe.php">ici</a> pour recommencer</p>';
    	}
     
     
     
     
     
     
    print_r ($pass_recu);
    ?>
     
     
     
     
     
     
     
     
     
     
     
    	</div>
    	</body>
    	</html>

    j'espère que vous pourriez m'aider car la je ne trouve pas,j'ai fais beaucoup de changement mais rien ne marche,j'ai testé mes POST ils sont bien la,j'ai vérifier si le SELECT marché via phpmyadmin il fonctionne donc je ne vois pas


    merci beaucoup pour l'aide apporté

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query->bindValue(':pseudo', $pseudo, PDO::PARAM_INT);
    Le pseudo est un entier ?

    Pour avoir les erreurs en PDO il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    et non mettre des or die() sur tes executions de requête.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    merci j'ai corrigé mais sa résous pas mon problèmes,je vois pas pourquoi mon update ne marche pas

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    $pseudo n'est pas défini dans ton code.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    je me suis apercu que j'avais mis le pseudo a la place de id pppfff,j'ai pas de tête,je réédite le code

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    As-tu controlé ce que contenait $id ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    euh non,d'ailleurs je cherche depuis un moment le moyen de vérifier une requête sans passer par phpmyadmin,se que contient la requete

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Avec PDO tu ne peux pas de manière simple.

    Mais pour controler $id, un simple var_dump() suffit.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    si je fait un var_dump elle prend 0 en rapport a cette ligne
    $id=(isset($_SESSION['id']))?(int) $_SESSION['id']:0;et si je mets 1 elle prend 1 donc cette ligne sert a rien,faut que je trouve le moyen a récupère le id pour que la requête marche ,non

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Cette ligne est bien écrite mais visiblement $_SESSION['id'] est vide.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    mais si elle etait vide,j'aurais une erreur d'index indefini,non

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] update qui ne marche pas
    Par kate59 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/10/2009, 17h31
  2. UPDATE qui ne marche pas
    Par souadmaa dans le forum Langage
    Réponses: 2
    Dernier message: 01/04/2008, 10h15
  3. [MySQL] Update qui ne marche pas
    Par Atchoum_002 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 13/10/2005, 16h06
  4. Réponses: 3
    Dernier message: 08/09/2003, 15h06
  5. Réponses: 9
    Dernier message: 07/05/2003, 12h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo