inclure dans index.php un <title> correspondant à la page appelée

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : inclure dans index.php un <title> correspondant à la page appelée

par tarouka » 27 juil. 2009, 01:41

Bien,

Je crois qu'avec toutes vos réponses, j'ai matière à obtenir ce que je veux.

Je mets donc ce sujet en résolu.

En vous remerciant tous :merci:

par momox » 27 juil. 2009, 00:35

Du tout, grace aux <<<EOF et EOF;, pas besoin d'échapper tes caractères.
Jette un oeil du coté de http://fr.php.net/manual/fr/language.types.string.php au niveau de la syntaxe Heredoc (c'est comme ça que ça s'appele).

par tarouka » 27 juil. 2009, 00:01

momox,
Question subsidiaire... Lorsque tu proposes :
Tu as un autre choix sinon.
Ex:
- Structure de la page inclue:
<?php
$titre = 'Accueil';
$contenu = <<<EOF
Voila le contenu de ma page
EOF;
?>
Si je mets le contenu de mes pages dans $contenu , il faudra que je mette un slash inverse devant tout mes apostrophes :shock: ! bonjour le boulot, car il y a pas mal de texte (et de balises html) dans chacune des pages...
C'est ça l'idée ?

par thehawk » 26 juil. 2009, 23:53

Juste pour le bonheur de faire compliqué :
//Page.php !
<?php 
$entete = array(
	'accueil' => 'Page d acceuil ...',
	'page1' => 'Musique me ....'
); // On ajoute les différentes page
?>
//Index.php
<?
include('page.php'); // On inclue la page contenant les titres de notre page
if(!empty($_GET) and !empty($_GET['titrepage'])) // On vérifie si on a bien fait passa des infos dans l'url , et si le paramètre titrepage est rempli
{
	$titre  = htmlentities($_GET['titrepage']); // On rend innofenssif les attaques par l'url
}
else // Sinon on a rien dans l'url ou c'est vide donc on met l page par defaut
{
	$titre = 'accueil'; // Identifiant de la page (la clé du tableau associatif) $entete
}

$titre_page = $entete[$titre]; // On attribut le titre de la page

echo '<html>
<head><title>'.$titre_page.'</title></head> 
<body>
<a href="index.php?titrepage=accueil">On va a l acceuil</a><br />
<a href="index.php?titrepage=page1">On va a musique me</a><br />

</body></html>';

// On affiche la page 
?>
C'est exemple, a toi de l'adapter a ta structure et a ton contenu normalement cle code est opérationnel mais je garantie rien quand je vois l'heure ^^


Bonne nuit Hawk

par tarouka » 26 juil. 2009, 23:47

Oula ! je suis perdu !
Furiouslol
quand tu dis :
Récupère ton tableau de titre ($tableau_pages) au tout début de ton index
je suppose que tu parles du code et que de ce fait je peux supprimer le fichier php qui le contenait initialement ?
mais pour l'heure j'ai 2 tableaux dans 2 fichiers php distincts : celui des pages (fonctionnel) et celui des titres (non fonctionnel)... S'il ton idée est de créer un seul tableau, en début de l'index, pour afficher/appeler aussi bien les titres que les pages, ça je ne sais pas faire (la structure du tableau je veux dire)
Merci de ton aide.
Momox
Là, j'ai du mal... Voici ce que je retire de ta réponse :
pour la structure des pages à inclure, c'est clair... Mais dans le code php qui suit (pour l'affichage), où est l'appel du tableau qui renvoie la page demandée via le menu ? Ou bien faut-il simplement que je mette ce tableau à la place de cette partie de ton exemple : <?php include('page.php'); ?>
Question de débutant certainement.
Merci à tous pour votre patience !

par momox » 26 juil. 2009, 22:59

Tu as un autre choix sinon.
Ex:
- Structure de la page inclue:
<?php
$titre = 'Accueil';
$contenu = <<<EOF
Voila le contenu de ma page
EOF;
?>
Comme ca, pour l'affchage, tu peux faire ainsi, simplifié pour l'exemple:
<?php
include('page.php');
?>
<html>
<head>
<title><?php echo $titre; ?></title>
</head>
<body>
<?php echo $contenu; ?>
</body>
</html>
Voila une solution par exemple ;)

par tarouka » 26 juil. 2009, 22:49

