Page 1 sur 2

page accueil ne s'affiche pas

Posté : 23 mars 2010, 22:21
par Alucard68
Bonjour, alors voila j'ai un problème pour mon site internet que je suis entrain de créer moi même pas de kit graphique télécharger sur le net. Donc enfainte je fait apel au php
pour l'ensemble de la page. Je m'explique
j'ai créer une page index.php dans la quel se trouve ceci

Code : Tout sélectionner

<?php require_once('html.php'); $page = $_GET['id']; if (!$page) { $page = 'accueil'; } html_head($page); html_header(); html_body($page); html_footer($page); ?>
je fait apel a la page html.php dans la quel se trouve tout le corp de mon site avec le header les liens ect... voici la page en question

Code : Tout sélectionner

<?php require_once( 'index.php' ); error_reporting( 0 ); function getBaseURL() { $port = ':' . $_SERVER['SERVER_PORT']; $host = preg_replace( '/:.*$/', '', $_SERVER['HTTP_HOST'] ); if ( preg_match( '/^(|off|false|disabled)$/i', $_SERVER['HTTPS'] ) ) { $proto = 'http://'; if ( $_SERVER['SERVER_PORT'] == '80' ) { $port = ''; } } else { $proto = 'https://'; if ( $_SERVER['SERVER_PORT'] == '443' ) { $port = ''; } } $dir = (dirname($_SERVER['PHP_SELF'])); return $proto . $host . $port . $dir; } function html_head( $page ) { global $page; ?> < html xmlns = "http://www.w3.org/1999/xhtml"; xml:lang = "fr" lang = "fr" dir = "ltr" > < head > < title >Vampire Land</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <? } function html_header() { $here = getBaseURL(); ?> <body> <center> <font face="comics" size="14" color="red"> Vampire Land </font> <br> <img src="images/header.png"> <br> <b>|</b> <a href="<?=$here?>">Accueil</a> <b>|</b> <a href="<?=$here?>?id=etude">Etude Vampirique</a> <b>|</b> <a href="<?=$here?>?id=film">Les Films</a> <b>|</b> <a href="<?=$here?>?id=contact">Me Contacter</a> <b>|</b> <a href="<?=$here?>?id=news">Les News</a> <b>|</b> <a href="<?=$here?>?id=partenaire">Devenir Partenaire</a> <b> | </b> <br> <br> <?php } function html_body( $page ) { global $page; $include = "html/$page.php"; echo ' <div id="content">'; if ( file_exists( $include ) ) { $open = require_once($include); } else { $open = require_once("html/error.php"); } page(); echo ' </div>'; } function html_footer( $page ) { $here = getBaseURL(); ?> <br> <span id="footer"> ..:: Copyright © 2010 Tout Droit Réservé "mon-site.net" Designed by Alucard68 ::.. </span> <br> <span id="menu_bas"> <u>Site Validé:</u> <a href="http://valide.w3c.com target=_blank">CSS 2.1</a> <b>|</b> <br> <u>Mes Partenaire:</u> <br> <u>Mes Référencement:</u> </span> </center> </body> </html> <?php }
et dans un fichier nommer html j'ai placer la page accueil.php sur laquel se trouve mon texte.
et le problème est la c'est que quand j'ouvre ma page html.php le corps du site est bien la mais pas le texte de la page accueil.php je ne vois pas d'ou vient le problème. Si
quelqu'un pouvais m'aider. Voici comment es coder ma page accueil.php

Code : Tout sélectionner

<?php require_once( 'html.php' ); require_once( 'index.php' ); function page() { $here = getBaseURL(); php > <span id ="text"> <div id ="cadre"> Bienvenu à tous les internautes dans Vampire Land . Ici vous allez découvrir un monde différent . < br > Sur se site vous decouvrirez un monde à part dans le quel les vampires existes . Pour moi < br > il est évident que les vampires existent et qu'ils vivents parmis nous sans que nous le sachions. <br> Je vous invite a lire <a href="Bla.net/?id=etude">L'étude Vampirique</a > . < br > Vous trouverez plein d'autre services comme une rubrique <a href="bla.net/?id=news">News</a> dans laquel vous trouverez tous les <br> renseignement sur l'évolution de mon site . Ou encore tout <a href =bla.net/?id=films">Les Films</a> traitant du sujet du vampirisme . < br > Je vous laisse découvrir par vous même . < br > Bonne lecture à vous toutes et tous . < br > N'hésité pas à utiliser la rubrique <a href="bla.net/?id=contact target="_blank">Contact</a> pour me faire part de toutes vos suggestion ou autres. </div> </span> <? }
J'espère que quelqu'un pourra me dépanner car la je ne vois ou es le problème.
Merci d'avance a ceux qui me liron et qui me donnerons un coup de main.

Cordialement Alucard68

Re: probleme site

Posté : 24 mars 2010, 01:18
par AB
Découpe ton code en morceaux ainsi tu verras mieux l'origine du problème. C'est un principe élémentaire pour le débugage.

