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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : pb lors du passage à PHP5 avec la fonction Include et GET

par zeus » 05 nov. 2008, 16:39

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 ;)

par iroise » 05 nov. 2008, 15:52

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:

par Aureusms » 05 nov. 2008, 00:55

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...

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

par iroise » 04 nov. 2008, 14:34

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.