Euh...
Qu'est-ce à dire, un $titre = "Accueil"; etc... ?
Je suis nul en php, donc peux-tu être plus explicite ?
Dois-je faire ceci (ne rigole pas :? ) :
<?php
// tableau pour titres des pages dans head.
$titrepage = (!empty($_GET['titrepage'])) ? htmlentities($_GET['titrepage']) : 'accueil';
$tableau_titrepages = array(
     $titrepage = 'Acceuil',
     $titrepage = 'Agenda',
     $titrepage = 'Contact',
     $titrepage = 'Imprimer',
     // etc...     
);
if(!array_key_exists($titrepage, $tableau_titrepages)) include('Accueil');
// et LA ligne 27 :
else  include($tableau_titrepages[$titrepage]);
?>

par furiouslol » 26 juil. 2009, 22:44

Salut

Récupère ton tableau de titre ($tableau_pages) au tout début de ton index, de cette façon il sera utilisable a la fois dans ton fichier d'entête, comme dans ta page de contenu. Ainsi tu le teste une fois pour afficher ton titre de la façon dont Nicost t'as décrit, et une deuxième fois dans fonctionnalité pour afficher la page désirée (si tu teste le même tableau t'es sur que ca correspond)

par Nicost » 26 juil. 2009, 22:39

no problème, crè peut être un $titre = "Accueil"; etc...

par tarouka » 26 juil. 2009, 22:27

Bonjour Nicost,
Merci, vraiment, de m'avoir répondu si vite...
Bon, j'ai essayé ta proposition, l'erreur à disparue mais le titre de la page dans l'onglet de la fenêtre FF affiche l'url :
http://localhost/php_site/index.php?pag ... ge=accueil
et dans le code source la balise title a simplement disparue ! C'est magique, mais pas vraiment espéré :wink:
Que penses-tu de ce résultat ?
Merci d'avance

par Nicost » 26 juil. 2009, 22:03

Slt, dans ton head essai quelque chose comme ça :
<?php
if (!empty($titre)) 
{
    echo '<title> '.$titre.' </title>';
}
?>

inclure dans index.php un <title> correspondant à la p

par tarouka » 26 juil. 2009, 21:23

Bonjour,
Une question qui apparaîtra basique certainement, mais sur laquelle je butte malgré mes recherches...
J'ai un index.php ainsi construit :
<?php
include ('entete.php');
?>
<body>
<?php
include("pages/menuhaut.php");
?>
<?php
include ('pages/menugauche.php');
?>
<?php
// affichages des pages
include ('fonctionpages.php');
?>
<?php
include ('bas.php'); 
?>
</body>
</html>
Donc, "entete.php" contient doctype, meta et title...
Mon problème est le suivant : comment inclure un title correspondant à la page affichée grâce à "fonctionpages.php" ?
Voici le code de fonctionpages.php
<?php
// tableau pour liens vers pages
$page = (!empty($_GET['page'])) ? htmlentities($_GET['page']) : 'accueil';
$tableau_pages = array(
     'accueil' => 'pages/acceuil.php',
     'agenda' => 'pages/agenda.php',
     'contact' => 'pages/contact.php',
	 'imprimer' => 'pages/imprimer.php',
	 'images' => 'pages/images.php',
	 // etc...	 
);
if(!array_key_exists($page, $tableau_pages)) include('pages/accueil.php');
elseif(!is_file($tableau_pages[$page])) include('pages/accueil.php'); 
else  include($tableau_pages[$page]);
?>
J'ai pensé adapter le tableau de fonctionpages.php et réaliser ainsi un tableau fonctiontitres.php, deux tableaux auxquels mes liens font appel de cette façon :

Code : Tout sélectionner

<a href="index.php?page=accueil&titrepage=accueil" >
Bien entendu, ça ne marche pas :( .
J'obtiens l'erreur suivante : <title>Warning: include(Acceuil) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory in C:\wamp\www\PHP exemple de site\fonctiontitres.php on line 27</title>, que je ne sais pas interpréter, la ligne 27 observée de près ne m'apportant aucune lumière.

Quelqu'un aurait-il la patience de m'éclairer ?

Pour finir, voici le code de fonctiontitres.php
<?php
// tableau pour titres des pages dans head.
$titrepage = (!empty($_GET['titrepage'])) ? htmlentities($_GET['titrepage']) : 'accueil';
$tableau_titrepages = array(
     'accueil' => 'Acceuil',
     'agenda' => 'Agenda',
     'contact' => 'Contact',
	 'imprimer' => 'Imprimer',
	 // etc...	 
);
if(!array_key_exists($titrepage, $tableau_titrepages)) include('Accueil');
// et LA ligne 27 :
else  include($tableau_titrepages[$titrepage]);
?>
Un grand merci par avance !