Aller au contenu |Aller au menu |Aller à la recherche

.:| Free CAUTION |:.

~ Marchander sa liberté contre de la sécurité c'est un pacte diabolique.
Une fois la transaction signée, on n'a plus ni liberté ni sécurité ~ *

mercredi 22 septembre 2004

UPgrade, et nouvelles fonctions...

Mise à jour de Dotclear, Gestion par URL-Rewriting, Atomisations des liens syndiqués...

Lire la suite

samedi 28 août 2004

Class PHP pour Gestion de code, mime type, etc...

Si on créé un site, à partir de XML et que la source se veut être du XHTML Strict conforme aux recommandations du W3C, il importe d'informer le navigateur web utilisé, graphique ou non, du mime type adhoc !

Selon les recommandations, toujours, il est hautement préférable d'annoncer pour du XHTML, un mime type ayant pour information application/xhtml+xml en lieu et place du fameux text/html, et ce même pour la version 1.0.

Le problème est qu'il y a des navigateurs qui ne reconnaissent pas du tout ce format de mime type ... dans ce cas, mieux vaut dispenser du bon vieux HTML 4.01, et Strict si possible tout autant ! ;) ...

Il faut donc gèrer la reconnaissance du support du mime type et retourner autant le bon mime type qu'un code propre selon la DTD retournée, elle aussi. Hors, du code XHTML n'est pas exactement écrit pareil que du code HTML ; preuve en est au moins toutes les balises dites vides que sont par exemple les meta, link, et autres hr, br, etc...

Et créer en plus du code HTML est une redondance, dont on peut bien se passer !!!

Alors comment faire ?

Trainant une fois de plus sur le site d'un confrère, bien meilleur que moi, le véritable CyberCodeur, et lisant son article Développer avec les standards Web, mon attention a été attiré tout particulierement sur la section 5 (qui explique d'ailleurs bien mieux que moi, les raisons d'utiliser correctement le bon mime type...) ; cette section informe d'un autre article Serving up XHTML with the correct MIME type qui tient compte des spécificités dont je vous ai parlé ci-dessus, en entrée. (Pour ceux qui comprennent l'anglais, allez donc faire un tour... c'est tout autant excellent !)

Voila pour les bases qui m'ont servi pour créer une class PHP qui gère correctement le mime type à annoncer, qui gère la bonne DTD, et qui excellence de l'excellence me permet de gèrer correctement les éléments dits vides, et d'autres petites choses. Elle permet aussi, pour les navigateurs qui en sont capables, d'envoyer le code (x)HTML en format compressé ; autre méthode pour soulager la bande passante, et les ressources serveurs.

La Class(e)

Si la fameuse Class est visible ici (Choisissez "Gestion du code web à retourner selon le navigateur utilisé" !), je m'en vais essayer un peu de mieux vous expliquer...

Le constructeur de la class a pour but de chercher à savoir quel est le navigateur utilisé, ce qu'il est capable de gèrer par les informations qu'il retourne afin de retourner un mime type correct.

function set_agent () {
        $this->agent = $_SERVER["HTTP_USER_AGENT"];
        $this->accept = $_SERVER["HTTP_ACCEPT"];
        $this->accept_encoding = $_SERVER["HTTP_ACCEPT_ENCODING"];
        
        $this->mimes = array ("text/html", "application/xhtml+xml", "application/xml", );
        $this->charsets = array ("ISO-8859-1", "UTF-8", );
        $this->websrc = array ("HTML 4.01", "XHTML 1.0", "XHTML 1.1", );
        
        if(stristr($this->accept, $this->mimes[2]) || stristr($this->agent, "W3C_Validator")) $this->mime = $this->mimes[2];
        elseif(stristr($this->accept, $this->mimes[1])) $this->mime = $this->mimes[1];
        else $this->mime = $this->mimes[0];
        
        return $this->mime;
    }

La méthode get_prologue nous permet, elle, de retourner les entêtes http correctes selon le mime type adopté, et de retourner et publier l'encodage choisi selon le code source qui sera "affiché" par le navigateur.

