est-ce possible de remplacer du texte par autre chose ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : est-ce possible de remplacer du texte par autre chose ?

par Nico128 » 28 juil. 2005, 18:28

Alors jai regarder comment le script créait des balises, jai voulu tester mais ca na pas marcher, bref. Alors jai repris la balise <IMRPIMER> (que jutilisais pas) et jai changer la valeur :
$test = '$design/NintendoDS';
$code_insert2 = str_replace("<IMPRIMER>","$test",$code_insert2);
Et dans le HTML jai remplacer le lien de l'image de cellule par <IMPRIMER>. Tout fonctione, l'image s'affiche bien.

Mais maintenant j'aimerais plutot mettre ça:
// On récupère la variable de contenues dans le cookie
if(isset($_COOKIE['DESIGN'])) $DESIGN=$_COOKIE['DESIGN'];
else $DESIGN="";

if($DESIGN=='NintendoDS') // DESIGN NINTENDO DS
{
 $chemin_design = 'design/NintendoDS';

}
elseif($DESIGN=='Gamecube') // DESIGN GAMECUBE	
{
  $chemin_design = 'design/Gamecube';

}
else
{
 // les couleurs par défaut (le visiteur n'a pas encore choisi)
  $chemin_design = 'design/NintendoDS';
}


$code_insert2 = str_replace("<IMPRIMER>","$chemin_design",$code_insert2);
Et là ca m'affiche pas l'image de fond, quand je regarde le code source je vois :

Code : Tout sélectionner

<td width="450" height="23" background="$chemin_design/barre.gif"><div align="center">
Alors là je compremd pas du tout pourquoi ça marche pas, en principe dans toutes les page du site ça marche. Mais là ce qui m'étone cest que cette variable $chemin_design ben ca foire...

par Cyrano » 27 juil. 2005, 23:35

Ok, ça signifie tout simplement que tu fais un traitement avant enregistrement pour inscrire le bout de code PHP de la source de l'image: Problème parce que c'est enregistré comme une chaine de caractère sans interprétation... et restitué tel quel mais transformé (les < en $lt;, les > en > par exemple). Dans un cas comme ça, il faut que tu procèdes autrement. Tu pourrais utiliser le principe des bbCodes et utiliser des expressions régulières pour capter les codes particulier et les traduire soit en PHP soit autrement mais dans un format interprétable pour aller récupérer la bonne image. Mais l'image tu l'enregistres à part en même temps que le message et le bbCode ne sert en fin de compte qu'à placer l'image à l'endroit de ton choix.

par Nico128 » 27 juil. 2005, 23:23

Pour pjl le script je lai télécharger, il s'apelle Freenews.

Mais enfaite Cyrano, je sais pas si tu as compris le fonctionement. Alors je vais essayer d'expliquer en mieux.

C'est un script pour ajouter les news, l'avantage c'est qu'on peux le modifier le mod d'affichage comme un veux ! Dans le paneau d'admin, on peux mettre en HTML la structure qu'on veux.

Après pour "facilité la chose", dans ce HTML on peux inséré des balise, par example <TITRE> pour afficher le titre de la news pour afficher le titre, <TEXTE> pour afficher le texte de la news, <IMRPIMER> pour imprimer la news,etc.

Voici un ptit example :

Code : Tout sélectionner

<table width="27%" border="0"> <tr> <td><TITRE></td> </tr> <tr> <td><TEXTE></td> </tr> <tr> <td><IMPRIMER></td> </tr> </table>
Après je presse sur le bouton "Enregistrer", et ca s'enregistre ce code html dans la base de donné.

Après je créé une news, elle s'enregistre aussi dans la base de donné.

Puis après dans une page de mon site je mets
<?php
$chemin = "news";
$what_aff = "grand_format";
include ("$chemin/aff_news.php");
?>
Et ca va m'afficher le tableau (que jai mis le code au dessu), et au lieu que ca m'affiche la balise <TITRE> ca va m'afficher directement le titre de la news.

Mais moi non tableau est un peu plus complexe, parce qu'il a des images de fond de cellule. Et pour mon site via des cookies je peux changer de design. Alors je revai dans l'admin, et dans le code HTML je vais changer et mettre plutot ça :

Code : Tout sélectionner

<table width="27%" border="0"> <tr> <td background="<?php echo $chemin_design;?>/imagedefond.gif"><TITRE></td> </tr> <tr> <td><TEXTE></td> </tr> <tr> <td><IMPRIMER></td> </tr> </table>
J'enregistre, puis je vais sur ma page de news, et là l'image de fond de cellule n'aparait pas. Alors je regarde le code source pour voir ce qui va pas. et voici ce qu'il mets :

Code : Tout sélectionner

<td width="450" height="23" background="<?php echo $chemin_design;?>/imagedefond.gif">
Moi je veux pas qu'il me l'affiche le php, je veux qu'il execute le php lol.

Alors jai pensé a venir ici pour soit chercher qu'est ce qui pourrais bloqué l'execution du php, ou alors si il existe une fonction du style

Rechercher => images/design/imagedefond.gif
Remplacer par => <?php echo $chemin_design;?>/imagedefond.gif

Donc voilà...

par Cyrano » 27 juil. 2005, 22:46

Que tu fasses n'impoirte quel traitement importe peu, donc enregistrer en base de données ou afficher d'une manière où d'une autre implique de toute façon la récupération des valeurs du formulaire.

