Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & Oracle
PHP & Oracle Forum d'entraide sur Oracle avec PHP. Avant de poster -> FAQ Oracle et Cours Oracle
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 21/01/2008, 17h34   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 41
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 41
Points : 13
Points : 13
Par défaut problème d'injection SQL

Bonjour, je n'arrive pas à gérer l'injection SQL.
Je cherche même pas à protéger ma requête, mais plutôt à réussir à faire passer des requêtes où il y a une condition d'égalité avec une valeure contenant une apostrophe.

Exemple
Code :
SELECT * FROM personne WHERE nom='D'Henry'

j'ai déjà essayé avec addslash et j'obtiens une erreur ( 'D'Henry'-> 'D\'Henry l'échappement ne marche pas)

Savez vous comment je peux échapper des caractères dans ce type de situation ?

J'utilise Oracle 10g


merci
matoon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 17h50   #2
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 41
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 41
Points : 13
Points : 13
C'est bon en fait j'ai trouvé, il suffit tout simplement de doubler le simple quote. Pour une requete avec une égalitée sur une variable, il suffit de remplacer $maVariable par str_replace("'","''",$maVariable) qui va doubler tout les simple quote de votre variable, c'est-à-dire les échapper pour ce cas (Oracle)
voilà
matoon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 10h43   #3
Membre du Club
 
Étudiant
Inscription : mai 2006
Messages : 49
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2006
Messages : 49
Points : 53
Points : 53
Envoyer un message via MSN à APommePote
Citation:
Envoyé par matoon Voir le message
C'est bon en fait j'ai trouvé, il suffit tout simplement de doubler le simple quote. Pour une requete avec une égalitée sur une variable, il suffit de remplacer $maVariable par str_replace("'","''",$maVariable) qui va doubler tout les simple quote de votre variable, c'est-à-dire les échapper pour ce cas (Oracle)
voilà
Salut je te conseil plutôt d'utiliser le oci_bind_by_name : http://fr.php.net/manual/fr/function...nd-by-name.php

Code :
1
2
3
4
5
6
7
8
9
10
 
//(code fait de tête à vérifier)
$maVariable = "D'henry";
$db_cnx = ...
 
$requete = 'SELECT * FROM personne WHERE nom = :nom';
$statement = oci_parse($TA_CNX, $requete);
oci_bind_by_name($statement, ":nom", $maVariable);
 
oci_execute ..

Cela fonctionne aussi avec toutes les requetes CRUD (Create Retrieve Update Delete)
APommePote 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 05h54.


 
 
 
 
Partenaires

Hébergement Web