Bonjour,

en général, dans un site web, il y a un menu ; si on ne veut pas le dupliquer partout et avoir beaucoup de travail et de risque d'erreur en cas de mise à jour, il faut qu'il soit dans un fichier unique. En PHP, c'est simple, il faut ensuite écrire un include dans chaque page :
include("../menu/menu.html");
; si on ne peut pas utiliser de langage serveur, autrefois, on pouvait recourir aux frames html, mais maintenant qu'elles sont dépréciées, comment faire ?
Modifié par laurentsc (11 Apr 2014 - 09:03)
Maintenant il faut utiliser un language serveur.
Et si on ne veut vraiment pas tout générer en local pour ensuite l'héberger online.
Et si ce n'est pas possible Smiley decu ? (Je suis sur des serveurs qui n'exécutent pas le PHP).
Modifié par laurentsc (03 Apr 2014 - 17:25)
Administrateur
Ils exécutent peut-être un autre langage ?

S'il s'agit d'Apache, il est possible aussi que les Server-Side Includes soient activés et de les utiliser sans PHP.

Une autre technique consisterait à faire appel à JavaScript pour charger à la demande ces fichiers, par exemple en AJAX, mais ce n'est pas extrêmement propre...
Est-il possible de savoir si les Server-Side Includes sont activés (une sorte de phpinfo mais en html...). Car je viens de faire l'essai suivant :

essai.html :

<!DOCTYPE html>
<html>
  <head>
    <meta content="text/html; charset=windows-1252" http-equiv="content-type">
    <title></title>
  </head>
  <body>
<!--#include file="test.html" -->

  </body>
</html>


et test.html :

<!DOCTYPE html>
<html>
  <head>
    <meta content="text/html; charset=windows-1252" http-equiv="content-type">
    <title></title>
  </head>
  <body>
<pre>coucou</pre>

  </body>
</html>


et quand je lance essai.html, pas de coucou Smiley ohwell
Administrateur
Bonsoir,

Peut-être que les (nombreux) langages de templates pourraient résoudre ce problème ? (HAML, Jade, Twig, etc.).
Ils nécessitent cependant un compileur, mais il y en a beaucoup aussi (des plugins sublime text par exemple)
Par contre, dans ton fichier test.html, tu ne dois écrire que la partie que tu désires inclure, et ne surtout pas remettre un Doctype, et la suite (head, body,...) sinon, tu te retrouveras avec autant de déclarations que tu as de partie à inclure !
Dans ton exemple:
<pre>À que coucou</pre>
Après une très longue pause, je viens d'essayer le truc de 6120 et page blanche Smiley decu avec :

essai.html :
<!DOCTYPE html>
<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="content-type">
    <title></title>
  </head>
  <body>

<!--#include file="test.html" -->

  </body>
</html>


test.html :
<pre>À que coucou</pre>


et .htaccess :
Options +Includes


Le serveur est chez Free...
Hello,

Si tu as une page HTML qui fonctionne sur free, tentes d'insérer cette directive dans une portion du code :
<!--#echo var="DATE_LOCAL" -->

Qu'obtiens-tu ?
Comme dans toutes les pages que je regardais, y a du PHP, j'ai créé une page html qui marche et j'ai rajouté ta ligne (et le fichier .htaccess) :

essai.html :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="content-type">

</head>


<body>

<!--#echo var="DATE_LOCAL" -->
<pre>à que coucou</pre>


</body>
</html>


et ça n'affiche que "à que coucou" mais pas de date...
Je viens d'essayer la même chose sur un autre serveur (chez evxonline), et pas de date Smiley decu . Y aurait-il une directive à positionner (.htaccess) ? Je vais leur poser la question...
Bonjour,

Pourquoi ne pas changer de serveur ? Il existe des choses très peu chères, qui permettent beaucoup de choses.

Je pense que les hébergements de ce type sont sujets à disparaître du jour au lendemain, donc c'est pas très safe.

Si vous trouvez une solution, merci de la poster, afin qu'elle soit disponible pour tout le monde !

Bon courage,
totopsy a écrit :


Pourquoi ne pas changer de serveur ?


Impossible car il s'agit des serveurs de mon entreprise...

Pour info, chez Free, un .htaccess avec
Options +Includes
fonctonnait ; chez EvxOnline, il a fallu un .htacccess avec
Options +Includes
AddType text/html .shtml 
AddHandler server-parsed .shtml 
DirectoryIndex index.shtml index.html index.htm index.php 
Options +IncludesNoExec -ExecCGI 
et dans les 2 cas, une extension shtml, mais dans le cas de mon entreprise, même la dernière solution ne fonctionne pas ; pourrai-je essayer autre chose ?
Salut,

Il y a un truc qui me chiffonne, d'après ce que tu nous dis :
laurentsc a écrit :
Comme dans toutes les pages que je regardais, y a du PHP, j'ai créé une page html qui marche et j'ai rajouté ta ligne (et le fichier .htaccess) :
ou
DirectoryIndex index.shtml index.html index.htm [b]index.php[/b]
Le PHP semble être exécuté sur le serveur de ton entreprise, non ?
Pourquoi dans ce cas ne par avoir recours au inclusion PHP ?!

Ceci étant dit, je ne suis pas certain que cela fasse bon ménage avec :
Options +IncludesNoExec -ExecCGI 
Après, j'imagine aisément qu'il y a une question de sécurité sous roche, mais cela dépasse allégrement mes très modestes compétences Smiley ohwell
Donc plutôt que de manipuler des fichiers .htaccess pour "overrider"/"surcharger" les directives du fichier de configuration (httpd.conf), peut-être vaut-il mieux solliciter l'aide d'un spécialiste de la question (configuration serveur et/ou expert sécurité), non ?

D'autres solutions existent certainement, un spécialiste passera peut-être par là, courage Smiley cligne
Et non, le PHP ne tourne pas sur les serveurs du boulot Smiley decu ; en fait, pour tester la solution, je la testais sur des serveurs persos (qui eux, exécutent le PHP)...