Il faut savoir une chose importante. Depuis la version 4.2 de PHP, la directive register_globals est à OFF : ça signifie qu'un champ de formulaire nommé par exemple "commentaire" ne pourra plus être récupéré simplement en mettant dans la page de traitement $commentaire : il faut l'initialiser explicitement. On se sert pour celà des variables dites Super-globales : $_POST pour les formulaires en méthod="post", $_GET pour method="get", $_REQUEST dans les deux cas précédents qu'on évite d'utiliser sauf en débuggage. Il existe d'autres Super-globales, mais restons sur celles-ci.

Si ton formulaire est en méthod post, alors dans la page de traitement qui doit récupérer les valeurs envoyées, tu dois créer des variables qui peuvent avoir le même nom que les champs du formulaire préfixé du "$" les qualifiant en variables, mais il faut leur donner une valeur récupérée quelque part, donc :
Le formulaire :
<form action="traitement.php" method="post">
<input type="text" name="commentaire" value="">
<input type="submit" name="envoi" value="Envoyer">
</form>
La page de traitement:
<?php
/* On teste si le bouton d'envoi a bien été cliqué */
if(isset($_POST['envoi']))
{
    /* Récupération de la valeur envoyée depuis le formulaire */
    $commentaire = $_POST['commentaire'];
    echo("<p>". $commentaire ."</p>\n");
}
else
{
    header("location: ./formulaire.php");
}
Essaye ce bout de script : si ça ressemble au résultat que tu voulais obtenir, corrige tes scripts comme ça.

Re: est-ce possible de remplacer du texte par autre chose ?

par pjl » 27 juil. 2005, 22:43

Alors enfaite jai un script de news...
le script est de toi ou c'est un script téléchargé via le net ?

par Nico128 » 27 juil. 2005, 22:26

Jai fait une recherche (via un programme) et dans toutes mes pages, il y a aucune fois $_POST

Jai oublier de dire qqch, enfaite le contenu de ce formulaire s'enregistre dans la base de donné.

Et après dans la page quand on mets :
<?php
$chemin = "news";
$what_aff = "grand_format";
include ("$chemin/aff_news.php");
?>
Ca affiche le html que jai enristrer dans la base de donné. Et pour afficher par example le titre de la news, dans le html il faut mettre <TITRE>, pour le texte c'est <TEXTE>.

par Cyrano » 27 juil. 2005, 22:14

Ok, on va y aller une chose à la fois: dans la ligne de code, tu encadres inutilement une variable avec des guillemets et ça devrait être plutôt:
<textarea name="code_html1" rows="12" cols="66"><?php echo $code_html13[1]; ?></textarea>
Maintenant, si ce qui est affiché n'est pas ce que tu attends, il faudrait vérifier là où tu initialises ta variable.

Il faudrait voir la ligne de code de récupération de la valeur envoyée par le formulaire. Normalement, ça devrait resembler à quelque chose comme :
$code_html13 = array();
$code_html13[1] = $_POST['code_html1'];
À partir de là, tu devrais avoir ce qui sort du textarea qui devrait s'afficher à nouveau dans le textarea de la partie traitement.

par Nico128 » 27 juil. 2005, 22:06

Enfaite je sais pas trop quoi montré, alors je vais montrer tout ce qui est en raporte avec.

ça c'est le formulaire ou l'on mets du html dedant, après se html sera inclu dans ma page de news.

Code : Tout sélectionner

<textarea name="code_html1" rows="12" cols="66"><?php echo "$code_html13[1]"; ?></textarea>
pis après je sais pas trop quoi montré, alors j'ai mis dans ce zip les 5 pages qui contienne la variable "code_html1".
fichier.zip

Je sais je pourrais afficher le contenu des pages, mais l'article 3 du règlément dit quon doit mettre des bous de code clair.

Mais je crois qu'enfaite ca doit etre comme un systeme de templates.

Et sinon pour ma première question, est-ce qu'il exite une fonction qui permet de rechercher si un texte existe puis de le remplacer par autres chose ?

merci d'avance :D

par Cyrano » 27 juil. 2005, 20:08

Fais donc voir le bout de code en question

est-ce possible de remplacer du texte par autre chose ?

par Nico128 » 27 juil. 2005, 20:06

Salut tout le monde !

Alors enfaite jai un script de news...et pour les affichier les news dans me page je dois mettre ça :
<?php
$chemin = "news";
$what_aff = "grand_format";
include ("$chemin/aff_news.php");
?>
Et ça va m'afficher ça :

Code : Tout sélectionner

<table width="450" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="450" height="23" background="design/NintendoDS/barre.gif"><div align="center"> ... </table>
Le problème à ce script de news c'est que je peux pas mettre du php dans le html que jai mis plus haut, parce que ca va l'afficher comme si cétait du html.

Alors je voudrais savoir si yavais une fonction que je mettrais dans ma page qui va afficher les news, qui remplacerais ça :

Code : Tout sélectionner

design/NintendoDS/barre.gif
par :

Code : Tout sélectionner

design/mon code php ici/barre.gif
Voilà, ou alors est-ce que vous savez peut etre la raison de pourquoi je ne peux pas mettre de php dans le html que jai mis si dessu (pourtant il est inclu dans une page en php) (et je sais, sans code c'est difficile)

merci d'avance