Bonsoir,

Mes pages de site ont pour l'instant le même title

S'il y a une modification, je ne voudrais pas devoir changer le title sur toutes les pages les unes après les autres.

Il y a certainement une version d'include qui fait ça ??? Smiley rolleyes



Mon site est en php mais sans base. Smiley confus
ce n'est pas conseillé pour le référencement, il faut un titre différent par page.
Bonjour,

bprod a écrit :
ce n'est pas conseillé pour le référencement, il faut un titre différent par page.
Ta réponse ne répond en rien à la question...

Pour avoir un titre de page unique lorsqu'on utilise include, il faut ruser Smiley langue Tu ne peut pas passer de variable à la fonction include (si c'est ce que tu entandais "une version d'include qui fait ça") mais, il est possible de définir une les valeurs à afficher soit dans le fichier appellant l'include, soit dans un autre fichier (où il faudra alors faire le lien entre la page appellant (l'URL, par exemple) et les valeurs).

Page appellant l'include :
$monTitre = "Le titre de ma page";
include(header.php);


La page header.php :
<doctype>
<html>
<head>
<title><?php echo $monTitre; ?></title>
</head>


ps. : il est possible de faire de même pour remplir la meta description Smiley cligne
Modifié par Laurie-Anne (07 Sep 2010 - 08:43)
Merci Laurie-Anne !
Est-ce que je doit créer une nouvelle page pour la meta description ? Smiley confused
Est-ce que ça marche aussi pour les mots clés ? bien qu'ils ne soient a priori indispensables qu'en page d'accueil ?
Les descriptions peuvent être mises au même endroit que le titre.

