Page 1 sur 1

pb lors du passage à PHP5 avec la fonction Include et GET

Posté : 04 nov. 2008, 14:34
par iroise
Bonjour,

Premier post sur le forum :)

Mon entreprise à changé le serveur hébergeant notre site intranet et depuis tous les liens qui étaient rédigés ainsi dans la page d'accueil : <a href = "?page = comm"> ne fonctionnent plus.
Les liens qui sont notés en dur fonctionnent.

Un fichier nommé inc.php regroupe tous les alias des pages du site sous cette forme :
if($page =="comm") {include ("include/outils/communication/communication.htm";}

Si je laisse en l'état les liens ne fonctionnent plus :cry:
Si je change la ligne en :
if($_GET["page"] =="comm") {include ("include/outils/communication/communication.htm";}
Il y a du mieux. le lien fonctionne mais, car il y a un mais, la page communication.htm s'affiche à la suite de ma page d'accueil (d'où j'appelle le lien) alors que je voudrais que la page communication.htm s'ouvre dans une autre fenêtre.

Si quelqu'un à une idée je suis preneuse.

Posté : 05 nov. 2008, 00:55
par Aureusms
utilise header : (ce sera la même fenêtre cependant)
if($_GET["page"] =="comm") {header ("Location: include/outils/communication/communication.htm");}
Pour le reste, je pense que cela vient de ton nouveau PHp qui ne prends plus en place les variables globale (je suis pas très sûr, d'autres pourront me rectifier). Aussi dans ton fichier inc.php qui regroupe tous les alias des pages du site ajoute avant tous les if();
$page = $_GET["page"];
if($page =="comm") {header ("Location: include/outils/communication/communication.htm");} 
De plus un switch est mieux adapter dans ton cas :
switch ($_GET["page"]) 
{
case "comm" : header ("Location: include/outils/communication/communication.htm"); break;
case "acce" :   header ("Location: include/outils/communication/accueil.htm"); break;
default : header ("Location: include/outils/communication/pagedefaut.htm"); break;
}
J'espère que tu comprends pourquoi : si $_GET["page"] est vide ou non trouvé (ou volontairement différent) : tu as une page par défaut...

Posté : 05 nov. 2008, 15:52
par iroise
Bonjour,

Le problème est résolu.
Tout simplement en modifiant TOUS les liens du fichiers inc.php. Je n'en avais modifié qu'un seul pour tester ce que ça donnait. Une fois tous modifiés les liens fonctionnent et les pages s'affichent dans un nouvel onglet, indépendamment de ma page d'accueil.

Merci pour l'aide Aureusms :wink:

Posté : 05 nov. 2008, 16:39
par zeus
Ton soucis viens du fait que tu profites d'une largesse de PHP : les variables globales.
Sur ton ancien serveur, dans le php.ini, tu dois avoir une ligne

Code : Tout sélectionner

register_globals= On
et que dans le php.ini de ton nouveau serveur, tu dois avoir

Code : Tout sélectionner

register_globals= Off
Si cette directive est à "On", toutes les valeurs contenues dans les tables $_GET, $_POST, $_COOKIE (et peut être même d'autres) vont être crées.
Par exemple, tu avais une variable $_GET['page'] dans ton ancien site qui entrainais automatiquent la création d'une variable $page.

La nouvelle configuration (register_globals= Off) est beaucoup plus sécurisé (avant, il suffisait de passer une variable dans l'url lors de la soumission d'un formulaire pour écraser celle transmise par le formulaire) et a peine plus lourde à gérer.

Reste maintenant à toi de parcourir tout ton code pour t'assurer que tu ne récupère jamais de variables GET ou POST de cette manière ;)