PB pour ré utiliser une function | str_replace |

Eléphanteau du PHP | 24 Messages

01 sept. 2005, 02:17

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.
Modifié en dernier par caledonien le 02 sept. 2005, 04:30, modifié 1 fois.

ViPHP
ViPHP | 1380 Messages

01 sept. 2005, 10:00

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
ripat

Eléphanteau du PHP | 24 Messages

01 sept. 2005, 14:17

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

ViPHP
ViPHP | 1380 Messages

01 sept. 2005, 14:39

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);
ripat

Eléphanteau du PHP | 24 Messages

01 sept. 2005, 23:26

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

Eléphanteau du PHP | 24 Messages

02 sept. 2005, 01:51

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