Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/02/2007, 01h06   #1
Membre éprouvé
 
Avatar de oceane751
 
Intégrateur Web
Inscription : novembre 2004
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Intégrateur Web

Informations forums :
Inscription : novembre 2004
Messages : 988
Points : 434
Points : 434
Par défaut requête maj sous conditions

bonjour à tous

j'ai créé une page de modif des coordonnées clients.

il peut entre autre modifier son login et mdp
dans le champs text j'ai mis en value, le pseudo du client, et pour le mdp j'ai mis un blanc

mais le problème, est que la mise à jour, via php, de données identiques à celles enregistrées dans la bdd, ne donne rien.

donc j'ai fait ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
if ( (($pseudo == $_POST['pseudo']) && ($mdp == $_POST['mdp'])) || (($pseudo != $_POST['pseudo']) && ($mdp == $_POST['mdp'])) || (($pseudo == $_POST['pseudo']) && ($mdp != $_POST['mdp'])) || (($pseudo != $_POST['pseudo']) && ($mdp != $_POST['mdp'])) )
 
 
$sql = "UPDATE client SET adresse = '".$_POST['adresse']."', complement = '".$_POST['complement']."', ville = '".$_POST['ville']."', cp = '".$_POST['cp']."',
  tel = '".$_POST['tel']."', mail = '".$_POST['mail']."', pseudo = '".$_POST['pseudo']."', mdp = '".$_POST['mdp']."' WHERE id_stagiaire = '".$idstag."'";
  echo $sql;
  $quer = mysql_query($sql);
  $fe = mysql_affected_rows();
 
 
if   ($fe)
  {
 
    echo "<font color = red size = +1><center>Vos données ont bien été modifiées</center></font>";
 
    echo "<META http-equiv='refresh' content='5; URL=accueil.php'>";
   }
}
mais au lieu de me redirigirer vers la page d'accueil, ça ne me fait rien..

normalement avec les conditions que j'ai mis, ça devrait marcher snif..

quelqu'un pourrait il me dire où est ce que j'ai fauté?

merci beaucoup....
oceane751 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 03h26   #2
Membre actif
 
Étudiant
Inscription : août 2005
Messages : 161
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 161
Points : 170
Points : 170
Pour la redirection utilise plutot
Code :
header('location: url');
poof65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 08h41   #3
Membre chevronné
 
David DRAPEAU
Consultant OpenERP
Inscription : juin 2003
Messages : 807
Détails du profil
Informations personnelles :
Nom : David DRAPEAU

Informations professionnelles :
Activité : Consultant OpenERP

Informations forums :
Inscription : juin 2003
Messages : 807
Points : 728
Points : 728
Envoyer un message via MSN à zyongh Envoyer un message via Skype™ à zyongh
Par défaut réécriture du code

Citation:
Envoyé par oceane751
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
if ( (($pseudo == $_POST['pseudo']) && ($mdp == $_POST['mdp'])) || (($pseudo != $_POST['pseudo']) && ($mdp == $_POST['mdp'])) || (($pseudo == $_POST['pseudo']) && ($mdp != $_POST['mdp'])) || (($pseudo != $_POST['pseudo']) && ($mdp != $_POST['mdp'])) )
 
 
$sql = "UPDATE client SET adresse = '".$_POST['adresse']."', complement = '".$_POST['complement']."', ville = '".$_POST['ville']."', cp = '".$_POST['cp']."',
  tel = '".$_POST['tel']."', mail = '".$_POST['mail']."', pseudo = '".$_POST['pseudo']."', mdp = '".$_POST['mdp']."' WHERE id_stagiaire = '".$idstag."'";
  echo $sql;
  $quer = mysql_query($sql);
  $fe = mysql_affected_rows();
 
 
if   ($fe)
  {
 
    echo "<font color = red size = +1><center>Vos données ont bien été modifiées</center></font>";
 
    echo "<META http-equiv='refresh' content='5; URL=accueil.php'>";
   }
}
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
if(isset($_POST['valider'])){ // Si ta balise <input type=submit name='valider' ... />
	// htmlspecialchars() et strip_tags() conbinés ensemble permet de se protéger contre les attaques XSS et CSRF
	$pseudo = htmlspecialchars(strip_tags($_POST['pseudo']), ENT_QUOTES); 
	// tu fais pareil avec toutes les autres variables transmises par POST
 
	$sql = "UPDATE client SET adresse='".$_POST['adresse']."', complement='".$_POST['complement']."', ville='".$_POST['ville']."', cp='".$_POST['cp']."', tel='".$_POST['tel']."', mail='".$_POST['mail']."', pseudo='".$_POST['pseudo']."', mdp='".$_POST['mdp']."' WHERE id_stagiaire = '".$idstag."'";
	echo $sql;
	$quer = mysql_query($sql);
	$fe = mysql_affected_rows() or trigger_error("Les données n'ont pas été modifiées!", E_USER_ERROR);
 
    echo '<font color="red" size="1"><center>Vos données ont bien été modifiées</center></font>';
    header("locationaccueil.php");	
}
__________________
Expertise OpenERP - programmation PHP/MySQL
toujours à l'écoute du marché
zyongh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 20h08   #4
Membre éprouvé
 
Avatar de oceane751
 
Intégrateur Web
Inscription : novembre 2004
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Intégrateur Web

Informations forums :
Inscription : novembre 2004
Messages : 988
Points : 434
Points : 434
oauis mais j'aime bien le meta qui me permet d'afficher ce message "Vos données ont bien été modifiées" puis de faire la redirection


sinon, zyongh je vais tester ce que tu ma donné, je reviens apres..
oceane751 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 22h17   #5
Membre éprouvé
 
Avatar de oceane751
 
Intégrateur Web
Inscription : novembre 2004
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Intégrateur Web

Informations forums :
Inscription : novembre 2004
Messages : 988
Points : 434
Points : 434
ok ça marche

ppourrais tu m'expliquer cette ligne
Code :
1
2
 
$pseudo = htmlspecialchars(strip_tags($_POST['pseudo']), ENT_QUOTES);
j'ai lu que le htmlspecialchars convertit tous les caractères spéciaux en entité HTML, que strip_tags supprime les balises HTML et PHP d'une chaîne

mais je ne vois pas la logique de l'utilisation de ces fonctions dans mon cas.

merci d'avance pour ces explications..
oceane751 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 00h08   #6
Membre chevronné
 
David DRAPEAU
Consultant OpenERP
Inscription : juin 2003
Messages : 807
Détails du profil
Informations personnelles :
Nom : David DRAPEAU

Informations professionnelles :
Activité : Consultant OpenERP

Informations forums :
Inscription : juin 2003
Messages : 807
Points : 728
Points : 728
Envoyer un message via MSN à zyongh Envoyer un message via Skype™ à zyongh
Par défaut je prends un exemple tout simple

imagine que dans ton formulaire tu ais un champ de texte (type="text") ou une zone de texte (<textarea></textarea>).

Si la personne saisit:
Code :
<script>alert('XSS')</script>
et que tu n'as pas utilisé htmlspecialchars et strip_tags, tu viens de subir une attaque XSS car le script est entièrement pris en compte et peut donc être exécuté.

Il s'agit là d'un exemple inoffensif. Mais on peut supprimer toutes les données d'un disque dur en quelques lignes de script seulement.
__________________
Expertise OpenERP - programmation PHP/MySQL
toujours à l'écoute du marché
zyongh est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h33.


 
 
 
 
Partenaires

Hébergement Web