Suppression de caractère lors de l'enregistrement

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Suppression de caractère lors de l'enregistrement

Re: Suppression de caractère lors de l'enregistrement

par fsom » 22 déc. 2011, 10:50

Bonjour,

Est-ce que l'on ne peux pas simplifier l'expression comme ci-dessous ?

Code : Tout sélectionner

$interdits = array("/","\\","#","'","*","."); $q = "INSERT INTO commentaires (user_id,commentaires) VALUES ('".$user."','".str_replace($interdits,"''",$commentaires)."') ";
Merci pour votre aide,

fsom

Re: Suppression de caractère lors de l'enregistrement

par fsom » 20 déc. 2011, 11:37

Bonjour !

Alors, j'ai installé le fragment de code proposé mais j'obtiens l'erreur suivante :

Fatal error: Call to undefined method ps_DB::quote() in /.../export_commandes.php on line 26

La ligne 26, c'est la ligne INSERT.

Avez-vous une idée du pourquoi ?

Sinon, je cherche aussi à supprimer les double quote mais lorsque je les insèrent dans l'array des caractères à proscrire, j'ai une erreur de syntaxe. Comment peut-on les indiquer ?

Merci beaucoup pour votre aide,

fsom

Re: Suppression de caractère lors de l'enregistrement

par xTG » 19 déc. 2011, 19:07

C'est quoi ce mixte de quote et de double quote dans les interdits...
Je suis franchement étonné que tu ne te choppes pas une jolie erreur de syntaxe en exécutant ce code !
$interdits = array("/","\\","#","'","*",".");
$q = "INSERT INTO commentaires (user_id,commentaires) VALUES (".$dbs->quote($user).",".$dbs->quote(str_replace($interdits,"",$commentaires)).") ";
Voilà un code qui protège les champs injectés dans la requête et qui supprime les caractères interdits : / \ # ' * .

Re: Suppression de caractère lors de l'enregistrement

par fsom » 19 déc. 2011, 17:56

Donc, j'ai fais mes modifications et j'obtiens le coade suivant :

Code : Tout sélectionner

if($commentaires!=""){ $commentaires = str_replace("Notez ici vos commentaires a envoyer a FDM...","",$commentaires); $interdits = array("'/'","'\'","'#'","'","'*'"); $q = "INSERT INTO commentaires (user_id,commentaires) VALUES ('".$user."','".str_replace($interdits,"''",$commentaires)."') "; $dbs->query($q); $dbs->next_record();
Par contre je n'arrive pas à interdire le " . J'ai essayé de le mettre entre "' et '" mais rien n'y fait.

Avez-vous une idée ?

Merci d'avance :)

Re: Suppression de caractère lors de l'enregistrement

par fosm » 19 déc. 2011, 16:26

Donc, cela me donne quelque chose comme ca ?

Code : Tout sélectionner

if($commentaires!=""){ $commentaires = str_replace("Notez ici vos commentaires a envoyer a FDM...","",$commentaires); $interdits = array("/", "\", "#","""); $q = "INSERT INTO commentaires (user_id,commentaires) VALUES ('".$user."','".str_replace("'","''",$interdits,$commentaires)."') "; $dbs->query($q); $dbs->next_record(); }

Re: Suppression de caractère lors de l'enregistrement

par xTG » 19 déc. 2011, 16:11

Regardes le premier exemple de la documentation de str_replace(), tu peux lui demander de remplacer plusieurs caractères en spécifiant un array de valeurs.

Suppression de caractère lors de l'enregistrement

par fsom » 19 déc. 2011, 16:03

Bonjour,

J'ai un bout de code (ci-dessous) qui me permet d'enregistrer dans une table un champs de texte libre.
Problème : ce texte est ensuite utilisé dans un progiciel qui n'accepte pas un certain nombre de caractère (#/\' { ") etc...

Code : Tout sélectionner

if($commentaires!=""){ $commentaires = str_replace("Notez ici vos commentaires a envoyer a FDM...","",$commentaires); $q = "INSERT INTO commentaires (user_id,commentaires) VALUES ('".$user."','".str_replace("'","''",$commentaires)."') "; $dbs->query($q); $dbs->next_record(); }
Sachant que dans la zone de texte, il y a déja un message qui dit "inscrivez ici vos commentaire", j'ai fais en sorte que ce bout de texte soit effacé si le message est saisie à la suite.
Mais comment faire pour remplacer tous les caratère interdit par un tiret par exemple ?
Je précise que je ne souhaite aps "bloquer" l'envoi du commentaire mais juste remplacer les élements interdits par le progiciel.

Merci d'avance pour votre aide !

++

fsom