Page 1 sur 1

PB pour ré utiliser une function | str_replace |

Posté : 01 sept. 2005, 02:17
par caledonien
Bonjour,

J'ai un petit souci pour ré utiliser une function, qui modifie les caractères contenu dans un formulaire en fonction d'un tableau array. (No html etc..)


La function :
function secuFormuHtml($remplace, $source) {
	global  $Secu120, $secuNoHtml, $remplace, $source;

	// Sécurisation
	$secuNoHtml = 
	array("<", ">", "http", "/", "head", "body", "post", "Submit", "submit","value", "align", "input" , "include", "function", "<?", "$");
	echo $Secu120 = str_replace($secuNoHtml, $remplace, "$source");
}
Je l'appelle avec :
secuFormuHtml($remplace = "!! No Html !!", $source = $Gb_Com);
Ca fonctionne trés bien.

Mais si maintenant j'aimerais qu'elle serve pour une autre source comme $Gb_Mail, ca ne fonctionne pas

exemple :
secuFormuHtml($remplace = "-A-", $source = $Gb_Mail);
Je suis obligé de crée une second function pour le mail.

Est normal ou y aurait il un moyen d'utilser la meme function ?

Si vous voulez voir a quoi ca ressemble :

http://d093.nexlink.net/-120-/guestBook.php


Merci de votre aide.

Posté : 01 sept. 2005, 10:00
par Ripat
Oui mais il te faut nous montrer ce que tu veux remplacer dans tes mails.

En passant, tu as une manière assez particulière d'invoquer une fonction et, dans celle-ci, de changer la portée des variables.

Un peu de lecture:
http://php.belnet.be/manual/fr/language.functions.php

Posté : 01 sept. 2005, 14:17
par caledonien
Merci de la réponse.

Exemple tout simple ce la fonction

Quand kkcn post une réponse dans le formulaire $Gb_Com (qui est un champ texte) un texte qui comporte
"<", ">", "http", "/", "head", "body", "post", "Submit", "submit","value", "align", "input" , "include", "function", "<?", "$"); 
Sera automatiquement remplacé par "!! No Html !!"

Mais le pb c'est que je ne parviens pas a ré utilisé cette function pour $Gb_Mail par exemple.

A cause de

echo $Secu120 (function) c'est lui qui donne l'ordre d'afficher le texte convertie.

Et le $Secu120, je ne vois pas comment le réutiliser pour autre chose que $Gb_Com.


Pour l'utilisation des variables dans un function, c'est justement ca que j'aime bien, appeler une function en lui indiquant tout de suite ces paramètres & variables, ca fait moins de ligne.

As-tu une idée ?

Merci

Posté : 01 sept. 2005, 14:39
par Ripat
As-tu été lire le lien que je t'ai envoyé?

Vérifie surtout comment passer des arguments à une fonction et comment lui faire retourner un résultat.

Ton code corrigé devrait donner ceci:
function secuFormuHtml($remplace, $source) {
    $secuNoHtml =
    array("<", ">", "http", "/", "head", "body", "post", "Submit", "submit","value", "align", "input" , "include", "function", "<?", "$");
    return str_replace($secuNoHtml, $remplace, $source); // ce que la fonction renvoie vers son appel
}

$Gb_Com = 'Ceci est un <b>texte</b> avec balises html';

// echo d'un appel de fonction (invocation)
echo secuFormuHtml("!! No Html !!", $Gb_Com);

$Gb_Mail = 'Ceci est un <b>mail</b> avec balises html';
echo secuFormuHtml("-A-", $Gb_Mail);

Posté : 01 sept. 2005, 23:26
par caledonien
Merci beaucoup pour ton aide.

Effectivement j'étais quand meme a des années lumière de la bonne sytaxe.

J'avais lu le lien que tu avais mit, mais je n'avait tilter la déclaration.



Merci beaucoup :d

Posté : 02 sept. 2005, 01:51
par caledonien
Si jamais ca peut aider quelqu'un :
$SecuCom = secuFormuHtml("!! No Html !!", $Gb_Com);
	$SecuMail = secuFormuHtml("-A-", $Gb_Mail);
	
	$sql = "INSERT INTO `guestbook`
	( `id` , `date` , `nom` , `mail` , `commentaire` ) VALUES ('', '$date', '$Gb_Nom', '$SecuMail', '$SecuCom')";
	mysql_query($sql) or die();
Super pratique pour verifier / modifier, des champs.

Encore merci Ripat :) tu m'enlèves une bonne epine du pied hehe :d