Vérifier la présence de caractères interdits [Résolu]

Signaler
Messages postés
103
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
3 septembre 2008
-
Messages postés
103
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
3 septembre 2008
-
Bonjour à tous !
Je suis en train de coder une partie pour les commentaires

pour mon blog perso et j'ai un peu du mal... c'est pourquoi je

fais appel à votre aide =)

Voici mon code :

<?php
// connexion

$com = $_POST['com']; //on vient de poster un texte dont le

champ est nommé com

$string = "$com";
if (eregi('<@/>', $string)) { //on vérifie si les caracteres <@/>

sont présents dans com
echo "Ton commentaire contient les caractères : <@/> . Il n

a pas été ajouté.";
}
else {
// on ajoute
echo "Ton commentaire a été ajouté avec succès.";
}
?>

8 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
Salut,
$com='WAZAAA';



$strf='<>/@';

$retour=false;

for ($i=0;$i<strlen($strf)+1;$i++)

if(strpos($com, $strf{$i})!==false){

$retour=true;

break;

}



if ($retour){

echo "Ton commentaire contient le caractère : < . Il n\'a pas été ajouté.";

}

else {

echo "test";

}


In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
Salut,

oups... ça veut dire que la dèrnière chaine est vide...





$com='WAZAAA';



$strf='<>/@';

$retour=false;

for ($i=0;$i<strlen($strf);$i++)

if(strpos($com, $strf{$i})!==false){

$retour=true;

break;

}



if ($retour){

echo "Ton commentaire contient le caractère : < . Il n\'a pas été ajouté.";

}

else {

echo "test";

}


et ça ?

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
Salut,
eregi demande bien trop de calculs pour faire ce genre de choses, utilise plutot :



$strf='<>/@';
$retour=false;

for ($i=0;$i<strlen($strf);$i++)

$retour&=strpos(strf{$i}, $mavariableatester);

if ($retour){

echo ....

}
In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Messages postés
103
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
3 septembre 2008

Tout d'abord merci pour ta réponse aussi rapide, mais il y a un petit soucis :(

Voici ce que j'ai écrit :

$strf= '<>/@';
$retour=false;
for ($i=0;$i<strlen($strf);$i++)
$retour&=strpos(strf{$i}, $com);

if ($retour){
echo 'Ton commentaire contient les caractères : <@/> . Il n a pas été ajouté.';
}
else {
// on ajoute
echo 'Ton commentaire a été ajouté avec succès.';
}

Le soucis est le suivant :
J'ai ce message d'erreur :
Parse error : syntax error, unexpected '{' in /..... on line 14

Et si je regarde à la ligne 14, y'a écrit :
$retour& =strpos(strf{$i}, $com);

J'ai modifié les {} par des () mais ça ne semble pas bon.
As tu une idée d'ou pourrait venir le probleme ?

Merci d'avance
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
Salut,

strpos($strf{$i}, $com);



à la place de :



strpos(strf{$i}, $com);

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Messages postés
103
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
3 septembre 2008

Ok merci bien, j'avais pas fait gaffe à la variable !
Je ne te cache pas que le script... ne fonctionne toujours pas

Voici ce qu'il y a maintenant :

$strf='<>/@';
$retour=false;
for ($i=0;$i<strlen($strf);$i++)
$retour&=strpos($strf{$i}, $com);

if ($retour){
echo "Ton commentaire contient le caractère : < . Il n\'a pas été ajouté.";
}
else {
echo "test";
}

Le truc c'est que quoi que je poste, il écrit toujours "test"
Je pense donc que le soucis vient au niveau du if, mais j'ai esseyé par exemple :
if ($retour=true){
mais ça ne fonctionnait pas. J'ai aussi esseyé avec false ça marchait pas.

T'as une idée
Vraiment merci pour ton aide.
Messages postés
103
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
3 septembre 2008

Ok le script fonctionne trop bien cette fois ci.

Que veux dire ce message d'erreur ?
Warning: strpos(): Empty delimiter. in /home.... ligne 47

La ligne en question est la suivante :
if(strpos($com, $strf{$i})!==false){

Merci en tout cas pour m'avoir ecrit le script, je te suis très reconnaissant !
Messages postés
103
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
3 septembre 2008

Parfait !
NICKEL !
Merci beaucoup beaucoup beaucoup Coucou47, je te revaudrais ça !