Par exemple tu dis que rien n'est inclus. Essaies dans une page vierge de faire ton include avec le même fichier à inclure pour vérifier si le pb est à ce niveau là.
Et l'autre avantage d'isoler le pb est aussi qu'en cas de besoin on y verra plus clair pour t'aider sans avoir à déchiffrer l'ensemble de ton code :wink:

Re: probleme site

Posté : 26 mars 2010, 08:32
par Truc
Modération :
Merci d'utiliser un titre clair et qui correspond bien à ta demande.
Les titres contenant "HELP !", "Aidez-moi", "J'ai un problème", "Ça marche pas",...
n'apportent rien à la compréhension de ta demande.

Par ailleurs, nous savons déjà par ton message que tu as besoin d'aide.

Tu peux corriger ton titre en éditant ton premier message.

Merci de prendre le temps de lire les règlements.

Re: probleme site

Posté : 26 mars 2010, 13:02
par macgawel
Bonjour.

1. error_reporting( 0 ); => mauvaise idée.
Déjà, je ne suis pas sûr que le zéro soit géré, mais en plus la temps de développer ton site il faut au contraire afficher toutes les erreurs.
=> error_reporting( E_ALL );

2. Tu as du mal avec les require_once :
index.php appelle la page html.php, qui appelle index.php...

3. Dans html.php, tu utilises des fonctions qui prennent en paramètre $page, et derrière tu définis $page comme une variable globale.
C'est incohérent...

Sinon, le html dans le corps d'une fonction php ce n'est pas top.
En général, on utilise plutôt un fichier qui contiendra le html.
Par exemple pour ta fonction html_head :
function html_head ( $page ) {
   include ('header.php');
}
avec le fichier header.php qui contient uniquement le html :
< html xmlns = "http://www.w3.org/1999/xhtml"; xml:lang =
"fr" lang = "fr" dir = "ltr" > < head > < title >Vampire Land</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
Tu peux faire un tour sur phpdébutant pour un bon tutoriel sur l'utilisation des "pseudo-frames"...

Re: page accueil ne s'affiche pas

Posté : 27 mars 2010, 22:53
par Alucard68
Bonsoir alors j'ai refait tout mon codage d'une autre façon.
Finalement tout se que je veux c'est que mon menu soit a part pour éviter de modifier chaque page html a chaque fois que je rajoute une page et vis versa.
Donc j'ai créé une page menu.php dans laquel se trouve toute ma navigation.
puis dans ma page index.html je fait apel a ma page menu.php mais sa ne fonctionne pas et j'ai pas de message d'erreur je comprend pas pourquoi
voila le bout de code de ma page index.html

Code : Tout sélectionner

<?php include('menu.php'); ?>
et ma page menu.php se trouve de cette manière

Code : Tout sélectionner

<?php mon menu... ?>
si quelqu'un a une suggestion je suis preneur.
merci d'avance.
Cordialement Alucard68

Re: page accueil ne s'affiche pas

Posté : 28 mars 2010, 14:44
par AB
Bonsoir alors j'ai refait tout mon codage d'une autre façon.
Finalement tout se que je veux c'est que mon menu soit a part pour éviter de modifier chaque page html a chaque fois que je rajoute une page et vis versa.
Donc j'ai créé une page menu.php dans laquel se trouve toute ma navigation.
puis dans ma page index.html je fait apel a ma page menu.php mais sa ne fonctionne pas et j'ai pas de message d'erreur je comprend pas pourquoi
voila le bout de code de ma page index.html

Code : Tout sélectionner

<?php include('menu.php'); ?>
Si ta page se nomme index.html alors elle ne peut pas interpréter du php. Il faudrait qu'elle se nomme index.php pour pouvoir interpréter du code php

Re: page accueil ne s'affiche pas

Posté : 29 mars 2010, 20:25
par Invité
Bonsoir, alors AB j'ai renommer ma page index.html en index.php mais il y a toujours un problème quand j'affiche ma page via firefox il n'y a que le code source de la page qui s'affiche :x d'ou sa peu venir ai-je oublié une variable quelque part (surment oui mais ou ?)

Cordialement Alucard68
Merci d'avance

Re: page accueil ne s'affiche pas

Posté : 29 mars 2010, 20:50
par AB
Si php n'est pas interprété sur le serveur distant peut être que ton serveur distant n'interprète pas le php ou dans certaines conditions.

Si tu testes en local il faut avoir easy.php ou wamp de démarré.

Re: page accueil ne s'affiche pas

Posté : 29 mars 2010, 23:39
par Invité
Bonsoir, AB en se qui concerne l'affichage c'est bon avec phpedit

en revhanche j'ai de nouveau réencoder tout lol je sais sa devien compliquer a me suivre... :P

alors voila le nouveau code de ma page index.php

Code : Tout sélectionner

