Vérifier la présence de caractères interdits

Résolu
cs_Rimb0 Messages postés 103 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 3 septembre 2008 - 15 mars 2006 à 18:21
cs_Rimb0 Messages postés 103 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 3 septembre 2008 - 15 mars 2006 à 21:20
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

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
15 mars 2006 à 20:57
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

3
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
15 mars 2006 à 21:18
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

3
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
15 mars 2006 à 20:09
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

0
cs_Rimb0 Messages postés 103 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 3 septembre 2008
15 mars 2006 à 20:20
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
15 mars 2006 à 20:24
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

0
cs_Rimb0 Messages postés 103 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 3 septembre 2008
15 mars 2006 à 20:33
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.
0
cs_Rimb0 Messages postés 103 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 3 septembre 2008
15 mars 2006 à 21:09
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 !
0
cs_Rimb0 Messages postés 103 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 3 septembre 2008
15 mars 2006 à 21:20
Parfait !
NICKEL !
Merci beaucoup beaucoup beaucoup Coucou47, je te revaudrais ça !
0
Rejoignez-nous