UPDATE sur plusieurs tables

Répondre
noreille79
le 31/01/2007 à 08:13
noreille79
Salut les Zéros :D

J'ai un souci lors de la mise à jour (par les membres)des tables de ma base de données.
Il modifie mon mot de passe même si je lui en ai pas déclaré un nouveau o_O
Si vous voulez plus de renseignement ou voir plus de fichier dites le moi ;)

maj_bd.php
Code : PHP
<?php
//Ne pas oublier de mettre le session_start()
session_start();

//Inclusion du fichier contenant les identifiants de connexion à la base de données.
require("config.inc.php");

//Connexion à la base de données.
mysql_connect($host, $bdd_username, $password);
mysql_select_db($bdd_name);

//On vérifie que le membre est connecté.
if (isset($_SESSION['logged']) && $_SESSION['logged'] == true)

$pseudo_session = $_SESSION['username'];
$pseudo_form = $_POST['username'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$adresse = $_POST['adresse'];
$postal = $_POST['postal'];
$user_from = $_POST['user_from'];
$club = $_POST['club'];
$niveau = $_POST['niveau'];
$naissance = $_POST['naissance'];
$new_mdp = $_POST['new_mdp'];
$new_mdp2 = $_POST['new_mdp2'];
$user_password = $_POST['user_password'];
$user_email = $_POST['user_email'];


$recherche = mysql_query ("SELECT * FROM phpbb_users WHERE `username`='$pseudo_session'");
$var = mysql_fetch_array ($recherche);
$user_password_sql = $var['user_password'];
$user_email_sql = $var['user_email'];

//vérification du nouveau mot de passe:
if ( $new_mdp != $new_mdp2 )
{$reponse = 'Veuillez retaper votre confirmation de nouveau mot de passe';}

//Hashage du noveau mot de passe avec md5().
$new_mdp = md5($new_mdp);

//on vérifie le mot de passe
if ( $user_password_sql != md5($user_password))
{$reponse = 'Veuillez vérifier votre mot de passe.
<a href="javascript:history.back(1)">Retour au formulaire</a>'; }
else
{
if ( $user_email != $user_email_sql )
{
$verification2 = mysql_query("SELECT COUNT(*) FROM phpbb_users WHERE user_email='$user_email'") or die (mysql_error());
$donnees2 = mysql_fetch_array($verification2)or die (mysql_error());

if($donnees2['COUNT(*)'] >= 1)
{
$reponse = 'Cette adresse e-mail est déjà utilisée, veuillez en choisir une autre. <a href="javascript:history.back(1)">Retour au formulaire</a>';
}
}
elseif(empty($user_email))
{
$reponse = 'Vous n'avez pas rempli le champ de l'email.
<a href="javascript:history.back(1)">Retour au formulaire</a>' ;
}


elseif(empty($new_mdp))
{
mysql_query ("UPDATE phpbb_users SET `nom`='$nom', `prenom`='$prenom', `adresse`='$adresse', `postal`='$postal', `user_from`='$user_from', `club`='$club', `niveau`='$niveau', `naissance`='$naissance', `user_email`='$user_email' WHERE username='$pseudo_session'")or die (mysql_error());
mysql_query ("UPDATE p4w_membre SET `nom`='$nom', `prenom`='$prenom', `ville`='$user_from', `mail`='$user_email' WHERE pseudo='$pseudo_session'")or die (mysql_error());
$reponse = 'Vos données ont été actualisées. <a href="membre.php">Retour à l'espace membre</a>' ;
}
elseif(!empty($new_mdp))
{
mysql_query ("UPDATE phpbb_users SET `nom`='$nom', `prenom`='$prenom', `adresse`='$adresse', `postal`='$postal', `user_from`='$user_from', `club`='$club', `niveau`='$niveau', `naissance`='$naissance', `user_email`='$user_email', `user_password`='$new_mdp', `mot_passe2`='$new_mdp2' WHERE username='$pseudo_session'")or die (mysql_error());
mysql_query ("UPDATE p4w_membre SET `nom`='$nom', `prenom`='$prenom', `ville`='$user_from', `mail`='$user_email', `passe`='$new_mdp' WHERE pseudo='$pseudo_session'")or die (mysql_error());
$reponse = 'Vos données ont été actualisées. <a href="membre.php">Retour à l'espace membre</a>';
}
}



mysql_close($sql); //Deconnection
?>

<html>
<body>
<? echo $reponse; ?>
</body>
</html>
JuTs
le 31/01/2007 à 10:32
JuTs
Salut

Il faut vérifier si ton mot de passe est vide avant de le passer par md5. le md5 d'une chaîne vide ne donne pas une chaîne vide.

Quelques remarques :

Tu n'est pas obligé de passer par la fonction md5 de PHP, MySQL en fourni une.
Ex : ... pass=MD5('$passEnClair') ...

Echape tes variable avant de les envoyer dans une requête SQL (risque d'injection SQL : http://www.phpsecure.info/v2/article/InjSql.php ).
Tu peux utiliser la fonction mysql_real_escape_string() pour le faire


Ce n'est pas indispensable de passer par des variables intermédiaires
ex :
Tu peux faire directement
... `nom`='".$_POST['nom']."' ... (sans oublier d'échaper la chaine)
à la place de

$nom = $_POST['nom'];
... `nom`='$nom' ...
JuTs
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours