Page 1 sur 2
Insertion image texarea => problème output
Posté : 06 avr. 2010, 15:51
par visualight
Bonjour,
J'ai réalisé un textarea avec tinyMCE.
Quand j'insère une image dans le textarea puis que je soumet le formulaire, je récupère les données textarea via un simple $_POST['description'].
Le problème est là... l'image ne s'affiche pas à cause d'un ajout de " et de \ dans le code.
Voici le code source que me donne tinyMCE lors de l'insertion d'une image :
Code : Tout sélectionner
<p><img src="medias/mes_medias/screenshot_login.jpg" alt="TEST" width="218" height="216" /></p>
Le code est BON.
Maintenant voici le code source de l'output que me donne un echo de $_POST['description'] :
Code : Tout sélectionner
<p><img src="%5C%22medias/mes_medias/screenshot_login.jpg%5C%22" alt="\"TEST\"" height="\"216\"" width="\"218\""></p>
Vous remarquerez qu'il y a ajout de " et de \ en surplus et de ce fait, l'image ne s'affiche pas.
Pourquoi cela fait il ça ? et comment résoudre ce petit problème ?
NB: Pour afficher le textarea dans le formulaire je le fais par le biais de echo :
echo '<textarea name="description" id="textarea" cols="55" rows="10"></textarea>';
Il se peut que je rencontre le même problème avec autre chose que l'insertion d'une image (pas testé).
Merci pour vos réponses,
raph
Re: Insertion image texarea => problème output
Posté : 06 avr. 2010, 16:14
par visualight
Formulaire :
...
echo '<textarea name="page_descr" id="textarea" cols="55" rows="10"></textarea>';
...
Récupération formulaire :
$description = $_POST['page_descr'];
J'utilise TinyMCE comme plugin pour les texarea.
Mais le problème ne semble pas venir de là étant donné que le code source que tinyMCE me fournis pour l'insertion et l'affichage de l'image est correct.
Ce serait apparemment lors de la soumission du formulaire que ça déconne ...
Sinon, je n'utilise pas de frameworks ni javascript ni php.
J'ai par précaution désactive TOUS les javascript (sauf tinyMCE) au sein de mon site pour tester et le problème est identique.
Je ne comprends pas ...
J'ai la dernière version de tinyMCE.
Re: Insertion image texarea => problème output
Posté : 06 avr. 2010, 16:16
par visualight
Chose bizzare ... on m'a répondu (2 réponses - entre autre developnet m'a répondu) à mon POST et maintenant PLUS RIEN ???! ?
Ou sont passé les messages ?
Re: Insertion image texarea => problème output
Posté : 06 avr. 2010, 16:27
par Calimero
Sinon, je n'utilise pas de frameworks ni javascript ni php.
J'ai par précaution désactive TOUS les javascript (sauf tinyMCE) au sein de mon site pour tester et le problème est identique.
Je pense qu'il ne te reste plus qu'un seul test à faire.
TinyMCE, comme tous les wysiwygs, est un bel habillage en javascript construit par dessus un banal textarea.
Que se passe t-il lorsque tu injectes directement des données bien formatées dans ce textarea (avec le JS complètement désactivé donc) ? C'est ça qui est intéressant et la réponse te donnera, de manière incontestable, l'origine du problème (serveur si le même problème survient, JS TinyMCE si non).
Re: Insertion image texarea => problème output
Posté : 06 avr. 2010, 16:34
par devlop78
C'était mes messages. J'avais lu comme souvent ton post en diagonal et je t'avais orienté sur htmlentities et urlencode et stripslashes. Mais vu le truc, ça me dépasse alors j'ai préféré me taire. Moi quand je reçois des données de formulaires, j'ai les sales protections de php que j'enlève avec stripslahes. Mais là ça n'a rien à voir ... J'approuve le conseil précédent qui est de désactiver ton code JS pour voir.
Re: Insertion image texarea => problème output
Posté : 06 avr. 2010, 16:35
par visualight
Merci Calimero,
J'ai désactiver tinyMCE et TOUS les javascripts et j'ai inséré une image manuellement.
Le problème est identique => l'image ne s'affiche pas.
le code source de ma page me donne :
<img src="%5C%22medias/mes_medias/screenshot_login.jpg%5C%22">
à la place de :
<img src="medias/mes_medias/screenshot_login.jpg">
Bizzare hein ?
Re: Insertion image texarea => problème output
Posté : 06 avr. 2010, 16:37
par visualight
C'était mes messages. J'avais lu comme souvent ton post en diagonal et je t'avais orienté sur htmlentities et urlencode et stripslashes. Mais vu le truc, ça me dépasse alors j'ai préféré me taire. Moi quand je reçois des données de formulaires, j'ai les sales protections de php que j'enlève avec stripslahes. Mais là ça n'a rien à voir ... J'approuve le conseil précédent qui est de désactiver ton code JS pour voir.
OK, merci de m'avoir fait croire à un bug du forum ^^

