Contrôle d'une chaine de caractère en PHP ?

DISCRET
WRInaute discret
WRInaute discret
 
Messages: 185
Inscription: 18 Oct 2004

Contrôle d'une chaine de caractère en PHP ?

Message le Sam Jan 06, 2007 20:03

Bonjour,

je cherche comment faire pour contrôler une chaine de caractère dans un message. Si présente je refuse l'enregistrement si pas présente j'accepte l'enregistrement.

le code sur lequel je bute :
Code: Tout sélectionner
        isset($_POST['pseudo']) ?     $pseudo=$_POST['pseudo'] :     $pseudo="";
        isset($_POST['titre']) ?     $titre=$_POST['titre'] :     $titre="";
        isset($_POST['message']) ?     $message=$_POST['message'] :     $message="";

if ( $message ereg ("<a href="))
   {
   echo 'les adresses ne sont pas autorisées';
   }

        else ($pseudo && $titre && $message)
        {
          // connexion à la base
          mysql_connect("mysql4.6", "i", "f")  or die("Erreur de connexion ".mysql_error());

          // sélection de la base 
          mysql_select_db("l")  or die("Erreur de selection ".mysql_error());

          // On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table     
          $pseudo = htmlentities ($_POST["pseudo"]);
          $email = htmlentities ($_POST["email"]);
          $titre = htmlentities ($_POST["titre"]);
          $message = htmlentities ($_POST["message"]);

          // on écrit la requête sql
          $sql = "INSERT INTO fichier(pseudo, email, titre, message, date) VALUES('$pseudo','$email','$titre','$message',now())";

          // on insère les informations du formulaire dans la table
          mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

          mysql_close();  // on ferme la connexion
        }
Dernière édition par DISCRET le Sam Jan 06, 2007 21:07, édité 1 fois.

jidébé
WRInaute discret
WRInaute discret
 
Messages: 180
Inscription: 26 Juil 2005

Message le Sam Jan 06, 2007 20:26

Bonsoir,

Et comme ça?:
Code: Tout sélectionner
if (  ereg ("<a href=",$_POST["message"]))
   {
   echo 'les adresses ne sont pas autorisées';
   }

        else
        {
          // connexion à la base
          mysql_connect("mysql4.6", "i", "f")  or die("Erreur de connexion ".mysql_error());

          // sélection de la base
          mysql_select_db("l")  or die("Erreur de selection ".mysql_error());

          // On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table     
          $pseudo = htmlentities ($_POST["pseudo"]);
          $email = htmlentities ($_POST["email"]);
          $titre = htmlentities ($_POST["titre"]);
          $message = htmlentities ($_POST["message"]);

          // on écrit la requête sql
          $sql = "INSERT INTO fichier(pseudo, email, titre, message, date) VALUES('$pseudo','$email','$titre','$message',now())";

          // on insère les informations du formulaire dans la table
          mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

          mysql_close();  // on ferme la connexion
        }

DISCRET
WRInaute discret
WRInaute discret
 
Messages: 185
Inscription: 18 Oct 2004

Message le Sam Jan 06, 2007 21:02

non ça ne fonctionne pas, si je mets ton code il enregistre le message mais avec rien dans la partie message, si je complete else
Code: Tout sélectionner
($pseudo && $titre && $message)


il me renvoie une erreur.

Jonna
WRInaute discret
WRInaute discret
 
Messages: 50
Inscription: 2 Jan 2007

Message le Sam Jan 06, 2007 21:13

Moi déjà je comprend pas ce que tu fais dans ce test

if ( $message ereg ("<a href="))


Si tu veux controler ce qu'il y a dans $message avec ereg il me semble que tu devrais avoir un truc du style

if ( ereg("expr",$message) ) {

expr étant ton expression régulière qui permet de controler le contenu de $message

}

DISCRET
WRInaute discret
WRInaute discret
 
Messages: 185
Inscription: 18 Oct 2004

Message le Sam Jan 06, 2007 21:17

Je cherche dans le message si il y a <a href> et si oui je veux pas que le message soit enregistré dans la BD si il ne trouve rien oui.

J'ai fais cela
Code: Tout sélectionner
if (  ereg ("<a href=",$message))
   {
   echo 'les adresses ne sont pas autorisées';
   }
        else


mais il m'enregistre des messages vides dans la BD sans même poster, juste en ouvrant la page.
Dernière édition par DISCRET le Sam Jan 06, 2007 21:35, édité 1 fois.


cmpc2002
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 44
Inscription: 19 Mai 2006

Message le Sam Jan 06, 2007 21:28

bonjour,

je pense avoir compris ce que tu veut dire.

essaie ca :

Code: Tout sélectionner
else if ( !empty($pseudo) && !empty($titre) && !empty($message) )


au lieu de
Code: Tout sélectionner
else ($pseudo && $titre && $message)




!empty() veut dire si c'est pas vide

DISCRET
WRInaute discret
WRInaute discret
 
Messages: 185
Inscription: 18 Oct 2004

Message le Sam Jan 06, 2007 21:34

merci cmpc2002, ainsi qu'aux autres, ça fonctionne, il rejette bien le message si il trouve a href et enregistre bien si a href n'est pas présent.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité