Eregi_replace ... mail ?

Statut
N'est pas ouverte pour d'autres réponses.

Jereck

Α & Ω
Staff
SELECT *
FROM database
WHERE sujet = $_get['sujet'] AND option = $_GET['option'];


Et tu combine ça avec des
isset($_get[key])
si tu n'es pas sur de connaitre à l'avance tous les champs qui passerons par l'adresse.

Ou alors, j'ai rien pigé.
 
1er
OP
SkYlEsS

SkYlEsS

Elite
Nan, je me demandais de quelle "type" (varchar, text, int, etc.) pouvait être cette valeur ...

Parce qu'ensuite je fais :

Code:
$req = mysql_query("SELECT id, question, reponse FROM ad_faq WHERE sujet = '$sujet' AND option = '$option' ORDER BY id");
Avec le type "text" et "varchar", ça ne semble pas fonctionner ! Suis-je obliger de prendre des chiffres à la place (ce qui ne m'arrange guère mais bon) et utiliser le "type" INT alors ? :-9
 

Sebulba

Dieu
Staff
Les variables n'ont pas de type en PHP.

Quel que soit "$truc";
Si tu fais $brol = intval($truc), brol sera un nombre
Si tu fais $brol = strstr(0,2,$truc) ca sera une chaine.
(Que tu peux très bien retransformer en nombre plus loin.)

Par hygiène et securité, concernant la programmation web : considère que tout ce qui te vient du WEB sont des chaines, force les entiers avec INTVAL($tachaine) et fais un minimum d'idiot checking sur les chaines ( pour eviter les injections SQL)
 
1er
OP
SkYlEsS

SkYlEsS

Elite
:gne:

['rien compris (ou presque) ! 'crois qu'j'vais revenir à ces fichus nombres ...]

Je parlais du "type" dans la BDD moi et non en php ... enfin soit. :p

('ne pas contrarier le Maitre ...)
 

Sebulba

Dieu
Staff
j'entend pas "idiot checking"

si tu sais que ta chaine est, par exemple, un prenom, retire tous les caracteres non alphanumeriques de ta chaine avant de l'utiliser dans du SQL.
si tu sais que ca doit etre un nombre, force avec intval
etc...

En dernier endroit, au plus proche de ta query, mysql_real_escape_string peut etre utile.

Ne pas faire confiance aux magicquotes.

Tout ce code est chiant a programmer, ce sert absolument en rien, mais ca t'evite qu'un rigolo modifie tes urls et place brol.php?option=blah'; drop database ta_db;&machin=owned
 

Sebulba

Dieu
Staff
envoyer "$option" tel quel dans ta query, simplement entre deux quillemets, est une insulte a la securité, ne programmant pas ainsi je ne sais pas t'aider :)

Je connais avec certitude le type de mes variables avant de les insérer.

Avec ton code, si on mec remplace un chiffre par une lettre dans tes URLs, tu auras effectivement une erreur SQL et ton probleme n'a pas de solution.
 
1er
OP
SkYlEsS

SkYlEsS

Elite
Et tu envoies comment pour faire plus sécurisé alors tiens ? :]
 

Jereck

Α & Ω
Staff
SkYlEsS a dit:
Et tu envoies comment pour faire plus sécurisé alors tiens ? :]
Ce qu'il voulait dire, c'est qu'utiliser la requète que je t'ai donée plus haut était une horreur au niveau de la sécurité.
 
1er
OP
SkYlEsS

SkYlEsS

Elite
Jereck a dit:
Ce qu'il voulait dire, c'est qu'utiliser la requète que je t'ai donée plus haut était une horreur au niveau de la sécurité.
Autant pour moi ... :]
 
1er
OP
SkYlEsS

SkYlEsS

Elite
Donc, j'n'ai pas de solution alors ? :0)
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut