Bonjour ^.^

Je continue mon site, mais j'ai fait quelques modifications... Au dernier moment je me suis demandé combien de temps ça me prendrait de modifier le menu dans la div de gauche si mon site comptait 200 pages... J'ai donc employé un include pour les colonnes latérales et le pied de page... Je me demandais si il était possible de faire pareil avec l'en-tête, mais cette même en-tête affiche le nom de chaque page en son sein...

Je me demandais donc si il n'était pas possible d'afficher dans une page la valeur de la balise TITLE ? Comme ça je mets ça dans le fichier entete.htm et lorsque la page accueil.php, titlée "Accueil" (par exemple) appellera via un include ce fichier, ça afficherait "Accueil" dans l'entête...
Modifié par SolykZ (25 Nov 2006 - 19:22)
Administrateur
Bonjour,

une fois qu'on a goûté à include(); Smiley murf
:D

Voici 2 solutions possibles:
<?php include("debut_de_l_entete.inc.php"); ?>
<title>Accueil</title>
<?php include("reste_de_l_entete.inc.php"); ?>
<body>
etc

<?php include("presque_tout_l_entete.inc.php"); ?>
<title>Accueil</title>
</head>
<body>
etc

c'est-à-dire soit utiliser 2 include pour insérer ce qui précède et ce qui suit le <title> (le seul élément qui varie d'une page à l'autre) soit s'arranger pour que <title> arrive en toute fin de l'en-tête.
Il faut pas non plus avoir 15 includes par page (parce que PHP devrait ouvrir 15 fichiers à chaque requête web sans compter que le serveur web a lui les images et la feuille de style à fournir au navigateur m'enfin on est très loin de ce cas-là Smiley cligne

EDIT: avec les balises <?php ... ?> c'est mieux Smiley confused
Modifié par Felipe (09 Sep 2006 - 15:13)
Je ne suis pas sur que cela pourrait convenir en fait... Mon entête ne contient rien d'autre que le nom de la page, mit en forme via CSS (Donc y'a le texte qui apparait, avec une image en fond de celui-ci, pour créer une sorte de bannière)

J'aurais donc besoin que entete.php aille rechercher la valeur de la balise TITLE dans la page qui l'appelle pour l'afficher dans <H1></H1>

Donc si par exemple le fichier qui appelle entete.php s'appelle "accueil.php" et que son TITLE est "Bienvenue", le code de l'entete devrait être quelque chose du style :


<h1>Bienvenue</h1>


Et le "Bienvenue" serait cherché dans "accueil.php" par "entete.php"

Je ne suis pas certain d'avoir été très très clair, et que la méthode à laquelle je pense soit faisable, mais je crois qu'en relisant une ou deux fois, l'on comprend bien ce que je veux dire...

Si pas, j'essaierai de faire un effort Smiley lol
Salut,

Si j'ai bien compris,
Tu n'as qu'à pour tes liens transmettre une variable par $_GET du genre pour ton lien:

<a href="accueil.php?entete=accueil">Ma page d'accueil</a>


et dans ta page

<h1>Bienvenue à ma page <?php echo $_GET['entete']; ?></h1>


C'est ça?

<edit> Je ne vois pas trop l'interêt mais tu peux aussi l'inserrer dans ta balise title

<title><?php echo $_GET['entete']; ?</title>


</edit>
Modifié par ghost (09 Sep 2006 - 17:56)
Argh, j'ai oublié de préciser que je n'y connaissais rien en PHP... Smiley confus

'Vais faire quelques lectures ça et là histoire de comprendre de quoi tu viens de parler Smiley lol
Salut

Il me semble qu'une solution en Javascript devrait pouvoir réaliser ce que tu demandes.

Mais ce ne serait pas très recommandé, puisqu'il n'y aurait pas de titre (h1) sur la page Smiley ohwell

