html &/ou php

(Cliquez-ici pour accéder à la version originale de cette discussion avec couleurs et images)







Posted by: --flens--

Citation:
Question : faut-il faire son site internet entièrement en php pour ne pas utilisée de ressources sur le navigateur de l'internaute car ce serait le serveur qui ferait tout le boulot ; ou faut-il combiner dans une même page du php et html ce qui signifie que le navigateur de l'internaute doit interpréter certaine choses lui-même ce qui pompe "un peu de ressources".
Enfin je crois que si on fait tout en php avec des "echo", c'est le serveur qui interprete le code qui revoie la page au client ...

Si quelqu'un a une idée sur le sujet ...



Posted by: Flodelarab

Fausse question de mon point de vue.
HTML: langage client
PHP: langage serveur

Tu ne peux avoir aucune confiance dans le client. Laisserais tu un script de connection visible et modifiable chez le client ?

De plus, crois tu qu'il vaut mieux répartir la charge de boulot entre les internautes ou vaut il mieux tout garder pour toi et surcharger ton serveur ?

En résumé: Toute les taches confidentielles et importantes sont à faire coté serveur mais on se déchargera au maximum des routines sans importances et couteuses en temps de calcul sur le client en javascript (car le HTML est statique et la question est dès lors caduque)



Posted by: Flodelarab

Comme d'habittude je n'ai lu que la moitié du message original.

Je réponds donc à la dernière assertion.
Celui qui met des "echo" partout en php est un nul. Il a pas compris la base de la programmation PHP.

echo '<HTML>'
par exemple est une horreur. On demande au serveur PHP d'interpréter dynamiquement une balise complétement statique.
C'est fini de surcharger le serveur PHP avec des taches inutiles ?!?



Posted by: fatal_error

Ben,

J'ai personnellement mon site qui est fait à base d'echo html dans une page mettons 'cadre' ce qui me permet à partir d'une simple ligne de code (include) de pouvoir charger le 'squelette' de ma page.
J'avouerai que c'est une surchage coté serveur mais un confort coté moi. Plus de ctrlc,ctrlv,page rédigée plus lisible, entretien plus facile...

Par ailleurs, ce système, (peut etre dis-je des erreurs), est bcp moins puissant mais ressemble a spip, qui est un peu plus lourd...

Sinon +1 pour le résumé.



Posted by: Flodelarab

L'utilisation des "include"s, OK.
Mais le "include" n'implique pas un echo.
Et je maintiens: echo '<head>' est maladroit car inutile.
Sinon, explique moi. J'ai l'esprit ouvert



Posted by: fatal_error

Dans ma page redaction.php :
include('cadre.php');
//montexte
include('fin.php');

Dans cadre.php:
J'ai, un compteur (ip), une variable session pour le design choisi, (pas encore mais potentiellement) une variable identification session...
Bien sur l'entete :
echo '<!DOCTYPE html';//etcetc
echo '<link rel="stylesheet" media="screen" type="text/css" title="tet0" href="'.$_SESSION['design'].'";
echo '</head><body><div id="pagecentrale">';

Et dans fin.php
echo '</div></body>';

