Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
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 13/06/2007, 13h33   #1
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
Par défaut Ecrire une requete INSERT avec des variables $_POST

Bonjour,

Une question bete, on écris comment une requete INSERT TO avec des variables $_POST ?

Je sais les écrire avec des concaténations mais j'ai lu sur ce forum que c'était déconseillé...

Merci

Arnaud
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 13h48   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
C'est déconseillé parce que tu risques de te retrouver avec des injections SQL.
Pour éviter ca il faut utiliser la fonction mysql_real_escape_string() sur chaque paramètre de $_POST utilisé dans ta requete. Exemple
Code :
1
2
 
$requete = "Select monchamp from matable where nom ='". mysql_real_escape_string($_POST['nom']) ."' and prenom ='" . mysql_real_escape_string($_POST['prenom']) ."'";
EDIT : Celira : c'est pas ma faute, mets toi aux expressions régulières je te laisserai tous ces posts là ^^
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 13h48   #3
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Bonjour

Ce qui est déconseillé, c'est de mettre le contenu brut de la variable post. On ne sait jamais ce qu'un couillon mal intentionné peut écrire dans un champ text
Pour éviter l'interprétation de code, tu peux utiliser une fonction comme mysql_real_escape_string, qui va ajouter des slashes un peu partout.

EDIT : koo ! arrête de poster de la même chose que moi en même temps que moi
Et je n'y connais pas grand-chose en regex, alors je te laisse le monopole
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 13h51   #4
Membre éclairé
 
Avatar de Asmodean
 
Inscription : février 2006
Messages : 311
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France

Informations forums :
Inscription : février 2006
Messages : 311
Points : 346
Points : 346
Envoyer un message via MSN à Asmodean
mysql_real_escape_string empeche aussi les insertion genre javascript ou il faut utiliser en plus htmlentities?
Asmodean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 13h58   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par Asmodean
mysql_real_escape_string empeche aussi les insertion genre javascript
Non, c'est à vous de le filtrer suivant vos besoins (strip_tags, preg_replace pour supprimer certaines balises, ...).

Je vous recommande cet article : Développement web : généralités sur la sécurité.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 13h59   #6
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
ah ok, je ne savais pas !

mais dans mon code, deja je crois que la syntaxe n'est pas bonne :

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
<?php
$requete = "INSERT INTO inventaire_server VALUES ( '', 
	'".strtoupper(presVar($_POST['inventaire_server_hostname'])."',
	'".presVar($_POST['inventaire_server_ip'])."',
	'".strtoupper(presVar($_POST['inventaire_server_numero_serie']))."',
	'".presVar($_POST['modele'])."',
	'".presVar($_POST['inventaire_server_id_os'])."',
	'".presVar($_POST['inventaire_server_type'])."',
	'".presVar($_POST['inventaire_server_mise_service'])."',
	'".presVar($_POST['inventaire_server_id_situation'])."',
	'".presVar($_POST['inventaire_server_date_reception'])."',
	'".presVar($_POST['inventaire_server_numero_reception'])."',
	'".presVar($_POST['inventaire_server_id_batiment'])."',
	'".presVar($_POST['inventaire_server_id_etage'])."',
	'".presVar($_POST['inventaire_server_commentaire_server'])."',
	'".presVar($_POST['inventaire_server_id_inventaire_server_id_contrat_maintenance'])."',
	'".presVar($_POST['inventaire_server_contrat_date_du'])."',
	'".presVar($_POST['inventaire_server_contrat_date_au'])."',
	'".presVar($_POST['inventaire_server_responsable_appli_prenom'])."',
	'".presVar($_POST['inventaire_server_responsable_appli_tel'])."',
	'".presVar($_POST['inventaire_server_responsable_appli_nom'])."',
	'".presVar($_POST['prenom'])."'";
?>
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 14h16   #7
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Question : que fait la fonction presVar ?
Sinon, côté syntaxe de la requête ça a l'air correct. Je te conseille un affichage des erreurs lors de l'execution de la requête...
Code php :
mysql_query($requete) or die ($requete.' : '.mysql_error());
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 14h19   #8
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
la fonction fais ca :

Code php :
1
2
3
4
function presVar($inPost, $inName)
	{
		echo (isset($inPost[$inName]) && !empty($inPost[$inName]))?$inPost[$inName]:'';
	}

c'est pour éviter les erreurs SQL si jamais j'ai un des champs qui est non renseigné. A moins qu'il existe une autre méthode...
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 14h36   #9
Membre éclairé
 
Avatar de Asmodean
 
Inscription : février 2006
Messages : 311
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France

Informations forums :
Inscription : février 2006
Messages : 311
Points : 346
Points : 346
Envoyer un message via MSN à Asmodean
Tu appelle mal la fonction...maintenant que tu as changé le prototype ca marche comme ca :

Code php :
presVar($_POST,'inventaire_server_id_situation')
Asmodean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 15h05   #10
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
c'est bizarre, sur PHPEdit, niveau coloration syntaxique, c'est comme si j'avais une erreur de syntaxe...

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
	$requete = "INSERT INTO inventaire_server VALUES ( '', 
	'" . strtoupper(presVar($_POST,'inventaire_server_hostname')) . "',
	'" . presVar($_POST,'inventaire_server_ip') . "',
	'" . strtoupper(presVar($_POST,'inventaire_server_numero_serie')) . "',
	'" . presVar($_POST,'modele') . "',
	'" . presVar($_POST,'inventaire_server_id_os') . "',
	'" . presVar($_POST,'inventaire_server_type') . "',
	'" . presVar($_POST,'inventaire_server_mise_service') . "',
	'" . presVar($_POST,'inventaire_server_id_situation') . "',
	'" . presVar($_POST,'inventaire_server_date_reception') . "',
	'" . presVar($_POST,'inventaire_server_numero_reception') . "',
	'" . presVar($_POST,'inventaire_server_id_batiment') . "',
	'" . presVar($_POST,'inventaire_server_id_etage') . "',
	'" . presVar($_POST,'inventaire_server_commentaire_server') . "',
	'" . presVar($_POST,'inventaire_server_id_inventaire_server_id_contrat_maintenance') . "',
	'" . presVar($_POST,'inventaire_server_contrat_date_du') . "',
	'" . presVar($_POST,'inventaire_server_contrat_date_au') . "',
	'" . presVar($_POST,'inventaire_server_responsable_appli_prenom') . "',
	'" . presVar($_POST,'inventaire_server_responsable_appli_tel') . "',
	'" . presVar($_POST,'inventaire_server_responsable_appli_nom') . "',
	'" . presVar($_POST,'prenom') . "'";
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 15h12   #11
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
A non, ca a laire de fonctionner en compilant...

bizarre !

merci de votre aide !

thank !

Arnaud
arnaudperfect 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 20h28.


 
 
 
 
Partenaires

Hébergement Web