18041 sujets
Questions générales et questions de débutants
Bonjour,
Pour avoir un titre de page unique lorsqu'on utilise include, il faut ruser 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 :
La page header.php :
ps. : il est possible de faire de même pour remplir la meta description
Modifié par Laurie-Anne (07 Sep 2010 - 08:43)
bprod a écrit :Ta réponse ne répond en rien à la question...
ce n'est pas conseillé pour le référencement, il faut un titre différent par page.
Pour avoir un titre de page unique lorsqu'on utilise include, il faut ruser 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
Modifié par Laurie-Anne (07 Sep 2010 - 08:43)
salut...
Peut-être pourrions nous t'aiguiller avec le bout de code de ta page accueil qui concerne le head
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
et dans la page que tu va mettre en include
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...
Peut-être pourrions nous t'aiguiller avec le bout de code de ta page accueil qui concerne le head
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,
accueil.php :
autre.php :
header.inc.php :
Laurie-Anne a écrit :En fait si : voir l'exemple #3 de cette page mais ça ne servirait à rien dans le cas présent.
Tu ne peut pas passer de variable à la fonction include
goudurisc a écrit :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 :
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 ?
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...
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...
Bon, pas de panique, je fais aussi mes gammes sur les sites de php débutant
- 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...
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...
Bon, pas de panique, je fais aussi mes gammes sur les sites de php débutant
goudurisc a écrit :Il faut comprendre que la fonction include se contente de faire un copier / coller de la page ciblée dans la page en cours.
- 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.
goudurisc a écrit :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.
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.
goudurisc a écrit :Et c'est une très bonne chose.
Bon, pas de panique, je fais aussi mes gammes sur les sites de php débutant
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 :
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...
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...
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 !
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 !
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 ! 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.
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)
À 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 ! 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.
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)
goudurisc a écrit :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
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...
Et quand on a 500 pages, on réunit les données non plus dans un fichier mais dans une base de données
zardoz a écrit :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.
À 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 ! 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.
Ce qu'il faut comprendre ici c'est l'utilisation du fichier, son exploration en données brute souvent et son exploitation.
++
Ce contenu est souvent sensible ($connexion_base_donnees_motdepasse = "toto" ) 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
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
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.