8795 sujets

Développement web côté serveur, CMS

Bonjour,

Je fabrique actuellement un formulaire permettant au client de mettre a jour ses coordonnees. Je me trouve confrontée à un probleme, le mot de passe est stocké dans la bdd mysql en md5.
J’aimerais que le champ pass de la bdd soit mis a jour que si ce champ du formulaire est rempli.

Merci d’avance pour l'aide que vous apportez Smiley cligne

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  $updateSQL = sprintf("UPDATE clients SET nom=%s, prenom=%s, adresse=%s, ville=%s, 
cp=%s, tel=%s, email=%s, pass=md5(%s), statut=%s WHERE ID=%s",
                       GetSQLValueString($_POST['nom'], "text"),
                       GetSQLValueString($_POST['prenom'], "text"),
                       GetSQLValueString($_POST['adresse'], "text"),
                       GetSQLValueString($_POST['ville'], "text"),
                       GetSQLValueString($_POST['cp'], "text"),
                       GetSQLValueString($_POST['tel'], "text"),
                       GetSQLValueString($_POST['email'], "text"),
                       GetSQLValueString($_POST['pass'], "text"),
                       GetSQLValueString($_POST['statut'], "text"),
                       GetSQLValueString($_POST['ID'], "int"));

  mysql_select_db($database_Connexion, $Connexion);
  $Result1 = mysql_query($updateSQL, $Connexion) or die(mysql_error());


<form action="<?php echo $editFormAction; ?>" method="POST" ...>
<input name="mail" type="text" class="input" id="mail" value="<?php echo htmlentities($row_rsclient['email'], ENT_COMPAT, 'utf-8'); ?>" />
</form>

Modifié par fanny742 (06 May 2008 - 02:56)
Administrateur
il faut réétudier la façon d'écrire la requête.
il s'agit d'un simple if pour tester la présence de $_POST['pass'] et l'intégrer dans la chaîne de caractères.

par exemple
if(isset($_POST['pass']) && strlen($_POST['pass'])>5)) $update_pass=' ,pass=md5(\''.addslashes($_POST['pass']).'\') ';
$updateSQL = 'blabla ... '.$update_pass.' blabla';
Hello Fanny Smiley smile ,

ben à priori il suffit de faire 2 requêtes différentes selon que $_POST['pass'] soit ou non alimenté...

Sinon 2 petites remarques :
- en général on fait ressaisir le mot de passe une 2ème fois (puisque le champ est censé être de type password et donc 'invisible') pour être sûr que le visiteur ne s'est pas trompé et qu'il ne se retrouve pas bloqué la prochaine fois qu'il va vouloir se connecter.
- en voyant des variables du genre MM_quelquechose ça me rappelle l'époque (lointaine Smiley fut ) où j'utilisais Dreamweaver en mode code. Ce n'était que pour faire des mises en pages à base de tableaux (et de vilain code) mais je crois savoir que la (les ?) dernière(s) version(s) permet(tent) également de 'générer' des requêtes mysql. Tout ça pour dire que je ne comprenais pas grand chose à ce que je faisais et j'espère que ça n'est pas ton cas car les requêtes mysql sont autrement plus sensibles que la mise en page Smiley scared ! Ce qui me fait dire ça c'est que d'une part ta question est un basique de php (création d'une requête en fonction des données reçues d'un formulaire) et d'autre part que dans le code que tu donnes il y a la partie $editFormAction qui n'a pas de rapport avec ta question alors qu'il manque la fonction GetSQLValueString qui elle y est directement liée (même si on peut supposer qu'il s'agit d'un test de base sur le type des données et l'ajout éventuel d'un htmlspecialchars). Et donc, peut-être que tu devrais te faire la main encore un peu avant d'avoir des clients Smiley langue !

Voili voilou...

A+

Edit: Argh ! J'aurais pas imaginé être grillé à 3h du mat Smiley biggol !
Modifié par Heyoan (04 May 2008 - 03:31)
J’ai suivi vos conseils, en fabriquant 2 requêtes conditionnées.
Je n’etais pas sur la bonne voie, je n’avais pas essayé d’en utiliser 2.
Ca fonctionne.

Le script ci-dessus n’est pas definitif, un champ est prevu pour la confirmation du mot de passe et des amelioration seront apportées surtout en securité !
J’ai encore beaucoup des choses à apprendre, les livres n’apportent pas tout, c’est pourquoi j'ai besoin de conseils.

Merci pour tout
Modifié par fanny742 (06 May 2008 - 02:57)