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

Messages postés
103
Date d'inscription
dimanche 23 janvier 2005
Dernière intervention
3 septembre 2008
- - Dernière réponse : cs_Rimb0
Messages postés
103
Date d'inscription
dimanche 23 janvier 2005
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.";
}
?>
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
0
Merci
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

Commenter la réponse de coucou747
Messages postés
103
Date d'inscription
dimanche 23 janvier 2005
Dernière intervention
3 septembre 2008
0
Merci
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
Commenter la réponse de cs_Rimb0
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
0
Merci
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

Commenter la réponse de coucou747
Messages postés
103
Date d'inscription
dimanche 23 janvier 2005
Dernière intervention
3 septembre 2008
0
Merci
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.
Commenter la réponse de cs_Rimb0
Messages postés
103
Date d'inscription
dimanche 23 janvier 2005
Dernière intervention
3 septembre 2008
0
Merci
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 !
Commenter la réponse de cs_Rimb0
Messages postés
103
Date d'inscription
dimanche 23 janvier 2005
Dernière intervention
3 septembre 2008
0
Merci
Parfait !
NICKEL !
Merci beaucoup beaucoup beaucoup Coucou47, je te revaudrais ça !
Commenter la réponse de cs_Rimb0

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.