Selon ce fameux mime type, on remarquera l'appel à deux autres méthodes, dont l'une $this->buffering permet la compression des données envoyées au navigateur, et l'autre ob_start(array("set_agent","fix_code")) permet de "corriger" les élèments vides au navigateur qui ne gère pas le mime type application/xhtml+xml mais text/html à qui l'on a retourné une DTD de type HTML 4.01 Strict pour être conforme à la recommandation adéquate.

Au demeurant, l'appel à cette deuxième fonction se gère ainsi, car nous passons la méthode fix_code de la class set_agent au sein d'un buffer de sortie (cf, les commentaires sur PHP.net::ob_start...)... autrement en tant que function simple en dehors d'une class, il aurait fallu l'écrire comme elle est définit dans l'article de Keystone ci-dessus : ob_start("fix_code").

function get_prologue() {
        $this->get_charset();
        
        switch($this->mime) {
            case $this->mimes[2] :
                $this->buffering();
                $this->prologue = "...";
                break;
            case $this->mimes[1] :
                $this->buffering();
                $this->prologue = "...";
                break;
            case $this->mimes[0] :
                ob_start(array("set_agent","fix_code"));
                $this->prologue = "...";
                break;
        }
        
        header("Content-Type: ".$this->mime.";charset=".$this->charset);
        header("Vary: Accept");
        echo $this->prologue;
    }

La fameuse function buffering, qui test si le navigateur est capable de recevoir des données compressées, si oui, elle lui sont envoyées ainsi par bufferisation de sortie, encore et toujours.

function buffering() {
        if(!empty($this->accept_encoding) && eregi("gzip, deflate", $this->accept_encoding)) {
            ob_start("ob_gzhandler");
        }
    }

Et, pour finir, la function fix_code, inspiré par l'article de Keystone, modifiée ... au départ, elle gère les éléments vides ; maintenant, elle s'occupe aussi de la gestion des attributs xml: et de l'entête html...

Ce qui permet d'écrire un "modéle" de code source en XHTML (et rien qu'un...), et quand cette function est appellée, parce que le navigateur n'est pas à même de gèrer le mime type adhoc, on obtient alors une réécriture du code XHTML en HTML par bufferisation de sortie.

function fix_code($buffer) {
        $search = array (
            "!html xmlns=\"http://www.w3.org/1999/xhtml\"!",
            "!\s*/>!",
            "!xml:!",
        );
        
        $replace = array (
            "html",
            ">",
            "",
        );
        
        return (preg_replace($search, $replace, $buffer));
    }

Pour finir, je remercie encore le Hub d'être là, et surtout Anonymous... pour son soutien, et ses explications à comprendre comment gèrer les méthodes de class au sein d'une bufferisation de sortie... là, c'était chaud ! :) ;)

PS : Voir le code source de la class et la télécharger pour un usage GNU/LGPL ! (Car, je suis sûr qu'il y en a qui trouveront à l'améliorer sérieusement ;)...)

jeudi 12 août 2004

.:| Caution |:. Modifications diverses !

Juste pour vous annoncer quelques petites modifications sur le site :

  • Nouvelle classification dans la thématique Arts avec mise par rubrique :
    • § Commun >>-<< Actions : URL de communautés artistiques libres,
    • § L'un -div- & Duel : URL d'artistes individuels,
    • § Label 4.u : URL de sites de promotions artistiques.
  • Quelques ajouts esthétiques, histoire d'agrémenter un peu, surtout au niveau du menu ! (qui malheureusement, ne sont pas visible avec MSIE. C'est écrit... ou plutôt, non, cela n'est pas écrit dans son code... natif !).

mardi 10 août 2004

Ecrits.net : nouveautés

Dernières mises-à-jour, sur mon site "Ecrits.net", avec une nouvelle feuille css, nommée Blue Sol...

J'ai ajouté sur la page d'accueil une section actualité, qui annoncera les nouvelles du site, quand il y en aura.

Quelques modifications, au niveau du code PHP, mais surtout concernant les différentes informations légales.

ToDo : intégrer un moteur de recherche en PHP ... apparement, PhpDig serait intéressant. Qu'en pensez ?

Côté poèmes , deux nouveaux, ce mois-ci : Les Gens absents & BoMBe LoGiQue...

stephane-huc.net : modification !