Tiens je savais pas qu'on savais supprimer ses messages du forum ... tu as un haut niveau d'accréditation ou quoi

?
Re: Insertion image texarea => problème output
Posté : 06 avr. 2010, 16:38
par devlop78
%5C%22 est \"
Peux tu donner ton code entier de la page, j'ai l'impression qu'il y a une fonction bizarre qui traine.
Re: Insertion image texarea => problème output
Posté : 06 avr. 2010, 16:40
par visualight
Voici le code complet de la page concernée :
// On définis le titre interne pour le quickNav
$title = 'Webmin - Page-Add';
// On inclus la navigation QuickNav
include ('.dirsys/inc/quickNav.inc.php');
// Titre de la page
echo '<h2 class="galleryFullTitle">Webmin - Ajout d\'une page</h2>';
// On inclus le menu administrateur
include ('.dirsys/inc/webmin_menu.inc.php');
echo '<script type="text/javascript">
function CheckRadio_HideShowDiv (check_id, id_hide, id_show) {
if(id_hide) {
var baliseHide = document.getElementById(id_hide);
if (baliseHide.style.display == "block" && document.getElementById(check_id).checked == true) {
baliseHide.style.display = "none";
}
}
if(id_show) {
var baliseShow = document.getElementById(id_show);
if (baliseShow.style.display == "none" && document.getElementById(check_id).checked == true) {
baliseShow.style.display = "block";
} else if (baliseShow.style.display == "block" && document.getElementById(check_id).checked == false) {
baliseShow.style.display = "none";
}
}
}
</script>';
// Début de la mise en page de gauche
echo '<div id="pageadd">';
echo '<form name="pageadd" action="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=page_add" method="POST" target="_self">
<div class="pageadd_left">
<label>Type de page :</label>
<select name="page_type">
<option selected="selected">Choisissez ...</option>
<option value="admin">admin</option>
<option value="ecran">ecran</option>
<option value="gerant">gerant</option>
<option value="patron">patron</option>
<option value="production">production</option>
<option value="technique">technique</option>
</select>
</div>
<div class="pageadd_right">
<p>Veuillez choisir le type de page de vous souhaitez créer</p>
</div>
<div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>
<div class="pageadd_left">
<div id="pageadd_calendar-left">
<a name="date"></a>
<label>Date de création :</label>
<input class="border" type="text" size="10" maxlength="10" readonly name="page_date">
</div>
<div id="pageadd_calendar-left">
<a href="#date" onclick="displayCalendar(document.forms[0].page_date,\'yyyy/mm/dd\',this)" target="_self"><img src="medias/images/icon-calendar.png" /></a>
</div>
</div>
<div class="pageadd_right">
<p>Veuillez Indiquez la date de création de la page</p>
</div>
<div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>
<div class="pageadd_left">
<label>Titre de la page :</label>
<input class="border" type="text" size="50" maxlength="50" name="page_title" />
</div>
<div class="pageadd_right">
<p>Veuillez Indiquer le titre de la page (50 caractères max).<br />
Le titre apparait en haut de la page.</p>
</div>
<div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>
<div class="pageadd_left">
<label>Titre interne :</label>
<input class="border" type="text" size="23" maxlength="50" name="page_int_title" />
</div>
<div class="pageadd_right">
<p>Veuillez Indiquer le titre interne de la page (50 caractères max).<br />
Ce titre n\'apparait pas. Il sert au classement interne</p>
</div>
<div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>
<div class="pageadd_left">
<label>Lieu :</label>
<input class="border" type="text" size="30" maxlength="100" name="page_place">
</div>
<div class="pageadd_right">
<p>Veuillez Indiquer le lieu où se trouve le type de la page (100 caractères max).<br />
(ex.: si un type "ecran" se situe à liege, le lieux est liege)</p>
</div>
<div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>
<div class="pageadd_left">
<label>Activer la description :</label>
<input type="checkbox" name="descr_active" id="descr_active" onClick="javascript:CheckRadio_HideShowDiv(this.id,\'\',\'page_descr\')" />
<div id="page_descr" style="display:none;">
<textarea name="page_descr" id="textarea" cols="55" rows="10"></textarea>
</div>
</div>
<div class="pageadd_right">
<p>Veuillez cocher pour activer la description de la page</p>
</div>
<div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>
<div class="pageadd_left">
<label>Activer la galerie video :</label>
<input type="checkbox" name="video_active" id="video_active" onClick="javascript:CheckRadio_HideShowDiv(this.id,\'\',\'videotools\')" />
<div id="videotools" style="display:none;">
<label>Activer le partage de video :</label>
<input type="checkbox" name="video_share_active" id="video_share_active" />
</div>
</div>
<div class="pageadd_right">
<p>Veuillez cocher pour activer la galerie video de la page.<br />
Si vous le désirez, vous pouvez cocher ensuite le partage de video</p>
</div>
<div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>
<div class="pageadd_left">
<label>Activer la galerie photo</label>
<input type="checkbox" name="photo_active" id="photo_active" onClick="javascript:CheckRadio_HideShowDiv(this.id,\'\',\'phototools\')" />
<div id="phototools" style="display:none;">
<label>Galerie photo locale</label>
<input type="radio" name="photo_local" value="true" id="photolocal_0" onClick="javascript:CheckRadio_HideShowDiv(this.id,\'flickr\',\'watermark\')" />
<label>Galerie photo Flickr</label>
<input type="radio" name="photo_local" value="false" id="photolocal_1" onClick="javascript:CheckRadio_HideShowDiv(this.id,\'watermark\',\'flickr\')" />
<div id="watermark" style="display:none;">
<label>Activer le watermark</label>
<input type="checkbox" name="watermark" id="watermark" />
</div>
<div id="flickr" style="display:none;">
<label>Lien de la galerie flickr :</label>
<input type="text" size="30" maxlength="255" name="page_flickr_url">
</div>
</div>
</div>
<div class="pageadd_right">
<p>Veuillez cocher pour activer la galerie photo de la page.<br />
Choisissez ensuite entre galerie photo locale ou flickr.<br />
Si vous choisissez flickr comme galerie indiquez le lien flickr.<br />
Sinon, choisissez si le watermark doit etre actif.</p>
</div>
<div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>
<div class="pageadd_left">
<label>Activer le porte documents :</label>
<input type="checkbox" name="docu_active" id="docu_active" />
</div>
<div class="pageadd_right">
<p>Veuillez cocher pour activer le porte document de la page.</p>
</div>
<div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>
<div class="pageadd_left">
<label>Activer les options liées :</label>
<input type="checkbox" name="options_active" id="options_active" />
</div>
<div class="pageadd_right">
<p>Veuillez cocher pour activer les options liées de la page.</p>
</div>
<div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>
<div class="pageadd_right">
<input type="submit" value="Créer la nouvelle page" />
</div>
<br class="spacer" />
</form>';
// Fin du div pageadd
echo '</div>';
function setValue ($checkbox) {
if (isset ($checkbox) AND !empty ($checkbox) AND $checkbox == 'on') {
return 'true';
} else {
return 'false';
}
}
if ((isset ($_POST['page_type']) AND !empty ($_POST['page_type'])) AND (isset ($_POST['page_date']) AND !empty ($_POST['page_date']))
AND (isset ($_POST['page_title']) AND !empty ($_POST['page_title'])) AND (isset ($_POST['page_int_title']) AND !empty ($_POST['page_int_title']))
AND (isset ($_POST['page_place']) AND !empty ($_POST['page_place'])))
{
$page_type = $_POST['page_type'];
$page_date = $_POST['page_date'];
$page_title = $_POST['page_title'];
$page_int_title = $_POST['page_int_title'];
$page_place = $_POST['page_place'];
$description_active = setValue ($_POST['descr_active']);
$description = $_POST['page_descr'];
$video_active = setValue ($_POST['video_active']);
$videoshare_active = setValue ($_POST['video_share_active']);
$photo_active = setValue ($_POST['photo_active']);
$photolocal_active = $_POST['photo_local'];
$watermark_active = setValue ($_POST['watermark']);
$photoflickr_url = $_POST['page_flickr_url'];
$document_active = setValue ($_POST['docu_active']);
$options_active = setValue ($_POST['options_active']);
echo 'page_type : '.$page_type.'<br />';
echo 'page_date : '.$page_date.'<br />';
echo 'page_title : '.$page_title.'<br />';
echo 'page_int_title : '.$page_int_title.'<br />';
echo 'page_place : '.$page_place.'<br />';
echo 'descr_active : '.$description_active.'<br />';
echo 'description : '.$description.'<br />';
echo 'video_active : '.$video_active.'<br />';
echo 'video_share_active : '.$videoshare_active.'<br />';
echo 'photo_active : '.$photo_active.'<br />';
echo 'photo_local : '. $photolocal_active.'<br />';
echo 'watermark : '.$watermark_active.'<br />';
echo 'flickr_url : '.$photoflickr_url.'<br />';
echo 'docu_active : '.$document_active.'<br />';
echo 'options_active : '.$options_active.'<br />';
}
Re: Insertion image texarea => problème output
Posté : 06 avr. 2010, 16:44
par devlop78
Dans
include ('.dirsys/inc/quickNav.inc.php');
include ('.dirsys/inc/webmin_menu.inc.php');
il y a quoi ?
Re: Insertion image texarea => problème output
Posté : 06 avr. 2010, 16:48
par visualight
QuickNav :
<?php
// QUICK-NAV TOOLS
if (!isset ($_SESSION ['quicknav'])){
$_SESSION ['quicknav'] = array();
}
if (isset ($_GET['p']) AND $_GET['p'] == 'galleryDetails') {
if (empty ($_SESSION ['quicknav'])) {
array_push($_SESSION ['quicknav'], array($title, $galid));
}
if (!in_array (array ($title, $galid), $_SESSION ['quicknav'])) {
array_push($_SESSION ['quicknav'], array($title, $galid));
}
} elseif (isset ($_GET['p']) AND $_GET['p'] == 'webministration') {
if (!isset ($_GET['wm']) AND empty ($_GET['wm'])) {
$wm = 'dashboard';
} else {
$wm = $_GET['wm'];
}
if (empty ($_SESSION ['quicknav'])) {
array_push($_SESSION ['quicknav'], array($title, $wm));
}
if (!in_array (array ($title, $wm), $_SESSION ['quicknav'])) {
array_push($_SESSION ['quicknav'], array($title, $wm));
}
}
// On Teste l'index parent de l'array par rapport à un titre donné et on rajoute 1 puis on supprime.
$CurrentID = recursive_array_search($title,$_SESSION ['quicknav']) +1;
array_splice($_SESSION ['quicknav'], $CurrentID);
// On implémente la navigation QuickNav
echo '<div id="quickNav">Quick Nav : ';
for ( $i = 0; $i <= count($_SESSION ['quicknav'])-1; $i++ ) {
if (is_numeric ($_SESSION ['quicknav'][$i][1])) {
echo '<a href="'.$_SERVER['PHP_SELF'].'?p=galleryDetails&galid='.$_SESSION ['quicknav'][$i][1].'" target="_self">'.$_SESSION ['quicknav'][$i][0].'</a> / ';
} else {
echo '<a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm='.$_SESSION ['quicknav'][$i][1].'" target="_self">'.$_SESSION ['quicknav'][$i][0].'</a> / ';
}
}
echo '</div>';
?>
Webmin_Menu :
<?php
echo '<div class="container4">
<div class="menu4">
<ul>';
echo '<li class="assistant"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=assistant">Assistant</a></li>';
echo '<li class="page"><a href="#">Gestion Pages</a>
<ul>
<li class="add"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=page_add">Ajouter Page</a></li>
<li class="edit"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=page_editdel">Editer Page</a></li>
<li class="del"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=page_editdel">Supprimer Page</a></li>
</ul></li>';
echo '<li class="objets"><a href="#">Gestion Objets</a>
<ul>
<li class="add"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=objet_add">Ajouter Objet</a></li>
<li class="edit"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=objet_editdel">Editer Objet</a></li>
<li class="del"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=objet_editdel">Supprimer Objet</a></li>
</ul></li>';
echo '<li class="users"><a href="#">Gestion Utilisateurs</a>
<ul>
<li class="add"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=user_add">Ajouter User</a></li>
<li class="edit"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=user_editdel">Editer User</a></li>
<li class="del"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=user_editdel">Supprimer User</a></li>
</ul></li>';
echo '<li class="ip"><a href="#">Gestion IP</a>
<ul>
<li class="edit"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=ip_editdel">Voir/Editer IP</a></li>
<li class="del"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=ip_editdel">Supprimer IP</a></li>
<li class="delall"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=ip_empty">Vider Tout</a></li>
</li>';
echo '</ul>
</div></div>';
?>
Re: Insertion image texarea => problème output
Posté : 06 avr. 2010, 16:50
par visualight
Et voici mon doctype :
Code : Tout sélectionner
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO8859-1" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
...
Re: Insertion image texarea => problème output
Posté : 06 avr. 2010, 16:51
par devlop78
Ouaip ... je vois pas. Soit tu n'as pas mis tout le code, soit ... franchement j'en sais rien !
Re: Insertion image texarea => problème output
Posté : 06 avr. 2010, 16:52
par visualight
J'appelle ma page d'administration comme ceci :
<?php
echo '<div id="body"><div id="full"><p class="fullTop"></p>';
// Définition du tableau pour les pages
define('PATH_WBM', './'.$CfgDirSys.'/'.$CfgDir_Pages.'/'.$CfgDir_wbm.'/');
$tableau = glob(PATH_WBM . '*.wbm.php');
if (isset($_GET['wm']) AND in_array(PATH_WBM . $_GET['wm'] . ".wbm.php", $tableau)) {
$wbm_pageInclude = PATH_WBM . $_GET['wm'] . '.wbm.php';
} else {
$wbm_pageInclude = PATH_WBM . 'dashboard.wbm.php';
}
include ($wbm_pageInclude);
echo '<p class="fullBottom"></p></div><br class="spacer" /></div>';
?>
C'est franchement bizzare comme truc ...
Re: Insertion image texarea => problème output
Posté : 06 avr. 2010, 16:57
par devlop78
Ouai mais j'ai au moins appris l'existence de glob()
