Poblème if/else

marocri
Invité n'ayant pas de compte PHPfrance

19 oct. 2011, 21:46

Bonjour, enfet ma table a deux champs , le premier est un champ incrémanté, le deuxieme est un champ qui contient le pseudo du membre $_POST['pseudo']: or il prend a chaque fois la valeur 0

Voici le code:
[php$actif=$bdd->prepare('INSERT INTO code_actif(code,id) VALUES ("",:id)');
$actif->execute(array('id'=>$_POST['pseudo']));
$actif->closeCursor();

][/php]

Merci de m'aider

Bonne soirée

marocri
Invité n'ayant pas de compte PHPfrance

19 oct. 2011, 21:48

Scuce me pour la balise de code:
$actif=$bdd->prepare('INSERT INTO code_actif(code,id) VALUES ("",:id)');
$actif->execute(array('id'=>$_POST['pseudo']));
$actif->closeCursor();

]

Mammouth du PHP | 672 Messages

20 oct. 2011, 09:16

Bonjour.

1. Au lieu de faire un nouveau message tu peux éditer le premier, ça simplifie les choses...
Entre autres, ça nous évite de croire que tu as eu une réponse :wink:

2. Ne JAMAIS utiliser les données reçues directement dans une BDD.
Il y a de gros risques d' injection SQL.
Une recherche google (ou ici) sur "injection sql" devrait te donner des solutions...

3. Avant tout :
Juste avant ta requête, affiche le contenu du POST, histoire de vérifier :
print_r($_POST);
Et vérifie dans ta table que tu utilises bien les bons champs (code = champs auto-incrémenté, id=pseudo)

ViPHP
xTG
ViPHP | 7331 Messages

20 oct. 2011, 09:59

2. Ne JAMAIS utiliser les données reçues directement dans une BDD.
Il y a de gros risques d' injection SQL.
Une recherche google (ou ici) sur "injection sql" devrait te donner des solutions...
Ce n'est pas le cas des requêtes préparées qui échappent les variables. ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

20 oct. 2011, 10:48

Ce n'est pas le cas des requêtes préparées qui échappent les variables.
oui mais pas toujours bien na :)

franchement dire on ne fait que des requêtes préparer on risque rien c'est comme dire on file BM a tous le monde y aura moins mort c'est forcément vrai :)

pour aider à la question de base :
- peux tu nous fournir le create table de la table code_actif histoire que l'on puisse voir ce qui ce passe ?
le coup du zéro me fait penser a une valeur par défaut.

si non a tu testé le point 3 de macgawel ? ;)

@+
Il en faut peu pour être heureux ......

ViPHP
xTG
ViPHP | 7331 Messages

20 oct. 2011, 14:53

Ce n'est pas le cas des requêtes préparées qui échappent les variables.
oui mais pas toujours bien na :)

franchement dire on ne fait que des requêtes préparer on risque rien c'est comme dire on file BM a tous le monde y aura moins mort c'est forcément vrai :)
Il me semble avoir lu que la foncton PDO::quote est utilisée dans le prepare, donc cela revient exactement au même selon moi. :)
A moins que PDO décide aléatoirement de ne pas protéger telle ou telle variable. 8-)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

20 oct. 2011, 14:56

essai d'utiliser une requête préparé avec un paramètre du where que tu fournit dans le where tu va voir si ça fonctionne au poil :)

telle quelle ta requête préparée "quote" tout comme si c'est une chaine de caractère et c'est pas toujours bon. Les sgbd sont parfois sympa en castant des '2' ou '1.2' en entier / réel mais c'est pas le cas partout :)

@+
Il en faut peu pour être heureux ......

ViPHP
xTG
ViPHP | 7331 Messages

20 oct. 2011, 16:01

essai d'utiliser une requête préparé avec un paramètre du where que tu fournit dans le where tu va voir si ça fonctionne au poil :)
Je sais qu'on dérive, mais pourrais-tu m'illustrer cet exemple ? Je n'arrive pas à me le représenter.

ViPHP
ViPHP | 5462 Messages

20 oct. 2011, 16:12

de toute façon avec PDO les requete préparée sont déactive par défaut , et en mode émuler il échappe tout les valeurs, y compris le type int :(