Donc, soit introduire le titre de chaque page, soit revoir le système de gestion des pages à l'aide d'un langage côté serveur, comme suggéré par ghost ...
Administrateur
Quand je parlais d'entête, je ne pensais pas à ce que l'on voit sur la page en partie haute avec le titre <h1>, bannière, etc mais à la partie invisible et nécessaire du code de toutes les pages en (X)HTML (Doctype et <head>(...)</head>)
[#blue]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="fr">
<head>

	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
	<meta name="description" content="Forum pour webmasters,  création de sites web avec HTML, XHTML, CSS et Standards W3C" />
	<meta name="keywords" content="forum, css, W3C, web, html, xhtml, standards, internet, webmaster, créer un site web, apprendre le html, accessibilite, handicap, handicaps" />
	<link rel="shortcut icon" type="images/x-icon" href="favicon.ico" />[/#]
	<title>Réponse - Forum Alsacréations : CSS et Standards Web</title>	
</head>
<body id="yay">


Si tout ce qui précède <title> (je l'ai mis en bleu) est fixe d'une page à l'autre chez toi, tu peux le placer dans un fichier externe que tu inclueras dans chacune de tes pages grâce à include();

Attention avec la solution de ghost: GET ou POST sans une sécurité maximale, c'est comme ouvrir la porte et les fenêtres au pirate de passage (il pourra insérer ce qu'il veut dans ton code et cela s'exécutera avec les mêmes droits que PHP, càd quelque chose de maximal Smiley ohwell )
Modifié par Felipe (10 Sep 2006 - 12:14)
Bonjour,

Je peux également proposer une solution très proche de celle de Felipe. Il serait possible d'initialiser une variable de titre juste avant l'inclusion du fichier d'entête. Ce dernier l'afficherait alors selon la convenance :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="fr">
<head>
	<title>Mon site - [#red]<?php[/#] [#blue]echo $titre;[/#] [#red]?>[/#]</title>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
	<meta name="description" content="Forum pour webmasters,  création de sites web avec HTML, XHTML, CSS et Standards W3C" />
	<meta name="keywords" content="forum, css, W3C, web, html, xhtml, standards, internet, webmaster, créer un site web, apprendre le html, accessibilite, handicap, handicaps" />
	<link rel="shortcut icon" type="images/x-icon" href="favicon.ico" />
</head>
<body>
<h1>[#red]<?php[/#] [#blue]echo $titre;[/#] [#red]?>[/#]</h1>
...


Pour son utilisation dans le cadre d'une page en particulier :


<?php
# Initialisation de la variable de titre
$titre = "Titre de la page";
# Inclusion du fichier d'entête
include('ficher-entete.php');
?>


Bonne continuation.
Bonjour,

Il y a bien un souci de sécurité mais il est facile à contrôler car le lien vers la page est un lien direct, il suffit de contrôler conditionnellement la valeur de la variable $_GET par rapport à une liste de titre de page pré établie. Ca devrait suffire ou je dis une bétise?
Bonjour,

Je ne suis pas un spécialiste aussi averti que les autres participants qui ont bien voulu te répondre. Toutefois, je suis tombé sur un tutoriel qui me semble intéressant sur le site PHP France car il permet de lire un fichier et donc de repérer les informations encadrées par les balises <title> et </title> d'une page html.

Voici l'adresse de la page web en question : http://www.phpfrance.com/tutoriaux/index.php/2005/03/01/9-les-fichiers

Bon courage !
(Re)bonjour,

Finalement, en cherchant ailleurs et différemment, j'ai trouvé une solution à ton problème, en php :


    <?php
	  
     $fichiercourant = file_get_contents(__FILE__);
     $p = strpos($fichiercourant, '<title>')+7 ;
     $titre = substr($fichiercourant, $p, strpos($fichiercourant, '</title>')-$p);
     echo $titre;
	  
      ?> 


$fichiercourant = file_get_contents(__FILE__); : charge le contenu du fichier dans la variable $fichiercourant

$p = strpos($fichiercourant, '<title>')+7 : calcule la position de la balise <title> puis celle du premier caractère qui la suit en ajoutant 7 = nb de caractères de la balise. Cette valeur est placée dans la variable $p

strpos($fichiercourant, '</title>">') : calcule la position de la balise </title> qui est aussi celle de la fin du titre

strpos($fichiercourant, '</title>')-$p : c'est la longueur du titre, calculée en faisant la différence entre la position dans le fichier du début de la balise </title>(fin du titre) et celle de la fin de la balise<title>(début du titre).

substr($fichiercourant, $p, strpos($fichiercourant, '</title>')-$p) : j'extrait de la chaîne de caractère $fichiercourant (ensemble du contenu du fichier) une chaîne de caractère de la longueur du titre que je viens de calculer et dont le 1er caractère se trouve juste après la balise <title> (position $p)

$titre = substr($fichiercourant, $p, strpos($fichiercourant, '</title>')-$p) : le résultat de cette opération est placé dans la variable $titre

echo $titre; : affichage du contenu de la variable

Voila, j'espère que c'est clair.
il y'a un peu moin tordu Smiley smile
surtout plus économique

dans la page :
<?php
$titre='le titre de la page';
include("header.php");
?>
<body>
<H1><?php echo "$titre"; ?></H1>
reste de la page ....

dans header.php:
<html lang="fr">
<head>
<meta ...ect...
<title><?php echo "$titre"; ?></title>
</head>

et voila la variable $titre est définis dans ta page, ton header
est appelé après, donc $titre est déja définis Smiley smile

après relecture c'est ce qu'expliquait Romain H. et Felipe Smiley smile

pour le problème de sécurité:
<?php echo "$titre"; ?> est mieux que:
<?php echo $titre; ?>
les guillemets "" assure que se soit bien une chaine de caratère ici.
je pense que se genre de problème ne peut pas arriver. La plupart des hebergeurs ont magic_quotes_gpc d'activé Smiley smile
http://fr.php.net/magic_quotes

l'ideal ici serait d'ajouter dans la page:
define('SECURE','interdir l'acces direct a header.php');

et dans le header.php
$secure = ( defined('SECURE') ) ? SECURE : die('oh !! le vilain');
$secure = ( SECURE == 'interdir l'acces direct a header.php' ) ? 'ok' : die('oh !! le gros vilain');

mais c'est ici, je pense, superflu Smiley smile
Modifié par desg (17 Sep 2006 - 05:07)
Désolé, j'avais totalement oublié ce topic... Disons que depuis le temps, tout le design a été modifié, re-modifié et re-re-modifié, et que du coup la raison de ce topic n'est plus...

Je le passe en résolu quand même, puisqu'il y a des réponses Smiley smile (d'ailleurs merci, j'y penserai en cas de besoin Smiley smile )