Nouvelle interface CSS, plus class, entierement paginée par cette norme... à la Zeldman.com, un peu, que je trouve très jolie, dans son style aussi ;)

jeudi 24 juin 2004

Diaporama "Ad~Myre"

Voici le Projet Diaporama "Ad~Myre" - Diaporama photos, vidéos en XHTML, CSS et accessible web...

Démonstration

Publié sur Framasoft.net !

"Ad~Myre" est un diaporama photos et vidéos, entierement en PHP pour la publication sur internet. Il est capable de voir les images au format GIF, JPG, et PNG, ainsi que les vidéos au format AVI.
Il est encodé en UTF-8.

À ce titre, il se veut conforme aux recommandations du W3C, à propos du code source :

Conformité W3C
XHTML 1.0
CSS 3.0
WAI-AAA WCAG 1.0

Ce Diaporama "Ad~Myre" a pour propos d'être, autant que possible, accessible aux handicaps techniques, voire physique. Il propose des aides à la navigation utile même pour tout autre personne.

dimanche 30 mai 2004

Ecrits.net : And I miss You...

S'il est un fait que je veille à la qualité de mon site Ecrits.Net au niveau du code xhtml en général, et de l'accessibilité web, en particulier... au cours de la publication de mon dernier écrit, et premier en langue anglaise, il me fallait veiller à annoncer dans mon code source, au minimum, et au bon endroit, le changement de langue imposée par la publication de celui-ci !

Ainsi, à chaque fois que le titre est utilisé et selon l'endroit, dans les éléments p et autres span, l'attribut lang="en" est utilisé ... mais, j'ai aussi intégré dans l'élément link et a, l'attribut hreflang me semblant nécessaire d'annoncer par ce biais à qui de droit que le contenu du texte en question changeait de langue, en référence avec cet écrit !

<link rel="And_I_miss_You" title="Poème : 'n I miss You" href="/ecrit/poemes/" hreflang="en" />

Si un codeur web, W3C compliant, passe dans le coin, qu'il me confirme gentiment ma compréhension de la chose ou me l'infirme...

En attentant, voici ce poème ou déclaration d'amour inspiré par ma femme :

And I miss You

I want to love, You

 

 

And, I'm desperate for you

I'm desolate without you

La suite étant là : 'n I miss You

dimanche 16 mai 2004

Ecrits.net : CSS == "Luz n Flash"

Ecrits.net se dote d'une nouvelle feuille de style, nommée "Luz_n_Flash.css"...

Qu'a-t-elle donc de différent ?
Elle utilise la déclaration CSS : position: fixed; pour l'image de fond : background: #000 url(/img/jpg/luz.jpg) 0% 50% no-repeat fixed;, ainsi que pour le positionnement du menu et du corps de texte.

Hors, le positionnement fixed n'est pas supportée par MSIE ; vous ne me croyez pas, essayez donc, par vous-même ! :(
Résultat : j'ai déclaré mon code PHP, de façon à ce que lorsqu'il détecte le navigateur web comme étant MSIE, il ne voye pas du tout cette feuille de style, à contrario d'autres navigateurs.

Pour mes besoins, j'ai modifié aussi la déclaration cookie du switcher CSS, car entre mon site de développement et celui de production, il y a quelques différences (étant donné que c'est un code trouvé sur le web, je le redistribue ici...) :


<?php
$host = $_SERVER["HTTP_HOST"];

if($host == "ecrits.net") $h = $host;
else {
    $hote = explode(".", $host);
    $h = $hote[1].'.'.$hote[2];
}
  
setcookie ('sitestyle', $set, time()+31536000, '/', $h, '0');
header("Location: $HTTP_REFERER");
?>

Sans oublier, que j'ai veillé à amélioré l'accessibilité web de celui-ci par certains détails, les valeurs non vides des labels dans les formulaires, l'insertion des link pour le positionnement dans le site...
Mes prochaines étapes seront d'apprendre le XML, dans le but de créer un support VoiceXML ! (apparement technologie prometteuse en regard avec l'accessibilité web ;) :) ...)

< 1 2 3 4 5 >

* To bargain freedom for security is the devil's bargain.
Having made the bargain, one enjoys neither freedom nor security.

Gerry Spence remonter vers le haut