Oui ça peut marcher pour les mots clés, mais ils ne sont absolument pas utiles (même en page d'accueil) car les moteurs ne les utilisent plus.
salut...

Peut-être pourrions nous t'aiguiller avec le bout de code de ta page accueil qui concerne le head Smiley cligne

Tu ne maitrise peut être pas à fond le php et tu n'as pas tout compris sur ce qu'a expliqué laurie-anne.

En fait si tu fais un include de l'entête de ta page pour que le fichier php que tu Include puisse utiliser des variables il faut les déclarer avant de faire l'include.

Autre exemple pour que tu comprennes bien

FICHIER INDEX.PHP



$montitre = "Bienvenue sur mon site";
$motcles = "moi, vous, eux, autre";




et dans la page que tu va mettre en include



<title><?php echo $monTitre; ?></title>
<meta name="keywords" content="<?php echo $motcles; ?>" />



En bref et pour répondre à ta question...

Tu ne dois créer qu'une seule page contenant les infos de header que tu va inclure dans chacune des pages de ton site, avec des variables là où tu veux que les informations puissent être changées.

Dans chacune des pages de ton site AVANT l'include, tu va déclarer les variables...
Hello,

Laurie-Anne a écrit :
Tu ne peut pas passer de variable à la fonction include
En fait si : voir l'exemple #3 de cette page mais ça ne servirait à rien dans le cas présent. Smiley cligne

goudurisc a écrit :
Est-ce que je doit créer une nouvelle page pour la meta description ?
Est-ce que ça marche aussi pour les mots clés ? bien qu'ils ne soient a priori indispensables qu'en page d'accueil ?
Eh bien ça marche pour tout : si tu as besoin de plusieurs balises meta pour la page d'accueil mais pas pour les autres tu peux faire par exemple :

accueil.php :
<?php
$title = 'Forum Alsacréations - Accueil';
$keywords = 'forum, css, apprentissage, W3C';
$description = 'Forum pour webmasters, création de sites web avec HTML, XHTML, CSS et Standards W3C';
include('header.inc.php');
?>
<body>
<p>Lorem ipsum.</p>
</body>
</html>

autre.php :
<?php
$title = 'Forum Alsacréations - Autre page';
include('header.inc.php');
?>
<body>
<p>Lorem ipsum.</p>
</body>
</html>

header.inc.php :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title><?php echo $title; ?></title>
<?php if( !empty( $keywords ) ): ?>
<meta name="keywords" content="<?php echo $keywords; ?>" />
<?php endif; ?>
<?php if( !empty( $description ) ): ?>
<meta name="description" content="<?php echo $description; ?>" />
<?php endif; ?>
<link rel="stylesheet" type="text/css" href="/styles.css" />
</head>
Je je reconnais pas grand chose au php (dans l'immédiat) mais au fur et à mesure que je le découvre, je l'aime de plus en plus. Je n'y connais rien et je le prouve :

- Si je place le code appelant l'include sur toutes mes pages alors qu'il contient le titre de page, je ne comprend pas comment se fait la mise à jour. J'aurai bêtement imaginé que mon titre se trouve sur la page header.php... Smiley confused

Pas mal la question ? mais je peux faire encore mieux :

- Heyoan, a priori tout est clair mais quand tu nommes la page include "header.inc.php", je suis un peu perturbé par le nom avec double point, comme s'il y avait deux extensions... Smiley ohwell

Bon, pas de panique, je fais aussi mes gammes sur les sites de php débutant Smiley lol
goudurisc a écrit :
- Si je place le code appelant l'include sur toutes mes pages alors qu'il contient le titre de page, je ne comprend pas comment se fait la mise à jour.
Il faut comprendre que la fonction include se contente de faire un copier / coller de la page ciblée dans la page en cours.

goudurisc a écrit :
quand tu nommes la page include "header.inc.php", je suis un peu perturbé par le nom avec double point, comme s'il y avait deux extensions.
Ben ça n'a rien à voir avec PHP : tu peux mettre des points dans un nom de fichier et c'est seulement la dernière partie (ici .php) qui détermine l'extension. La notation .inc.php est une convention pour distinguer facilement les codes inclus des autres mais ça n'est pas une obligation.

goudurisc a écrit :
Bon, pas de panique, je fais aussi mes gammes sur les sites de php débutant
Et c'est une très bonne chose. Smiley smile
En fait si on fait référence au tuto "include" que je viens de lire en détail (parfait !), je constate que le texte du titre de ma page se trouve bien sur une page appelée (titre.inc.php)
et que le code appelant qui doit être présent sur toutes les pages est :
<title><?php include('titre.inc.php'); ?></title>
Je comprends sans pb la logique de cet include

Dans ton code (qui est certes plus complet, ce qui m'intéresse), ce que je ne comprends pas, c'est que la page qui appelle le code (accueil.php) contient le texte du titre contrairement au code de la page appelée (header.inc.php).

Dans le premier cas, je fais la mise à jour de mon titre dans la page titre.inc.php, c'est clair

Dans ton cas, si je place le code suivant sur toutes les pages :
<?php 
$title = 'Forum Alsacréations - Accueil'; 
include('header.inc.php'); 
?> 


Comment s'effectue la mise à jour ?

C'est le principe de déclaration de variable qui n'est pas proposé dans le tuto...

Sinon, je progresse, si, si... Smiley smile
Je viens d'utiliser la solution du tuto "include" d'Alsacréation, ça marche parfaitement et c'est vrai que ce n'était pas très compliqué. Je sais, j'aurais dû commencer par ça.

Cela dit, toutes vos interventions n'ont pas été inutiles et je reviendrai faire un tour sur cette discussions quand j'aurai quelques connaissances supplémentaires pour utiliser une solution plus avancée.

Très grand merci à tous ! Smiley cligne
Salut goudurisc : encore moi. cou-cou.

À propos des extensions : C'est donc la dernière extension qui compte.

En POO par exemple : fichier « monfichierDeClasse.class.php est tout à fait acceptable.

En Flash plus permissif tu peut exploiter un fichier conteneur de variables comme ceci
monFichierDeVariables.var <= non c'est vrai ! Smiley biggrin Le seul avantage évidemment est que l'extension est révélateur de son contenu. Il s'agit d'une extension .txt à l'origine mais tu peut le placer à .var. Flash n'aura aucune difficulté à le charger. Exploration et exploitation inclu. Smiley cligne

Ce qu'il faut comprendre ici c'est l'utilisation du fichier, son exploration en données brute souvent et son exploitation.

++
Modifié par zardoz (09 Sep 2010 - 05:05)
Administrateur
goudurisc a écrit :
Dans ton code (qui est certes plus complet, ce qui m'intéresse), ce que je ne comprends pas, c'est que la page qui appelle le code (accueil.php) contient le texte du titre contrairement au code de la page appelée (header.inc.php).

Dans le premier cas, je fais la mise à jour de mon titre dans la page titre.inc.php, c'est clair

Dans ton cas, si je place le code suivant sur toutes les pages :
<?php 
$title = 'Forum Alsacréations - Accueil'; 
include('header.inc.php'); 
?> 


Comment s'effectue la mise à jour ?

C'est le principe de déclaration de variable qui n'est pas proposé dans le tuto...

Sinon, je progresse, si, si... Smiley smile
Quand on a plus de 5 pages sur un site, mieux vaut réunir tous les titres et autres variables dans un même fichier, c'est plus simple pour en modifier deux à la fois ou bien utiliser une variable commune à plusieurs pages mais pas toutes, etc Smiley jap
Et quand on a 500 pages, on réunit les données non plus dans un fichier mais dans une base de données Smiley smile

zardoz a écrit :
À propos des extensions : C'est donc la dernière extension qui compte.

En POO par exemple : fichier « monfichierDeClasse.class.php est tout à fait acceptable.

En Flash plus permissif tu peut exploiter un fichier conteneur de variables comme ceci
monFichierDeVariables.var <= non c'est vrai ! Smiley biggrin Le seul avantage évidemment est que l'extension est révélateur de son contenu. Il s'agit d'une extension .txt à l'origine mais tu peut le placer à .var. Flash n'aura aucune difficulté à le charger. Exploration et exploitation inclu. Smiley cligne

Ce qu'il faut comprendre ici c'est l'utilisation du fichier, son exploration en données brute souvent et son exploitation.

++
Et pour PHP, concrètement, utiliser .inc.php ou .txt.php plutôt que .inc ou .txt empêche les petits malins de découvrir le contenu des fichiers inclus.
Ce contenu est souvent sensible ($connexion_base_donnees_motdepasse = "toto" Smiley rolleyes ) et rien n'empêche un développeur de parcourir un site à la pêche en aveugle de tous les fichiers init.txt, connect.qqch, etc tout comme il peut tenter tous les mots de passe courants "internet", "123456", "dupond", etc pour se connecter à un webmail ou la partie privée d'un site.

PHP exécute les fichiers qui se terminent par .php parce qu'on a dit au serveur (Apache ou IIS) de le faire.
Par contre le serveur doit afficher directement les .txt, .inc, .jpg, .png tout comme il doit proposer au téléchargement les .zip et pas les refiler à PHP Smiley biggol


Pour empêcher qu'un malin affiche un fichier .inc à notre insu, il faut soit modifier la configuration du serveur ("les .inc doivent passer par PHP") mais c'est compliqué, on peut oublier, on ne peut pas toujours, soit prendre l'habitude de n'inclure que des fichiers qui se terminent par .php

Exemple, soit le fichier :
<?php

$connexion_base_donnees_motdepasse = "toto";

?>

Quand on l'inclut, peu importe l'extension ; c'est le fichier appelant qui compte et c'est forcément un fichier PHP puisqu'on est en train d'exécuter du code PHP ...

Quand un visiteur affiche directement ce fichier et que c'est du texte, on va voir tout ce qu'il y a écrit ci-dessus ... problème en vue Smiley ohwell
Quand un visiteur affiche directement ce fichier et que ça passe par PHP, ce dernier va exécuter le code et le visiteur ne verra rien (il n'y a aucune instruction d'affichage ! On ne fait rien de la variable ici). Au pire PHP va finir prématurément l'exécution de la page avec une erreur parce que le code ne sera pas valide seul ou bien terminer l'exécution avec une page blanche et vierge.
J'ai sagement tout lu mais c'est vraiment trop technique pour moi. Je retiens malgré tout que dans mon cas présent, la formule minimum suffit.
Encore merci