Page 1 sur 1

Passer des variables _GET de page en page

Posté : 03 févr. 2007, 20:08
par iptima
Bonjour,

Comment faire passer des variables _GET de page en page ? Est-ce seulement possible ? Selon quelle syntaxe ?

Certes, les lecteurs avisés de ce forum me conseilleront de recourir aux sessions.

En fait, pour préciser mon projet, je travaille à la conception d'un site consacré à des calculs. Dès la page d'accueil, le visiteur saisit ses paramètres et le résultat est envoyé à une deuxième page, sauf si la saisie comporte des erreurs (une page d'erreur s'affiche alors).

Je souhaiterai (essayer de) gagner quelques sous grâce à Google AdSense, et Google indique que les pages doivent être transmises grâce à la méthode _GET...

Pour l'heure, j'ai créé un formulaire dont la cible est _GET : je transforme mes données en variables de session, mais je ne sais si cette option fonctionne avec le programme AdSense.

A ce propos, si l'un des honorables contributeurs de PhpFrance a déjà utilisé Adsense en utilisant des formulaires, j'écouterais volontier ses conseils.

Merci de votre aide.

Cordialement,

I.

Posté : 03 févr. 2007, 20:21
par albat
principe général :

page 1 :
<a href="page2.php?id=123456">cliquer ici</a>
page 2 :
$id_recu = $_GET['id'];
echo $id_recu;
Et ça affiche : 123456

Miracle ! =D>

Posté : 03 févr. 2007, 22:12
par AB
Bonsoir,

Une petite précision sur le message d'Albat.
La plupart des hébergeurs travaillent maintenant avec register_globals = off, qui est le réglage par défaut des configurations récentes php, cela pour encourager les dévellopeurs à vérifier leur variables, pour renforcer la sécurité des scripts.
Donc avec ces réglages par défaut
$id_recu = $_GET['id'];
va renvoyer un message d'erreur car $_GET['id'] n'a pas été vérifié.

Une méthode qui marche mais n'apporte aucune sécurité serait :
$id_recu = isset($_GET['id'])? $_GET['id'] :0;
La variable id_recu = si la variable $_GET['id'] est définie, $id_recu = $_GET['id'] sinon $id_recu = 0. 0 étant la valeur par défaut que j'ai choisie pour l'exemple mais on peux la remplacer par n'importe quoi

Maintenant si tu attends une valeur numérique dans $_GET['id'], la méthode qui va sécurisé le script sera
$id_recu = (isset($_GET['id']) && is_numeric($_GET['id']))? $_GET['id'] :0;
La variable id_recu = si la variable $_GET['id'] est définie et qu'elle est de type numérique, $id_recu = $_GET['id'] sinon $id_recu = 0.

Cela permet d'éviter à un utilisateur pirate de passer n'importe quoi dans l'url. Dans cet exemple toute valeur non numérique de $_GET['id'] sera convertie à la valeur par défaut.

Posté : 04 févr. 2007, 00:59
par maïa
ne peut on pas écrire
@$_GET["id"];

Posté : 04 févr. 2007, 05:09
par AB
Bonjour,
ne peut on pas écrire
@$_GET["id"];
Bien sûr on peut utiliser l'opérateur de suppression des erreurs @ mais outre qu'il n'y a aucune vérification de la variable (niveau sécurité=0 si la variable est sensible pour la sécurité du script), on n'indique pas de valeur par défaut pour la variable si celle-ci n'est pas définie. Et définir une valeur par défaut est l'abc d'une bonne programmation. A n'utiliser que dans des cas particuliers avec précaution mais on ne peux pas conseiller cette méthode d'une manière générale.

Posté : 04 févr. 2007, 05:42
par Ajoloca
Bonjour,
ne peut on pas écrire
@$_GET["id"];
Hormis le fait qu'une erreur ne doit jamais être masquée (sauf pour celles qui passent outre la gestion de PHP) mais corrigée, l'opérateur "@" est le plus grand consommateur de ressources existent en PHP.

Donc à éviter comme la peste!

@ :tir2:

Posté : 04 févr. 2007, 11:31
par albat
C'est pour ça que je n'en mets jamais dans mes adresses e-mail ! Image

Posté : 04 févr. 2007, 11:35
par iptima
Merci pour vos réponses !

Cordialement,

I.