Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probléme de chaine contenant du code HTML et CSS

Sujet résolu
    21 juin 2018 à 11:40:34

    Bonjour.

    En essayant de créer un site avec C#, j'ai été amené à utiliser du code HTML à la volée (c'est à dire directement dans une chaine string en non pas dans un fichier HTML).

    <html>
    	<head>
    		<title>Plugins</title>
    		<meta name=title content="Plugins" />
    		<meta http-equiv="content-type" content="iso-8859-1, windows-1252" />
    		<meta charset="UTF-8" />
    	</head>
    	<body bgcolor="#91c2cf" background="images/" text="#000000" link="#0000cc" vlink="#660033" alink="#ff0000" marginheight="0" marginwidth="0" leftmargin="0" topmargin="0">
    		<table width="100%" height="100%" border="0">
    			<tr>
    				<td align="center">
    					<style type="text/css">
    						p
    						{
    							font-family:georgia;
    							font-size:140%;
    							color:navy;
    							background-color:transparent;
    							text-align:center;
    							margin-left:0;
    							margin-right:0;
    						}
    					</style>
    					<p>Liste des plugins :</p><br />
    					" + nomPlugin + "<br />
    					
    					<p>Messages (suprimés aprés 24 heures) :</p><br />
    					" + pluginMessage + "<br />
    					
    				</td>
    			</tr>
    		</table>
    	</body>
    </html>
    "<html><head><title>Plugins</title><meta name=title content=\"Plugins\" /><meta http-equiv=\"content-type\" content=\"iso-8859-1, windows-1252\" /><meta charset=\"UTF-8\" /></head><body bgcolor=\"#91c2cf\" background=\"images/\" text=\"#000000\" link=\"#0000cc\" vlink=\"#660033\" alink=\"#ff0000\" marginheight=\"0\" marginwidth=\"0\" leftmargin=\"0\" topmargin=\"0\"><table width=\"100%\" height=\"100%\" border=\"0\"><tr><td align=\"center\"><style type=\"text/css\">p{font-family:georgia;font-size:140%;color:navy;background-color:transparent;text-align:center;margin-left:0;margin-right:0;}</style><p>Liste des plugins :</p><br />" + nomPlugin + "<br /><p>Messages (suprimés aprés 24 heures) :</p><br />" + pluginMessage + "<br /></td></tr></table></body></html>"

    Lorsque le code est lancé dans un fichier, tout va bien, aucun problème. Mais lorsque j'entre le code dans une chaine en prenant soin de remplacer tous les " par des \", un message d'erreur apparait me disant que le format de la chaine est incorrect.

    Sauriez-vous de quoi cela peux venir ?

    Merci d'avance.

    -
    Edité par xXsertusXx 21 juin 2018 à 11:41:31

    • Partager sur Facebook
    • Partager sur Twitter
      24 juin 2018 à 2:32:48

      <% %>, c'est pas des double-quottes.

      https://msdn.microsoft.com/en-us/library/ms178135.aspx

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        26 juin 2018 à 20:15:24

        Merci de ta réponse mais je ne fait pas ma page web dans une classe mais dans une chaine par exemple :

        string web = "<html><body>Hello World</body></html>"



        • Partager sur Facebook
        • Partager sur Twitter
          26 juin 2018 à 23:06:13

          Ok, j'avais pas compris le message initial.

          Je ne l'ai toujours pas compris d'ailleurs.

          Mais il y a une énorme différence entre une chaine de caractère et une page Web avec tout son décorum HTTP.

          C'est quoi votre besoin primaire ? Parce que là, j'ai l'impression que vous avez choisi une mauvaise "solution".

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            29 juin 2018 à 15:32:03

            A vrai dire, je ne sais pas, je ne suis pas le chef du projet.

            Tout ce que je sais c'est que on ne pouvait pas créer un fichier rien que pour une page HTML, mais qu'il fallait l'intégrer dans le code.

            Nous nous sommes inspirés du code décrit sur ce site (en anglais) : https://codehosting.net/blog/BlogEngine/post/Simple-C-Web-Server.

            • Partager sur Facebook
            • Partager sur Twitter
              29 juin 2018 à 16:24:48

              >mais qu'il fallait l'intégrer dans le code.

              J'espère que votre chef de projet ne crois pas que des chaines de caractère dans du code est une protection contre le reverse-engineering.

              Passons sur l'utilité du bidule.

              Vous n'êtes pas claire sur le mécanisme qui convertie votre expression avec des "+", des noms de variables vraisemblablement et des chaines de caractères littérales.

              La référence que vous donnez est claire sur ce point : elle utilise un "string.Format" sur le machin pour faire l’expansion des valeurs des donnes dans la chaine de caractères résultantes.

              Si vous utilisez la même méthode, il n'y a pas que les double-quotte à escaper, il faut aussi escaper les accolades qui servent pour

              Si vous faire l'expansion des valeurs des données à la Neandertal, avec des "+", vous devez faire gaffe au typage des variables qui servent à votre tambouille.

              Si vous faite un mix entre la Neandertal et la string.Format, vous avez toutes les emmerdes des 2 méthodes (escaping des accolades et typages au fraise).

              Quelle que soit la méthode que vous utilisez, il faut garantir que les valeurs des données que vous allez fourrer dans le code HTML soient compatible HTML (pas de < ni de >, utilisation des séquences d'escaping pour les accents en HTML, etc...

              En gros, votre exemple est bon pour un POC, mais faut quand-même faire un peu gaffe au bidule.

              • Partager sur Facebook
              • Partager sur Twitter
              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                2 juillet 2018 à 16:53:42

                Merci pour votre réponse, mais je ne vais pas pouvoir modifier le projet moi même, quelqu'un d'autre la pris en charge. Ce n'est pas grave je pourrais comme même utiliser ces conseils plus tard.

                Merci de votre temps passé pour écrire ces réponse

                • Partager sur Facebook
                • Partager sur Twitter

                Probléme de chaine contenant du code HTML et CSS

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown