Include et liens

Include et liens - PHP - Programmation

Marsh Posté le 09-09-2006 à 21:46:08    

bonsoir
je suis assez debutant en php, voici le code que j'ai tapé :

Code :
  1. <table width=100%><tr><td>
  2.       <?php
  3.   include("top.php" );
  4.   ?>
  5.    </td></tr></table>
  6.  
  7.    <table width=100%><tr><td width=20% valign=top>
  8.       <?php
  9.   include("menu.php" );
  10.   ?>
  11.    </td><td valign=top>
  12.     <table width=100%><td width=80% valign="top">
  13.         <?php include "index2.php" ?></td>
  14.   <td valign="top">
  15.   </tr></table>


 
le probleme : comment faire pour que lorsque l'on clique sur un lien du menu, il s'affiche a la place de index2.php ?
 
merci

Reply

Marsh Posté le 09-09-2006 à 21:46:08   

Reply

Marsh Posté le 10-09-2006 à 00:21:14    

he bien, tu passe un paramètre dans ton lien et tu utilise une array pour connaitre le fichier à inclure, par exemple

Code :
  1. ...Menu...
  2. <a href="?page=menu1">menu 1</a>
  3. <a href="?page=menu2">menu 2</a>
  4. ...


Code :
  1. ...
  2. // menu top
  3. ...
  4. // menu gauche
  5. ...
  6. // affichage page
  7. $liste_pages=array(
  8.   "menu1"=>"page1.php",
  9.   "menu2"=>"page2.php"
  10. );
  11. $page=$liste_pages[$page];
  12. if(!$page) $page="index2.php";
  13. include($page);


Reply

Marsh Posté le 10-09-2006 à 01:09:43    

Euh, quitte à lui donner du code, tu pouvais éviter de le faire aussi crade, ton $page gagnerait beaucoup à devenir $_GET['page'] et t'as jamais qu'une erreur potentielle ligne 11 :D

Reply

Marsh Posté le 10-09-2006 à 07:14:28    

D'accord pour le GET, à moins qu'il n'utilise aussi des FORMs... J'ai supposé que PHP était configuré avec register_globals=on et que error_reporting ne contenait pas E_NOTICE.
Sans ces options (largement répandues), la ligne 11 devient:

Code :
  1. if(isset($_GET['page'])) $page=$_GET['page'];
  2. else if(isset($_POST['page'])) $page=$_POST['page'];
  3. else $page='';


Message cité 1 fois
Message édité par nargy le 10-09-2006 à 07:14:58
Reply

Marsh Posté le 10-09-2006 à 10:35:13    

desolé je suis debutant en php. mon code que j'ai tapé au debut il faut bien que je le remette ? sinon si vous pouviez me mettre tout le code d'un coup ce serais sympa
merci

Reply

Marsh Posté le 10-09-2006 à 10:54:39    

:S
Le tout premier code est celui contenu dans menu.php et/ou top.php.
Le second est celui contenu dans index.php.
Le troisième corrige la ligne 11 du second.
 
Mieux vaut que tu comprenne comme ça fonctionne plutôt que de faire un copié/collé.
 
Lis la doc sur php.net sur les arrays pour comprendre le fonctionnement:
http://fr.php.net/manual/fr/language.types.array.php

Reply

Marsh Posté le 10-09-2006 à 11:16:21    

nargy a écrit :

D'accord pour le GET, à moins qu'il n'utilise aussi des FORMs... J'ai supposé que PHP était configuré avec register_globals=on et que error_reporting ne contenait pas E_NOTICE.
Sans ces options (largement répandues), la ligne 11 devient:

Code :
  1. if(isset($_GET['page'])) $page=$_GET['page'];
  2. else if(isset($_POST['page'])) $page=$_POST['page'];
  3. else $page='';



 
Qui le sont heureusement de moins en moins vu que depuis php5 le register_global est a off par defaut... Et si je ne m'abuse il sera d'ailleurs supprimé en php6.
Ensuite pour le error_reporting, effectivement c'est repandu sur des serveurs de production, mais vu le niveau de l'auteur du topic je pencherais plus pour un debutant qui cherche a comprendre ses erreurs ... Du coups effectivement il serait judicieux de lui donner un code juste, ou encore plus judicieux de lui expliquer la demarche pour qu'il y arrive tout seul


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 10-09-2006 à 12:01:40    

merci j'ai compris et j'y suis arrivé ! :)

Reply

Marsh Posté le 10-09-2006 à 12:31:34    

> Et si je ne m'abuse il sera d'ailleurs supprimé en php6.
J'espère bien que tu t'abuse :p
J'ai pas trop envie de refaire les scripts PHP3. :)

Reply

Marsh Posté le 10-09-2006 à 12:47:32    

nargy a écrit :

> Et si je ne m'abuse il sera d'ailleurs supprimé en php6.
J'espère bien que tu t'abuse :p
J'ai pas trop envie de refaire les scripts PHP3. :)


Ben il fallait t'y prendre dès le depart, car les register_globals c'est pourri

Reply

Marsh Posté le 10-09-2006 à 12:47:32   

Reply

Marsh Posté le 10-09-2006 à 13:23:20    

> les register_globals c'est pourri
ben, c'était pourtant la norme en PHP3. Les super-globales ne sont pas non plus le top: il est tentant de les utiliser dans des fonctions sans la syntaxe <<global>> qui sert d'avertissement en début de fonction.
 
Les register_globals c'est toujours très pratique, sauf cas particuliers. J'ai jamais vraiment pigé quel est l'intérêt de les supprimer. Mais peut-être y-a-t-il quelqu'un qui peut me donner une réponse?

Reply

Marsh Posté le 10-09-2006 à 13:28:03    

nargy a écrit :


Les register_globals c'est toujours très pratique, sauf cas particuliers. J'ai jamais vraiment pigé quel est l'intérêt de les supprimer. Mais peut-être y-a-t-il quelqu'un qui peut me donner une réponse?


faille de sécu sur les scripts mal conçu
genre
 

Code :
  1. <?php
  2. if ( $var ) {
  3. mysql_query("DROP DATABASE mabaseamoi" );
  4. }
  5. ?>


 
Avec register_global :  
un appel à mapage.php?var=1 supprime ta base de données
 
Sans register_global, normalement, php gueule disant que $var n'est pas initialisé. (si je me souviens bien, hein)


Message édité par zapan666 le 10-09-2006 à 13:30:56

---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 10-09-2006 à 13:38:32    

Oui merci je viens de trouver les arguments contre, en répondant à une autre question:
http://fr2.php.net/register_globals
 
Enfin, il n'y a donc pas de raison de supprimer cette option, mais d'y faire attention si on l'utilise, et de vérifier quand c'est nécessaire d'où provient la variable. Celà représente somme toute que quelques pages dans un site.

Reply

Marsh Posté le 10-09-2006 à 15:40:32    

nargy a écrit :

Oui merci je viens de trouver les arguments contre, en répondant à une autre question:
http://fr2.php.net/register_globals
 
Enfin, il n'y a donc pas de raison de supprimer cette option, mais d'y faire attention si on l'utilise, et de vérifier quand c'est nécessaire d'où provient la variable. Celà représente somme toute que quelques pages dans un site.


 
Y a pas de raison de devoir avoir un port d'arme pour se balader avec un flingue, suffi de faire gaffe avec et personne ne se feras de bobo ...
 
En meme temps vu les gens qui trainent ici et les questions posées dans PHP, je suis content qu'il y ait besoin d'un permis de port d'arme :D


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed