IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Déspécialisation du code HTML en PHP


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juillet 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut Déspécialisation du code HTML en PHP
    Bonjour les amis,

    J'ai une page newart.php contenant un formulaire d'ajout contenant 3 champs,

    List_rubrique
    Nom
    Texte

    La récupération des valeurs POST ça marche bien, mais le requête insert sql lance une erreur au niveau du champs texte qui contient du code html (utilisation du CKeditor pour l'ajour des nouveau article). l'erreur est la suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Erreur d'insertion : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''rubrique0_id0','nom','texte') values ('5','test_nom','
    Text de test  ' at line 1
    sachant qu'avant de passer le texte à la requête j'ai utiliser la fonction addslashes($texte); pour dé-spécialiser les caractères spéciaux.


    Aucune idée ? et Merci d'avance ...

  2. #2
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    Bonjour,
    Et avec mysql_real_escape_string() plutot que addslashes, ça passe pas mieux ?

    Bonne chance,

    Sohnic

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juillet 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Merci pour la réponse,

    En fait j'ai testé la fonction avec le contenue suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Texte de teste Texte de teste Texte de teste Texte de teste 
    Texte de teste Texte de teste Texte de teste Texte de teste
    après j'ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $texte=mysql_real_escape_string($texte);
    echo "Voilà le texte : ".$texte;
    Et ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Voilà le texte :
    \r\n	Texte de teste Texte de teste Texte de teste Texte de teste 
     
    \r\n
    \r\n
    \r\n
    \r\n	 Texte de teste Texte de teste Texte de teste Texte de teste 
     
    \r\n
    \r\n
    \r\n	 
     
    \r\n
    Mais ça ne change rien, il m'affiche encore une erreur au moment de l'insertion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur d'insertion : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''rubrique0_id0','nom','texte') values ('5','Nouveau partenaire','
    \r\n	Texte d' at line

  4. #4
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    Si tu ne nous montres pas ta requête SQL complète on ne pourra pas t'aider.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juillet 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Ok voilà le code de la page newart.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    <?php
    require_once("../cnx.php");
    include_once("../fckeditor/fckeditor.php") ;
     
    ?>
    <!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=iso-8859-1" />
    <title>Nouveau article</title>
    <script type="text/javascript" src="../ckeditor/ckeditor.js"></script>
    </head>
     
    <body>
     
    <br><br>
     
    <form method="post" action="newart.php">
    		<p>	
    		    Rubrique parent :&nbsp;&nbsp;<select name="niveau1_list">
    			<option selected="selected" value="">-----</option>
    				<?php 
    				$rs=mysql_query("select * from rubrique0 where nom not in ('accueil','présentation','documentation','références','contacts','support')");
    					while($rubrique0=mysql_fetch_array($rs)){
    						echo '<option value="'.$rubrique0['nom'].'">'.$rubrique0['nom'].'</option>';
    					}
    				?>
    			</select><br><br>
     
     
    			Nom de l'article :&nbsp;&nbsp;<input type="text" name="nom" /><br><br>
     
    			<textarea id="editor1" name="editor1"></textarea>
     
    			<script type="text/javascript">
    				CKEDITOR.replace( 'editor1',
    				{
    					filebrowserBrowseUrl : '../ckfinder/ckfinder.html',
    					filebrowserImageBrowseUrl : '../ckfinder/ckfinder.html?Type=Images',
    					filebrowserFlashBrowseUrl : '../ckfinder/ckfinder.html?Type=Flash',
    					filebrowserUploadUrl : '../ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files',
    					filebrowserImageUploadUrl : '../ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images',
    					filebrowserFlashUploadUrl : '../ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash'
    				});
    			</script>
    		</p>
    		<p>
    			<input type="submit" value="Valider" name="valider"/>
    		</p>
    	</form>
    <?php 
    if(isset($_POST['valider'])){		
    	if(empty($_POST['niveau1_list'])){echo 'Veuillez choisir une rubrique !';}
    	elseif(empty($_POST['nom'])){echo "Nom de l'article obligatoire !";}
    	elseif(empty($_POST['editor1'])){echo 'Veuillez saisir un texte !';}
    	else{
    		$nom_parent=$_POST['niveau1_list'];		
    		$nom=$_POST['nom'];
    		$texte=$_POST['editor1'];
     
    		$rs1=mysql_query("select * from rubrique0 where nom='".$nom_parent."'");
    		$parent=mysql_fetch_array($rs1);
     
    		$id0=$parent['id0'];
    		mysql_query("insert into rubrique1 (rubrique0_id0,nom,texte) values ('$id0','$nom','$texte')") or die("Erreur d'insertion  : ".mysql_error());		
    		}		
    }
    ?>	
    </body>
    </html>
    J'ai éliminé le CKeditor et J'ai testé la requête ça marche, il insert le code HTML dans la base de donnée, mais une fois je le réactive il me lance l'erreur citée précédemment.

    Cordialement.

  6. #6
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Attention, ta requête n'est pas sécurisée contre les injections SQL, c'est une grave erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $nom = mysql_real_escape_string($nom);
    $texte = mysql_real_escape_string($texte);
    $id0 = intval($id0);
    mysql_query("insert into rubrique1 (rubrique0_id0,nom,texte) values ('$id0','$nom','$texte')") or die("Erreur d'insertion  : ".mysql_error());

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juillet 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Oui je sais qu'elle n'est pas sécuriser, mais quand j'ajoute la fonction mysql_real_escape_string($texte) la requête déclenche l'erreur d'insertion ?

  8. #8
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Citation Envoyé par eo-soft Voir le message
    Oui je sais qu'elle n'est pas sécuriser, mais quand j'ajoute la fonction mysql_real_escape_string($texte) la requête déclenche l'erreur d'insertion ?
    Non.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juillet 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par ThomasR Voir le message
    Non.
    Mais je viens de la tester pas mal de fois ... S'il vous plait expliquez plus, car je suis bloquer au niveau de l'ajout des articles rédigés et c'est très important dans mon projet,

    Cordialement

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Je pense que ce sont les retours chariot et le saut de ligne(\r\n) qui génère l'erreur.
    Deux solution :
    -la fonction
    string nl2br ( string $string [, bool $is_xhtml = true ] )
    -ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    str_replace("\r\n", "", $str);
    str_replace("\r", "", $str);
    str_replace("\n", "", $str);

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    voila comment je m'y prends : (artContenu_fr est issu d'un textarea FckEditor)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <?php
    	// -----------------------------------------
    	// 1- RECUPERATION DES DONNEES DU FORMULAIRE
    	// -----------------------------------------
    	$traiter 		= $_POST['traiter'];
    	$articleId 		= intval($_POST['articleId']);
    	$artTitre_fr 		= htmlspecialchars(stripslashes(trim($_POST['artTitre_fr'])));
    	$artContenu_fr 		= stripslashes(trim($_POST['artContenu_fr']));	// textarea
    	// -----------------------------------------
    	// 2- GESTION des ERREURS
    	// -----------------------------------------
    	// [...........]
       if($erreurs==0) {
    	// -----------------------------------------
    	// 3- ENREGISTREMENT en BdD (si pas d'erreur)
    	// -----------------------------------------
    	// protection contre injection sql
    		$articleId 		= mysql_real_escape_string($articleId);
    		$artTitre_fr 		= mysql_real_escape_string($artTitre_fr);
    		$artContenu_fr 		= mysql_real_escape_string($artContenu_fr);
    	// -------------------------
    	if ($traiter == 'AJOUTER') {
    		// INSERT : nouvelle entree dans la table
    		$query_insert 		= "INSERT INTO matable ".
    					" (".
    					" titre_art_fr, ".
    					" contenu_art_fr ".
    					") VALUES (".
    					"'".$artTitre_fr."', ".
    					"'".$artContenu_fr."' ".
    					");";
    		mysql_query($query_insert) or die('Erreur SQL :<br />'.$query_insert.'<br />'.mysql_error());
    	// -------------------------
    	} elseif ($traiter == 'MODIFIER') {
    		// UPDATE de la fiche :
    		$query_update 		= "UPDATE ".$TAB_ARTICLES_ART." SET ".
    					" titre_art_fr = 	'".$artTitre_fr."', ".
    					" contenu_art_fr = 	'".$artContenu_fr."' ".
    					" WHERE id_article = 	'".$articleId."';";
    		mysql_query($query_update) or die('Erreur SQL :<br />'.$query_update.'<br />'.mysql_error());
    	}
       }
    	// -----------------------------------------
    ?>
    Cela dit, as-tu vérifié le TYPE de ton champ "texte" dans ta BdD ??
    il doit être de TYPE TEXT ou LONGTEXT ...

    Tu peux aussi t'inspirer de ce tuto : Système de Gestion-Affichage de Nouvelles (Avec éditeur wysiwyg, photo et fichier joint)
    Dernière modification par Invité ; 24/07/2011 à 11h04.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juillet 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    désoler pour le retard et je vous remercie pour vos réponse... problème résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. inserer code html dans php
    Par syl2042 dans le forum Langage
    Réponses: 3
    Dernier message: 29/04/2008, 14h16
  2. récupérer un code html avec php ..
    Par serenity dans le forum Langage
    Réponses: 3
    Dernier message: 17/10/2007, 15h16
  3. Parse code HTML avec PHP
    Par naourass dans le forum Langage
    Réponses: 3
    Dernier message: 19/05/2006, 08h12
  4. [Dreamwaver] Mise en page/forme du Code css html,js,php..
    Par acceso dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 04/03/2006, 18h05
  5. [PHP-JS] Supprimer le code javascript d'un code HTML
    Par AlphaYoDa dans le forum Langage
    Réponses: 6
    Dernier message: 21/02/2006, 22h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo