problème de définition de variable

Petit nouveau ! | 8 Messages

18 sept. 2010, 21:03

Bonjour,
Je travail sur un site en local avec easyphp, donc tout marchait très bien, puis j'ai décidé de travailler sur un autre pc, j'ai donc installer easyphp sur cet autre pc et j'ai fais un copié/collé de mon site. Et là plus rien ne marche, en fait le problème vient de la définition d'une variable. J'ai une variable link qui est défini comme tel : localhost/index.php?link=test et donc là j'inclus la page test.php dans mon index.

Voilà mon code qui se trouve au milieu de index.php
                <?php
if ($link == "acc") {
  require ('acc.php');
} 
elseif ($link == "faq") {
  require ('faq.php');
} 
elseif ($link == "reglement") {
  require ('reglement.php');
} 
elseif ($link == "commentaires") {
  require ('commentaires.php');
} 
elseif ($link == "nous") {
  require ('nous.php');
} 
elseif ($link == "verif") {
  require ('verif.php');
} 
elseif ($link == "merci") {
  require ('merci.php');
} 
else{
require ('erreur.php');
}
?>
et là dans l'explorateur plus rien ne marche il me dit "Notice: Undefined variable: link" alors que tout marchait très bien sur mon autre pc....

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 sept. 2010, 21:13

C'est une question de configuration du serveur (register global et/ou l'affichage des avertissements).

Tu peux modifier la configuration du php.ini de ton nouveau pc, mais le plus propre serait de rendre ton code compatible quelque soit la conf du serveur. Pour cela il faut préciser l'origine de la variable que tu utilises à php : si celle-ci provient de l'url utilises $_GET['link'] au lieu de $link. De même si elle a été envoyée par la méthode post d"un formulaire, il faut utiliser $_POST. De même pour $_SESSION ou $_COOKIE pour faire référence à une variable déclarée dans la session ou dans un cookie :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 8 Messages

18 sept. 2010, 21:18

Merci ça marche parfaitement.
Juste par curiosité, sans paser par GET, est-ce que tu sais ce que j'aurais dût modifier dans php.ini ?

edit : également merci pour les formulaires cookies et sessions

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 sept. 2010, 21:35

A priori c'est la directive register_globals qui doit être à off sur le nouveau pc. Elle est désacivée par défaut dans les dernière version de php pour des raison de sécurité et va même disparaitre avec php 6. Tu peux la modifier, mais il vaut mieux prendre l'habitude de préciser l'origine des valeurs que tu utilises dès maintenant ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 8 Messages

18 sept. 2010, 21:53

Oui et c'est beaucoup plus pratique,logique.
Non en fait je demandais car je trouvais ça bizarre puisqu'il ne m'avait pas semblé avoir modifié cette ligne dans le php.ini de mon autre pc, je devais avoir une version plus ancienne d'easyphp.
Merci beaucoup pour tes réponses