Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
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 15/09/2011, 18h52   #1
Candidat au titre de Membre du Club
 
Homme Clément
Etudiant EPITECH
Inscription : septembre 2011
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant EPITECH

Informations forums :
Inscription : septembre 2011
Messages : 18
Points : 10
Points : 10
Par défaut UPDATE via ajax : Il update pas

Bonjour,

Dans le cadre d'un formulaire pré-chargé depuis la bdd, j'ai un bouton supposé mettre à jour avec le nouveau contenu des champs.
Je fais ca en AJAX et methode GET.

Aucune erreur dans la console de Javascript, Mysql ne dit rien... mais ne fait rien non plus:

J'apelle le script php ainsi:
Code Javascript :
1
2
3
 
xhr.open("GET", "update_rfo.php?id="+id+"&label="+label+"&acteur="+acteur+"&validateur="+validateur+"&statut="+statut+"&description="+description+"&action="+action+"&conclusion="+conclusion, true);
xhr.send(null);

Le script PHP en lui-même.

Code PHP :
1
2
3
4
5
6
7
8
9
10
 
<?php	
        include "connect.php";
	$label = mysql_real_escape_string($_GET['label']);
	$description = mysql_real_escape_string($_GET['description']);
	$action = mysql_real_escape_string($_GET['action']);
	$conclusion = mysql_real_escape_string($_GET['conclusion']);
	mysql_query("UPDATE `infos_rfo` SET `label` = '{$label}', `author` = '{$_GET['acteur']}', `validator` = '{$_GET['validateur']}', `status` = '{$_GET['statut']}', `description` = '{$description}', `action` = '{$action}', `conclusion` = '{$conclusion}' WHERE `ID` = '{$_GET['id']}'" or die (mysql_error()));
	mysql_close($db)
?>

Pourquoi cela ne marche-t-il pas ?
Je suis plutôt débutant dans le developpement WEB, donc j'en profite pour demander des idées et conseils pour sécuriser au mieux mes requêtes au passage .

Merci de votre aide.
EvilSakray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 21h38   #2
Modérateur
 
Avatar de Vil'Coyote
 
Développeur Web
Inscription : février 2008
Messages : 3 307
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : février 2008
Messages : 3 307
Points : 4 488
Points : 4 488
hum c'est quoi tout ces ` qui traine un peut partout?
de plus le "or die" se met à l'extérieur de mysql_query et non dans les parenthèses.
Vil'Coyote est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 00h20   #3
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
Test ta page update_rfo.php manuellement d'abord histoire de valider qu'elle ne revoie pas d'erreur.

Ensuite trace ta requête SQL générée dans un fichier de log histoire de valider son bon format.
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre.

Linus Torvalds
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 01h01   #4
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
Bonsoir,
1/ le plus surprenant, c'est que tu PROTÈGES bien certaines variables, mais pas les autres ! c'est TRES dangereux...
2/ De plus, une bonne indentation rend le code plus lisible, et plus facile à déboguer.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php	
	include "connect.php";
	$label 		= mysql_real_escape_string($_GET['label']);
	$acteur 	= mysql_real_escape_string($_GET['acteur']);
	$validateur 	= mysql_real_escape_string($_GET['validateur']);
	$statut 	= mysql_real_escape_string($_GET['statut']);
	$description 	= mysql_real_escape_string($_GET['description']);
	$action 	= mysql_real_escape_string($_GET['action']);
	$description 	= mysql_real_escape_string($_GET['description']);
	$id 		= mysql_real_escape_string($_GET['id']);
	mysql_query("UPDATE infos_rfo SET 
			label = '$label', 
			author = '$acteur', 
			validator = 'validateur', 
			status = '$statut', 
			description = '$description', 
			action = '$action', 
			conclusion = '$conclusion' 
			WHERE ID = '$id';") or die (mysql_error());
	mysql_close($db);
?>
3/ Et (sauf erreur), en passant dans l'URL : utiliser escape() (en JavaScript) (équivalent de urlencode() en PHP)
puis en les récupérant : urldecode() (en PHP)
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 17h36   #5
Candidat au titre de Membre du Club
 
Homme Clément
Etudiant EPITECH
Inscription : septembre 2011
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant EPITECH

Informations forums :
Inscription : septembre 2011
Messages : 18
Points : 10
Points : 10
Citation:
Envoyé par Vil'Coyote Voir le message
hum c'est quoi tout ces ` qui traine un peut partout?
de plus le "or die" se met à l'extérieur de mysql_query et non dans les parenthèses.
L'erreur venait de là merci
Et les `` sauf erreur de ma part sont utilisables dans les requêtes SQL pour les noms de tables et champs. `nomdelatable` ect.

Citation:
Envoyé par jreaux62 Voir le message
Bonsoir,
1/ le plus surprenant, c'est que tu PROTÈGES bien certaines variables, mais pas les autres ! c'est TRES dangereux...
2/ De plus, une bonne indentation rend le code plus lisible, et plus facile à déboguer.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php	
	include "connect.php";
	$label 		= mysql_real_escape_string($_GET['label']);
	$acteur 	= mysql_real_escape_string($_GET['acteur']);
	$validateur 	= mysql_real_escape_string($_GET['validateur']);
	$statut 	= mysql_real_escape_string($_GET['statut']);
	$description 	= mysql_real_escape_string($_GET['description']);
	$action 	= mysql_real_escape_string($_GET['action']);
	$description 	= mysql_real_escape_string($_GET['description']);
	$id 		= mysql_real_escape_string($_GET['id']);
	mysql_query("UPDATE infos_rfo SET 
			label = '$label', 
			author = '$acteur', 
			validator = 'validateur', 
			status = '$statut', 
			description = '$description', 
			action = '$action', 
			conclusion = '$conclusion' 
			WHERE ID = '$id';") or die (mysql_error());
	mysql_close($db);
?>
3/ Et (sauf erreur), en passant dans l'URL : utiliser escape() (en JavaScript) (équivalent de urlencode() en PHP)
puis en les récupérant : urldecode() (en PHP)
Oui par la suite je suis même passé par URIEncodeComponent() à cause des caractères spéciaux.
Pour les variables non protégée.. je ne sais pas, c'est juste qu'elle correspondent à des listes "Select" donc ce sont des champs imposés et donc pas forcément nécessaire à contrôler ?

@ Marc3001

Merci mais au final ca n'aura pas été nécessaire
EvilSakray 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 00h43.


 
 
 
 
Partenaires

Hébergement Web