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

Web Perl Discussion :

Intégration css avec un script cgi


Sujet :

Web Perl

  1. #1
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut Intégration css avec un script cgi
    Bonjour

    Mon script CGI se compose d'une petite fonction qui permet d'intégrer le style css à ma page. Voici le code:
    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
    sub include_css_style {
      $content = '<style type="text/css" media="screen">', "\n";
      $content .= 'body {', "\n";
      $content .= 'margin:150px;', "\n";
      $content .= 'padding:0px;', "\n";
      $content .= 'font-family: "tahoma", "verdana", "arial", "helvetica";', "\n";
      $content .= 'font-size:80%;', "\n";
      $content .= 'color:#666666;', "\n";
      $content .= '}', "\n";
      $content .= '#error {', "\n";
      $content .= 'margin:0 auto 0 auto;', "\n";
      $content .= 'padding:10px;', "\n";
      $content .= 'width:370px;', "\n";
      $content .= 'text-align:left;', "\n";
      $content .= 'font-size:8pt;', "\n";
      $content .= 'background-color:#EEEEEE;', "\n";
      $content .= '}', "\n";
      $content .= '#error h1 {', "\n";
      $content .= 'margin-top:5px;', "\n";
      $content .= 'margin-bottom:10px;', "\n";
      $content .= 'font-size:10pt;', "\n";
      $content .= 'color:#333333;', "\n";
      $content .= '}', "\n";
      $content .= '#error a {', "\n";
      $content .= 'color:#DC298D;', "\n";
      $content .= '}', "\n";
      $content .= '#error a:hover {', "\n";
      $content .= 'color:#FFFFFF;', "\n";
      $content .= 'background-color:#DC298D;', "\n";
      $content .= 'text-decoration:none;', "\n";
      $content .= '}', "\n";
      $content .= '</style>', "\n";
      print $content;	
    }
    Lorsque la fonction est appelée, le style css est appliqué mais si je visualise la source de ma page, je m'aperçois que le style css est affiché sur une seul ligne. Ce qui veut dire que tout mes \n sont supprimés. D'où ma question, existe-t-il un moyen pour les préserver ?

    Merci
    .Olivier

  2. #2
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Je pense avoir trouvé. Ce n'est pas une virgule mais un point. Cela ressemble au langage PHP
    .Olivier

  3. #3
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Aaargg... Bon ton problème vient de la virgule qui n'affecte pas à $content, mais en premier lieu, cette fonction ressemble vraiment à de la patée pour chat...
    Remplaçons tout ça par un Heredoc :

    Code html : 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
    sub include_css_style {
      print <<EOS;
      <style type="text/css" media="screen">
      body {
        margin:150px;
        padding:0px;
        font-family: "tahoma", "verdana", "arial", "helvetica";
        font-size:80%;
        color:#666666;
      }
      #error {
        margin:0 auto 0 auto;
        padding:10px;
        width:370px;
        text-align:left;
        font-size:8pt;
        background-color:#EEEEEE;
      }
      #error h1 {
        margin-top:5px;
        margin-bottom:10px;
        font-size:10pt;
        color:#333333;
      }
      #error a {
        color:#DC298D;
      }
      #error a:hover {
        color:#FFFFFF;
        background-color:#DC298D;
        text-decoration:none;
      }
      </style>
    EOS	
    }
    (j'ai demandé la colorisation en HTML parce que le forum colorise mal les heredoc)

    ou au moins passons nous des $content intermédiaires inutiles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sub include_css_style {
      my $content = '<style type="text/css" media="screen">'. "\n"
        . "body {\n"
        . "margin:150px;\n"
        . "padding:0px;\n"
        # etc...

    --
    Jedaï

  4. #4
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Merci beaucoup pour ton code. Effectivement mon code est un peut cracra

    Actuellement, je regarde la documentation à cette adresse afin de ne plus d'obtenir du code genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print "Content-type: text/html\n\n";
    print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'. "\n";
    print '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >'. "\n";
    Je cherche le moyen d'insérer les lignes ci-dessus
    Je vais également intégrer directement le css dans mon script. Dans la doc, cette partie est très bien expliquée.

    Merci
    .Olivier

  5. #5
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Olivier Regnier Voir le message
    Merci beaucoup pour ton code. Effectivement mon code est un peut cracra

    Actuellement, je regarde la documentation à cette adresse afin de ne plus d'obtenir du code genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print "Content-type: text/html\n\n";
    print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'. "\n";
    print '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >'. "\n";
    Je cherche le moyen d'insérer les lignes ci-dessus
    Bonne idée, il vaut mieux et de loin utiliser le module CGI pour faire du CGI en Perl.
    Les lignes que tu montres sont affichées par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    use CGI qw/:standard/;
     
    print header,
      start_html(-title => "titre du document",
                 -lang => 'fr',),
    ;
    header() s'occupe du header CGI et par défaut il retourne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Content-type: text/html; charset=ISO-8859-1\n\n"
    Evidemment on peut rajouter des champs d'en-tête, regarde l'aide sur cette fonction pour plus d'information.

    start_html affiche tout le début de l'HTML jusqu'à <body>, c'est là qu'on spécifie la feuille CSS, les bibliothèques de script, les éventuelles balises meta, le titre du document, etc...
    Je crois que les versions actuelles de CGI.pm émettent du XHTML 1.0 strict par défaut, mais tu peux lui spécifier d'autre version au besoin.

    --
    Jedaï

  6. #6
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bonjour

    J'avance doucment et j'obtiens du moins je l'espère un code propre

    Voici mon code:
    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
    #!/usr/bin/perl -w
     
    use strict;                                 # Vérifie la validité des variables my
    use warnings;                               # Affiche les erreurs
     
    use CGI qw/:standard :html3/;               # Chargement des fonctions standards de CGI
    use CGI::Pretty qw( :html3 );               # Génère du code HTML propre et indenté				
     
    # Déclaration des variables
    my $page_403 = new CGI;
     
    print header(),                             # Création l'entête HTTP
     
          # Démarre le HTML
    	  start_html(
    			-title => '403, Interdit',
    			-lang  => 'fr',
    			-meta  => {'robots'=>'noindex, follow'}, 
    			-style => {'src'=>'/global.css'},			
    			),
     
     			# Contenu de la page HTML
    			$page_403 -> div ({-id=>'error'},
    			$page_403 -> h1 ('403, Interdit'),
    			$page_403 -> p ("Vous n'avez pas la permision d'accéder à cet URL de votre navigateur.". "\n",
    			$page_403 -> br.br,"Visitez",
    			$page_403 -> a ({href=>"/"},"monsite.fr"), "ou consulter le",
    			$page_403 -> a ({href=>"/sitemap"},"plan du site"),".")),
     
    	 # Fin du HTML
    	 end_html();
     
    # Fin du script
    J'ai une questions à savoir, est-il possible de modifier l'ordre des différents éléments qui composent le header. Par exemple, placer cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    avant celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <link rel="stylesheet" type="text/css" href="/global.css" />
    J'ai un autre soucis au niveau du lien suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $page_403 -> a ({href=>"/sitemap"},"plan du site"),".")),
    à la fin de "plan du site" il y a un espace entre site et le caractère "." qui ne doit pas être inclus dans le lien.
    Je cherche dans la doc
    .Olivier

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

Discussions similaires

  1. Erreur 500 avec un script "cgi"
    Par tabouet dans le forum Autres langages pour le Web
    Réponses: 2
    Dernier message: 15/11/2009, 04h46
  2. [Custom Tags] Intégration tag avec script JavaScript
    Par mouvma dans le forum Taglibs
    Réponses: 1
    Dernier message: 02/07/2007, 14h40
  3. [cgi] communiquer avec un/des scripts cgi
    Par narkhor dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 31/07/2006, 15h45
  4. Formulaire avec Script CGI
    Par tintin174 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 30/05/2006, 17h17
  5. Réponses: 9
    Dernier message: 21/02/2006, 14h14

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