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

PHP & Base de données Discussion :

Récupération de balise html et de caractères spéciaux


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Points : 5
    Points
    5
    Par défaut Récupération de balise html et de caractères spéciaux
    Je souhaite récupérer tout ce que je tape dans un textarea et de le stocker dans une base de données, puis dans une autre page je voudrais afficher ce que j'ai tapé. Je précis que je dois récupérer TOUT ce que je tape (sans rien perdre) et de l'afficher tel qu'il est (sans traitement de balise html)
    Merci de votre aide,

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Et quel est ta difficulté ? Tu n'as pu écrire aucun code du tout pour tout ça ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Et quel est ta difficulté ? Tu n'as pu écrire aucun code du tout pour tout ça ?
    Je n'arrive pas à tout récupérer, dès que je commence par : < je perds tout et j'aurai le champ concerné vide dans ma base de données
    Si, ce n'est pas très compliqué un simple formulaire, mais maintenant ça commence à compliquer pour gérer les balises html et les caractères spéciaux

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Points : 5
    Points
    5
    Par défaut
    Voici le code et la requête d'insertion du message dans la base de données :

    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
    <?php
    	session_start();
    	include("includes/connexion.php");
     
    	if(isset($_POST['message']))
    	{
    		$nom = $_SESSION['name'];
    		$message = addslashes($_POST['message']);
     
    		if ($db = mysql_connect($g_DBServer, $g_DBAccount, $g_DBPassword))
    		{
    			mysql_query("SET NAMES UTF8");
     
    			if (mysql_select_db($g_DBDataBase, $db))
    			{
    				$db = mysql_connect($g_DBServer, $g_DBAccount, $g_DBPassword);       		
    				mysql_select_db($g_DBDataBase, $db);
     
    				$message = strip_tags(html_entity_decode($message));
     
    				$requete = "INSERT INTO chatbox (nom, message) VALUES ('$nom', '$message')";
    				$result = mysql_query($requete,$db);
    			}
    		}
    	}
    ?>

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Cette partie la est vraiment tres originale. Pourquoi tu repetes tout deux fois ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if ($db = mysql_connect($g_DBServer, $g_DBAccount, $g_DBPassword))
    		{
    			mysql_query("SET NAMES UTF8");
     			if (mysql_select_db($g_DBDataBase, $db))
    			{
    				$db = mysql_connect($g_DBServer, $g_DBAccount, $g_DBPassword);       		
    				mysql_select_db($g_DBDataBase, $db);
    Etant donné que tu souhaites ne pas modifier le HTML, pourquoi tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strip_tags(html_entity_decode
    ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Cette partie la est vraiment tres originale. Pourquoi tu repetes tout deux fois ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if ($db = mysql_connect($g_DBServer, $g_DBAccount, $g_DBPassword))
    		{
    			mysql_query("SET NAMES UTF8");
     			if (mysql_select_db($g_DBDataBase, $db))
    			{
    				$db = mysql_connect($g_DBServer, $g_DBAccount, $g_DBPassword);       		
    				mysql_select_db($g_DBDataBase, $db);
    Etant donné que tu souhaites ne pas modifier le HTML, pourquoi tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strip_tags(html_entity_decode
    ?
    Voici ma dernière version du code :
    // index.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
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title>Page de test</title>
    	</head>
     
    	<body>		
    		<FORM style="f" method="post" action="enregistrer.php">		
    			Nom :<br>
    			<TEXTAREA name="nom" id="nom" rows="1" COLS="15"></TEXTAREA>
    			<br></br>
    			Messages(s) :<br>
    			<TEXTAREA name="message" id="message" rows="4" COLS="50"></TEXTAREA>
    			<br></br>
    			<INPUT type="button" value="Envoyer" onclick="submit();">
    		</FORM>		
    	</body>		
    </html>
    // enregistrer.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
    <?php
    	include("connexion.php");
     
    	if(isset($_POST['message']))
    	{		
    		$message = $_POST['message'];
    		$nom = $_POST['nom'];
     
    		$db = mysqli_connect($g_DBServer, $g_DBAccount, $g_DBPassword) or die(mysql_error());
    		mysqli_select_db($db, $g_DBDataBase) or die(mysql_error());							
     
    		$message = htmlentities($message, ENT_HTML5 , 'UTF-8');
    		$message = addslashes($message);	
     
    		$requete = "INSERT INTO chatbox (nom, message) VALUES ('$nom', '$message')";
    		mysqli_query($db, $requete) or die(mysql_error());
    		echo "Insertion Ok !";
    	}
    ?>
    Cela fonctionne comme je veux en local (version PHP 5.5.12) mais pas en ligne (version PHP 5.3.3) et dés que je tape le caractère inférieur < je perds la suite !
    Merci de votre aide pour trouver quelque chose qui fonctionne avec tout ce que je tape,

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est mysqli_real_escape_string qu'il faut utiliser et non addslashes()
    Et utilise htmlentities() lors de l'affichage pas lors de l'insertion.

    D'ailleurs as-tu contrôlé ou se posait ton problème : lors de l'insertion ou lors de l'affichage ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par sabotage Voir le message
    C'est mysqli_real_escape_string qu'il faut utiliser et non addslashes()
    Et utilise htmlentities() lors de l'affichage pas lors de l'insertion.

    D'ailleurs as-tu contrôlé ou se posait ton problème : lors de l'insertion ou lors de l'affichage ?
    Donc mon script enregistrer. php devient :
    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
    <?php
    	include("connexion.php");
     
    	if(isset($_POST['message']))
    	{		
    		$message = $_POST['message'];
    		$nom = $_POST['nom'];
     
    		$db = mysqli_connect($g_DBServer, $g_DBAccount, $g_DBPassword) or die(mysql_error());
    		mysqli_select_db($db, $g_DBDataBase) or die(mysql_error());							
     
    		$message = mysqli_real_escape_string($message);	
     
    		$requete = "INSERT INTO chatbox (nom, message) VALUES ('$nom', '$message')";
    		mysqli_query($db, $requete) or die(mysql_error());
    		echo "Insertion Ok !";
    	}
    ?>
    Oui je l'ai déjà contrôlé, le problème se posait bien lors de l'insertion

Discussions similaires

  1. enlever balise html chaine de caractères
    Par silent_murder dans le forum Langage
    Réponses: 0
    Dernier message: 28/05/2010, 14h33
  2. HTML Affichage de caractères spéciaux avec IE7
    Par henri93 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 07/07/2009, 15h29
  3. Conversion Caractères Spéciaux String -> Caractères HTML
    Par JujuDorange dans le forum Documents
    Réponses: 1
    Dernier message: 21/10/2006, 12h11
  4. [Win32][D7] Convertir caractères spéciaux en code URL (HTML)
    Par Benjamin GAGNEUX dans le forum Delphi
    Réponses: 7
    Dernier message: 17/05/2006, 15h13

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