MA REQUETE UPDATE NE FAIT DE MODIFICATION DANS LA BASE DE DONNEE

Petit nouveau ! | 1 Messages

22 juil. 2016, 12:11

Bonjour, pour mon projet je dois faire une application de gestion de magasin.Quand l'utilisateur se connecte pour la premiere fois ,il a un mot de passe par defaut. et deh qu'il avec ce mot automatiquement il est rediriger vers une page de reinitialisation du mot passe. Mon soucis est que je n'arrive pas a modifier le mot de passe et le statut de ce dernier.
J'espère que vous pourrez m'aidés.

Voici mon codes :
<?php
session_start();
if(!isset($_SESSION['acteurs_login'])){
 echo "<script>location.href='index.php'</script>";
}
include_once'connexion/config.php';
$config = new Config();
$db = $config->getConnection();

$code=$_SESSION['acteurs_login'];

	
	$rq=$db->prepare("SELECT * FROM compte1 WHERE  acteurs_login=?");
	$rq->execute(array($code));
	$succes=$rq->fetch();
	$_SESSION['id']=$succes['id_compte'];
	$_SESSION['stat']=$succes['acteurs_statut'];
	
	if(isset($_POST['valider']))
	{
		
		
		$confirme=htmlspecialchars(md5($_POST['confirme']));
		 $passe=htmlspecialchars(md5($_POST['passe']));
			if(!empty($confirme) and !empty($passe) and $passe==$confirme )
				{		  			
		  		  $etat=1;	
                   //UPDATE `gesma`.`compte1` SET `acteurs_pass` = MD5('salut'), `acteurs_statut` = '1' WHERE `compte1`.`id_compte` = 27  'compte1'.'id_compte'='?';
					$stmt=$db->prepare('UPDATE FROM compte1 SET acteurs_pass=?,acteurs_statut=?  WHERE acteurs_login=?');	
					$stmt->execute(array($passe,$etat,$_SESSION[acteurs_login]));
					 
					$error='F&eacute;licitation! modification &eacute;ffectu&eacute;e avec succ&egrave;s!';
	
		  		}
		  		else
		  		{
		  			$error='Traitement impossible : vos mots de passe ne correspondent pas';
		  		}
		  			
		}

include_once'scripts/head_ind.php';
 ?>

<form class="login-form" action="" method="post">
		<h3 class="form-title"> REINITIALISER VOTRE MOT DE PASSE POUR DES RAISONS DE SECURITE</h3>
		<div class="alert alert-danger display-hide">
			<button class="close" data-close="alert"></button>
		
		</div>
		<div class="form-group">
			<!--ie8, ie9 does not support html5 placeholder, so we just show field title for that-->
			<label class="control-label visible-ie8 visible-ie9">Mot de passe</label>
			<div class="input-icon">
				<i class="fa fa-lock"></i>
				<input class="form-control placeholder-no-fix" name="passe"  type="password" autocomplete="off" placeholder=" NOUVEAU MOT DE PASSE"/>
			</div>
		</div>
		<div class="form-group">
			<label class="control-label visible-ie8 visible-ie9">Confirmer votre mot de passe</label>
			<div class="input-icon">
				<i class="fa fa-lock"></i>
				<input class="form-control placeholder-no-fix" name="confirme"  type="password" autocomplete="off" placeholder="CONFIRMER"/>
			</div>
		</div>
		<div class="form-actions">
			
			<button type="submit" name="valider" class="btn blue pull-right">
			Valider <i class="m-icon-swapright m-icon-white"></i>
			</button>
			<br/>
            </div>
            
				<div><?php if(isset($error)) echo $error;?></div>
	</form>
	

<?php include'scripts/footer_ind.php'?>
Modifié en dernier par moogli le 25 juil. 2016, 14:28, modifié 1 fois.
Raison : avec le bbcode c'est (un peu) mieux

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 juil. 2016, 14:36

salut,

$rq=$db->prepare("SELECT * FROM compte1 WHERE acteurs_login=?");
$rq->execute(array($code));
$succes=$rq->fetch();
$_SESSION['id']=$succes['id_compte'];
$_SESSION['stat']=$succes['acteurs_statut'];

=> $succes n'existe pas => boom
il est impératif d'afficher les erreur php, pour cela ; display_error = on et error_reporting = E_ALL, avec cela tu aurais pu avancer.

il n'y a pas de from dans une requête update. Il faut toujours tester une requête dans un client sql pour être certain de la syntaxe
La requête en commentaire est plsu correcte. et l'ajout du hash du mot de passe une bonne idée (mieux que MD5 serait une meilleur idée, mais c'est toujours mieux que les mots de passe en clair dans la base).

si tu utilise PDO pour tes requêtes SQL avec la gestion d'erreur par exception il faut ajouterun try / catch pour la gérer.

@+
Il en faut peu pour être heureux ......