En vrai, ya un peu plus de texte mais voilà juste pour montrer à quoi ça peut servir. Après, peut être qu'il y a mieux (surement en fait, mais je ne sais pas ce qui l'est).
En tout cas, ca me permet deviter de copier tout un tas de ligne de code, permet de changer un design facilement (bidouille j'en conviens), mais surtout, d'avoir une page plus lisible. Je n'ai plus a me soucier des divs de presentation.



Posted by: Flodelarab

Citation:
Posté par fatal_error
Dans ma page redaction.php :
include('cadre.php');
//montexte
include('fin.php');

Dans cadre.php:
J'ai, un compteur (ip), une variable session pour le design choisi, (pas encore mais potentiellement) une variable identification session...
Bien sur l'entete :
echo '<!DOCTYPE html';//etcetc
echo '<link rel="stylesheet" media="screen" type="text/css" title="tet0" href="'.$_SESSION['design'].'";
echo '</head><body><div id="pagecentrale">';

Et dans fin.php
echo '</div></body>';

En vrai, ya un peu plus de texte mais voilà juste pour montrer à quoi ça peut servir. Après, peut être qu'il y a mieux (surement en fait, mais je ne sais pas ce qui l'est).
En tout cas, ca me permet deviter de copier tout un tas de ligne de code, permet de changer un design facilement (bidouille j'en conviens), mais surtout, d'avoir une page plus lisible. Je n'ai plus a me soucier des divs de presentation.

Je fais tout pareil que toi sauf:
<!DOCTYPE html etc
<link rel="stylesheet" media="screen" type="text/css" title="tet0" <?>href="'.$_SESSION['design'].'";</?>
</head><body><div id="pagecentrale">


Plus cohérent: ce qui est dynamique est dynamique, ce qui est statique est statique. Pas de mélange des genres.



Posted by: fatal_error

Ah tiens oui, je n'avais même pas pensé que c'était possible. Tant mieux . Je vais corriger ça .



Posted by: anima

Citation:
Posté par Flodelarab
Je fais tout pareil que toi sauf:
<!DOCTYPE html etc
<link rel="stylesheet" media="screen" type="text/css" title="tet0" <?>href="'.$_SESSION['design'].'";</?>
</head><body><div id="pagecentrale">


Plus cohérent: ce qui est dynamique est dynamique, ce qui est statique est statique. Pas de mélange des genres.

A moins d'utiliser ob_start, dans ton cas, tu ne peux pas balancer de cookies au navigateur, ni charger une session. Depuis PHP3, l'appel setcookie() ou session_start() doit se faire avant n'importe quelle donnée statique et/ou dynamique.



Posted by: mathk

La question montre un malentandu terrible. La faute en incombe au langauge php.

Voici en quoi consiste cette meprise.

Il faut faire la distinction entre le role que joue le serveur de celui du client*.
Leurs roles sont complementaires mais n'ont aucunes similitudes.

- Complementaire car l'un demandeur l'autre fournisseur, sont tous deux lies par le mode de communication.
- D'aucune similitude car ils n'ont pas le meme role a joue dans la communication.

Le serveur lui est a l'ecoute des clients. On peut le voir comme une fonction Informe(demande) qui est definit dans l'ensemble des requetes vers l'ensemble des inforations disponibles (page web).

Donc son role vas etre de produire des pages web. Il se trouve que ces pages web sont ecrites en Html qui rapelons le a ete invente au CERN.

La le html n'a aucune valeur pour le serveur. Le Html n'est que le resultas de la fonction Informe(). C'est a cette instant que le role du serveur s'arrete et que celui du client commence.

Le html est utile au client. C'est un moyen pour structurer l'information. Le html permet de dire au client comment il doit prensenter l'information pour la rendre lisible, exploitable, jolie etc.

Detaillons le role du serveur.

Le serveur doit comme on la vue appliquer la fonction Informe().
Cette fonction est donc ecrite dans un language de programation (PHP, ASP, JSP, Java, C#, Perl, Python, Ruby, Lisp, Smalltalk ... Par ordre croissant de mes preferences biensur ^^ ).
Les languages de programmations sont different des langauges de presentation (XML, HTML, SGML, YAML).

La ou PHP seme la confusion.

Prenons l'exemple d'un script:

Code:
<html> <head>Un example</head> <body> <? if(isset($_GET["i"])) { echo("<h1>".$_GET["i"]."</h1>"); } echo("<p>"); echo("<a href=\"page.php?i=".($_GET["i"] - 1)."\">--</a>"); echo("<a href=\"page.php?i=".($_GET["i"] + 1)."\">++</a>"); echo("</p>"); ?> </body> </html>


Ici on vois clairement qu'il y a 2 facon de presenter du Html.
- Ecrire le html a l'exterieur de <? ?>.
- Ecrire le html grace a la fonction echo()

Cette possibiliter d'exprimer ce comportement de 2 facons syntaxiques differentes est appele sucre syntaxique en programation. (Syntactic sugar)

Cela veut donc dire que le html en dehors des balise <? ?> est un racourci d'ecriture. C'est par consequent equivalant a la fonction echo():

Code:
<? echo("<html><head>Un example</head><body>"); if(isset($_GET["i"])) { echo("<h1>".$_GET["i"]."</h1>"); } echo("<p>"); echo("<a href=\"page.php?i=".($_GET["i"] - 1)."\">--</a>"); echo("<a href=\"page.php?i=".($_GET["i"] + 1)."\">++</a>"); echo("</p>"); echo("</body></html>"); ?>


Comment ecrire du code PHP?

Le probleme avec PHP c'est que les sucre syntaxique sont omnipresent dans le language:
- .. <? ?> ... => echo(...) (comprennez que les .. sont inclus dans le sucre)
- echo() => echo ...
- etc.

Il est donc difficile pour les perssonnes ne connaissant pas le modele client serveur de comprendre quand les differents languages (html php ou encore JavaScript pour ceux qui ne connaisse pas vous pouvez ignore) on leur role a jouer.

Alors quoi faire?

Il est evident que aujourd'hui la plus pars des fournisseur de service web gratuit n'offre que la possibilite d'utiliser PHP comme language.
Leur choix se justifie surment par le nombre de personne connaissant PHP.
Mais cela ferait l'objet d'un autre debat.

Le conseil est donc de bien apprehender le concept de client serveur. Et d'utiliser les sucres syntaxique uniquement lorsque leur implication sont parfaitement comprise et que le code reste lisibilite

* Ici il faut envisage le terme serveur comme etant l'entiter fournissant un service. Le client est quand a lui demandeur de se service. Dans la majorite des cas les clients sont donc majoritaire par rapport aux serveur.











-