Liens vers include non fonctionnels

Liens vers include non fonctionnels - PHP - Programmation

Marsh Posté le 26-09-2008 à 20:22:34    

Salut à tous,
 
Après moultes recherches sans solutions, je me vois obligé de faire appel à certains experts du forum  :D  
 
voila, en fait mon problème se situe au niveau de php, plus précisement de la fontion include.
 
J'aimerais préciser pour commencer que lorsque le site est uploader sur le ftp d'hébergement, le site marche nikel, il s'agit donc d'une configuration locale.
 
Le problème se situe dans les liens que j'ai créé sur le site, le serveur apache reconnait maintenant php en tant que tel et m'affiche la page d'accueil donc aucun problème ici, le problème c'est quand je clique sur un lien pour changer de page, il refuse de m'afficher la page que je lui demande. J'ai rajouté une ligne de code dans le fichier pour testé que la variable change bien mais apparement elle ne change pas.  
 
Quelle pourrait être la solution à ce problème svp ?
 
code d'initialisation :

Code :
  1. <?
  2. $p == $null;
  3. if($p == $null) { $p = 'histoire'; }
  4. ?>


 
 
code d'inclusion :

Code :
  1. <?
  2. if($p == 'membres') {
  3.  include("membres.php" ); }
  4. elseif(file_exists("$p.htm" ))
  5. {
  6.  include("$p.htm" );
  7. }
  8. else {
  9.  include("construc.htm" );
  10.      }
  11. ?>


 
comme je l'ai dis, un <? echo "$p" ?> ne donne rien lorsque je clique sur les liens
 
code lien : <a href="?p=liens">Les liens<br>

Reply

Marsh Posté le 26-09-2008 à 20:22:34   

Reply

Marsh Posté le 26-09-2008 à 20:53:24    

normal
 
ajoute $p = $_GET['p']; et regadre un peu la doc de GET, POST et SESSION

Reply

Marsh Posté le 26-09-2008 à 21:06:56    

je vois pas pourquoi ça serait normal, pourquoi ça marcherait quand je met le même site sur le ftp et lorsque je teste en local ça marche pas ... ça ne devrait pas poser de problème pourtant.... à moins que la version d'Apache soit différente mais je pense pas que les syntaxes changent en cours de version .... s'il fallait re-éditer tout un site à chaque nouvelle version du serveur....  :heink:  
 
pareil ailleurs en ajoutant cette ligne ça marche, je t'en remercie ;-)


Message édité par razpet le 26-09-2008 à 21:10:52
Reply

Marsh Posté le 26-09-2008 à 21:22:32    

parceque en local , ton serveur est configuré avec register_globals a on, ce qui est un risque  
 

Reply

Marsh Posté le 26-09-2008 à 21:38:38    

ahhh c'est bon :)  
 
Ben en fait en local c'était sur register_globals=Off justement alors que sur le ftp c'était sur On, maintenant tout marche bien :)
 
Maintenant tu me dis que c'est un risque, les commentaires au dessus de cette variables disent que c'est la même chose si le code n'est pas bien pensé. Est ce qu'il serait possible d'avoir quelques précisions stp ? quels risques ça entraine ? Ca a toujours été comme ça chez moi et chez free aussi apparement...
 
Merci de ton aide en tout cas, je vais me pencher sur cette la doc concernant GET, POST & SESSION, si ya un risque majeur, il faudra revoir le code source :(

Reply

Marsh Posté le 28-09-2008 à 13:41:15    

En fait, si tu n'initialise pas tes variables, tu risque qu'elles soient écrasées :
 

Code :
  1. <?php
  2. if($user === 'admin' && $password === 'admin') {
  3.     $admin = true;
  4. }
  5.  
  6. if($admin) {
  7.     echo 'Protege !';
  8. }
  9. ?>


 
Ici, register_globals est activé.
$user et $password sont entrés par l'utilisateur.
$admin est un boolean qui vaut true si les paramètres d'authentification sont OK.
Or, la page est appelée ainsi :

Code :
  1. page.php?admin=1


L'élément $_GET['admin'] sera copié dans $admin qui vaudra true dans tous les cas.
 
Pour remédier au problème :
 

Code :
  1. <?php
  2. $admin = false;
  3.  
  4. if($user === 'admin' && $password === 'admin') {
  5.     $admin = true;
  6. }
  7.  
  8. if($admin === true) {
  9.     echo 'Protege !';
  10. }
  11. ?>


 
Alors, au début du script, la valeur est initialisée (false).
 
Mais je te conseille fortement de désactiver cette directive. Je crois qu'elle est dépreciée sous PHP 6 et en tout cas n'est plus activée par défaut depuis PHP 4.2.0

Reply

Sujets relatifs:

Leave a Replay

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