<?php require_once ( 'head.php' ); ?> <?php require_once ( 'menu.php' ); ?> <div id="right"> <div class="right-bloc"> <div class="right-titre"><h2>Vampire Land</h2></div> <div class="right-marges"> <?php require_once ($_GET['page'].'.php'); ?> </div> <div class="right-bottom"></div> </div> </div> </div> <?php require_once ( 'footer.php' ); ?>
la page accueil ne s'affiche pas quel variable ajouter ou a changer pour que sa fonctionne tout le reste fonctionne sauf cette parti

Code : Tout sélectionner

<?php require_once ($_GET['page'].'.php'); ?>
bon c'est sur que si je met require_once ('accueil.php'); sa fonctionnera mais pas pour le reste de la navigation.
Merci d'avance
Cordialement Alucard68

Re: page accueil ne s'affiche pas

Posté : 30 mars 2010, 00:25
par AB
Dans ton code php tu récupères la variable $_GET['page'] envoyée par le lien de ton menu sinon tu affiches la page d'index

MAIS IL FAUT VERIFIER LES PAGES TRANSMISES PAR LA VARIABLE $_GET['page'] SINON C'EST UN GROS TROU DE SECURITE => Piratage très probable

Exemple
<?php
//Tu met dans un tableau toutes les pages qui pourrons être appelées avec leur nom  (exemple avec trois pages)
$pages_autorisees = array('accueil','presentation','contact');

//Tu récupères la variable $_GET['page'] si elle existe, sinon tu lui assignes la valeur null
$page = isset($_GET['page'])? $_GET['page'] : null;

//Tu vérifies que c'est une variable attendue donc qui est contenue dans ton tableau, sinon tu lui assignes la page d'index, ex 'accueil'
$page = in_array($page,$pages_autorisees)? $page : 'accueil';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Exemple</title>
</head>

<body>
<div>
Menu 
<a href= "index.php?page=accueil">Accueil</a>
<a href= "index.php?page=presentation">Présentation</a>
<a href= "index.php?page=contact">Contact</a>
</div>
<div>
<?php 
require_once ($page.'.php');
?>
</div>
</body>
</html>
C'était pour détailler mais dans le code php tu pourrais ne faire qu'une ligne après la déclaration de ton tableau en faisant
$page = isset($_GET['page']) && in_array($_GET['page'],$pages_autorisees)? $_GET['page'] : 'accueil';

Re: page accueil ne s'affiche pas

Posté : 30 mars 2010, 13:29
par Alucard68
Bonjour,
Merci AB pour se bout de code sa fonctionne parfaitement :D

Autre chose imaginons que j'enlève une page du genre photo.php et que j'oublie d'enlever le lien dans mon menu. comment faire pour que quand l'internaute clic sur le lien au lieu que sa soit la page accueil.php d'affiche sa soit la page error.php dans la quel il y aurai le message suivant :

Code : Tout sélectionner

<p> La page que vous tentez actuellement de visualiser n'existe pas ou n'est pas encore disponible. Si vous avez entré l'adresse à la main, vérifiez qu'elle est correcte. Si vous accédez à cette page par un lien du site, c'est que la page est en construction. Veuillez nous excuser pour la gène occasionnée. Si le problème persiste, contactez le webmaster par le biais du formulaire prévu à cet effet: "Contact". </p> <p> Merci de votre compréhension. </p>
Merci d'avance
Cordialement Alucard68

Re: page accueil ne s'affiche pas

Posté : 30 mars 2010, 23:40
par AB
A ce niveau là du premier bloc de code
$page = in_array($page,$pages_autorisees)? $page : 'accueil';
nous avons une page autorisée car elle fait partie du tableau de page autorisées (défini dans $pages_autorisees).
Effectivement si tu as supprimé une page sur le serveur et que tu n'a pas mis ton tableau à jour il y aura une erreur de redirection.
Pour éviter ça il te suffit de vérifier que ta page existe bien sur le serveur avec la fonction is_file
Donc juste à la suite de cette ligne tu peux écrire :
$page = is_file($page.'.php')? $page : 'error';
et si le fichier n'existe pas le visiteur sera dirigé vers error.php

Note que j'utilise des opérateurs ternaires pour définir mes conditions. Si tu ne comprend pas comment cela fonctionne il y a ce petit tuto

Re: page accueil ne s'affiche pas

Posté : 30 mars 2010, 23:44
par Nours312
$page = is_file($page)? $page : 'error';
Excuses moi AB, mais ne serait-ce pas :
$page = is_file($page.'.php')? $page : 'error';
?? :D

Re: page accueil ne s'affiche pas

Posté : 31 mars 2010, 16:37
par AB
Bien sûr, tu as raison :wink:

Re: page accueil ne s'affiche pas

Posté : 31 mars 2010, 20:33
par Alucard68
Bonsoir,
et bien que dire de plus a part un GRAND MERCI a vous pour l'aide :D:D:D et en particulier a AB
Encore merci
Cordialement Alucard68