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

WRInaute discret
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:
        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
        }
 
WRInaute discret
Bonsoir,

Et comme ça?:
Code:
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
        }
 
WRInaute discret
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:
($pseudo && $titre && $message)

il me renvoie une erreur.
 
Nouveau WRInaute
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

}
 
WRInaute discret
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:
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.
 
Nouveau WRInaute
bonjour,

je pense avoir compris ce que tu veut dire.

essaie ca :

Code:
else if ( !empty($pseudo) && !empty($titre) && !empty($message) )

au lieu de
Code:
else ($pseudo && $titre && $message)



!empty() veut dire si c'est pas vide
 
WRInaute discret
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.
 
Discussions similaires
Haut