Bonjour,
Le sujet de mon message est quelque peu confus, j'en conviens et donc, je l'explique:

Je suis entrain de me créer un site que j'écris moi-même en xhtml - php.
Je suis assez débutant pour ce qui est de la programmation, mais je me débrouille tout de même pas mal et je trouve en général les solutions à mes problème par moi-même. Mais, il se trouve que là, je suis totalement bloqué par un détail, mais TRES gênant.

Pour mon site, je crée (et j'ai presque fini d'ailleurs) un espace administrateur contenant un gestionnaire d'articles, de sections, catégories, etc. Pour éditer les articles, j'ai intégré l'éditeur html CKeditor à mon formulaire d'ajout et de modification d'articles.
J'ai aussi ajouté un plugin permettant d'insérer des vidéos dans un article. Seulement, lorsque j'insère une vidéo et que j'envoie le formulaire (pour ajouter l'article à la base de donnée), il ne se passer rien! Alors que s'il n'y a pas de vidéo dans le "contenu" de l'article, l'envoie se passe sans problème.

J'ai essayé la même procédure, mais sans CKeditor. C'est-à-dire, directement en tapant le code avec les balises html dans un élément textarea. Et là, pareil ! Ça ne vient donc en tout cas pas de CKeditor.

Voici le code qui s'insère lorsque j'ajoute une vidéo à mon article:

[code=html]<script type='text/javascript' src='http://localhost/Ospc/admin/modules/ckeditor/plugins/media/player/swfobject.js'></script>
<div id='media_1284671039332'><img src='http://localhost/Ospc/admin/modules/ckeditor/plugins/media/images/replacement.gif' width='400' height='300'/></div>
<script id='media_1284671039332_script' type='text/javascript'>
 var so = new SWFObject('http://localhost/Ospc/admin/modules/ckeditor/plugins/media/player/player.swf','player_1284671039332','400','300','9');
 so.addParam('allowfullscreen','true');
 so.addParam('allowscriptaccess','always');
 so.addParam('wmode','opaque');
 so.addVariable('replacement','http://localhost/Ospc/admin/modules/ckeditor/plugins/media/images/replacement.gif');
 so.addVariable('plugins','gapro-1');
 so.addVariable('gapro.accountid','UA-XXXXXXX-X');
 so.addVariable('file','maVideo');
 so.addVariable('title','MaVideo');
 so.write('media_1284671039332');
</script>


Donc, je me résume, lorsque ce code est présent dans le textarea, pas moyen d'envoyer le formulaire à la base de donnée. Alors que sans ce code, il fonctionne parfaitement ! Même s'il contient d'autres éléments html (comme <img />, etc)

J'espère que mon explication est assez claire, car j'imagine que ça ne doit pas être très facile à comprendre, mais j'ai essayé d'expliquer au mieux la situation.

Merci de votre aide prochaine!
Ssssymdracos
Modifié par ssssymdracos (20 Sep 2010 - 19:30)
reBonjour, j'ai finalement, après pas mal de recherche, trouvé la solution à mon problème:

J'ai "sauvegardé" le code tel qu'il est pour l'envoyer à la base de donnée en utilisant la fonction addslashes:

Voici mon code avant, et après (pour ceux qui auraient le même souci par la suite) :
Avant :

<?php
// --- Envoie le formulaire final à la base de donnée pour ajouter l'article ---
if(isset($_POST['bouton']))
{
$requeteAdd="UPDATE articles SET titre='".$_POST['titre']."', contenu='".$_POST['contenuArticle']."', idCategorie='".$_POST['idCategorie']."' WHERE id='".$_POST['id']."' ";
mysql_query($requeteAdd);
header('Location:gestionArticles.php');
}
?>


Après :

<?php
// --- Envoie le formulaire final à la base de donnée pour ajouter l'article ---
if(isset($_POST['bouton']))
{
$requeteAdd="UPDATE articles SET titre='".$_POST['titre']."', contenu='".addslashes($_POST['contenuArticle'])."', idCategorie='".$_POST['idCategorie']."' WHERE id='".$_POST['id']."' ";
mysql_query($requeteAdd);
header('Location:gestionArticles.php');
}
?>
Salut,

Tony Monast a écrit :
Je t'invite à lire le Guide de Sécurité Php : Base de données.
Un peu vieux comme article. Smiley smile

-> pour les autorisations d'accès : pourquoi pas mais je ne vois pas où est l'inconvénient d'un require('connexion.inc.php')

-> pour ce qui est de se protéger des injections SQL : bien sûr mais les solutions proposées (entourer systématiquement de quotes, utiliser addslashes ou mysql_escape_string) me semblent toutes les 3 obsolètes. Autant utiliser mysql_real_escape_string ou, avec PDO, les requêtes préparées.
Modérateur
Ah bien ça m'apprendra de refiler le premier lien que Google me sort sur les mots clés. J'ai seulement survolé l'article et ça me semblait correct, mais bon, comme j'ai autant d'amour à donner à PHP qu'à une grenouille d'étang, voilà le résultat. Smiley biggol